<?php
include '../conexion.php';


//header('Content-Type: application/json'); // Para asegurarte de que devuelves un JSON
//$response = array();

function actualizarInv($connection,$uni,$b,$s){
    $inv='inv'.$s;
    
            //comparar si es nuevo para cambiarlo a usado
            $stmtedo = $connection->prepare("SELECT * FROM datos_uniformes WHERE iduniforme=?");
            $stmtedo->bind_param("i", $uni);
            $stmtedo->execute();
            $resultedo = $stmtedo->get_result();

            while ($rowedo = $resultedo->fetch_assoc()) {
                $descripcion=$rowedo['u_descripcion'];
                $medida=$rowedo['medida'];
                $estado=$rowedo['idestadoUni'];
            }    

            if($estado=='1'){
                $stmtup = $connection->prepare("SELECT * FROM datos_uniformes WHERE u_descripcion=? and medida=? and idestadoUni='2'");
                $stmtup->bind_param("si", $descripcion,$medida);
                $stmtup->execute();
                $resultup = $stmtup->get_result();

                while ($rowup = $resultup->fetch_assoc()) {
                    $iduni=$rowup['iduniforme'];
                    $existencia=$rowup[$inv];
                    $total=$existencia+$b;
                }
                
                $stmtupdate = $connection->prepare("update uni_uniforme set $inv=? where iduniforme=?");
                $stmtupdate->bind_param("ii", $total,$iduni);
                $stmtupdate->execute();
                $resultupdate = $stmtupdate->get_result();

            }else if($estado='2'){
                $stmtup = $connection->prepare("SELECT * FROM datos_uniformes WHERE iduniforme=?");
                $stmtup->bind_param("i", $uni);
                $stmtup->execute();
                $resultup = $stmtup->get_result();

                while ($rowup = $resultup->fetch_assoc()) {
                    $existencia=$rowinv[$inv];
                    $total=$existencia+$b;
                }
                
                $stmtupdate = $connection->prepare("update uni_uniforme set $inv=? where iduniforme=?");
                $stmtupdate->bind_param("ii", $total,$uni);
                $stmtupdate->execute();
                $resultupdate = $stmtupdate->get_result();
            }

}


    // Verificar que la solicitud sea POST
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        throw new Exception('Método no permitido.');
    }

    // Recibir los datos enviados
    $empleado = isset($_POST['empleado']) ? trim($_POST['empleado']) : null;
    $fecha = isset($_POST['fecha']) ? trim($_POST['fecha']) : null;
    $idmov=isset($_POST['movimiento']) ? trim($_POST['movimiento']) : null;
    $datosTabla = isset($_POST['datosTabla']) ? json_decode($_POST['datosTabla'], true) : [];
    $sucursal=isset($_POST['sucursal']) ? trim($_POST['sucursal']) : null;

    
    // Validar que datosTabla sea un array
    if (!is_array($datosTabla)) {
        throw new Exception('Formato incorrecto en los datos de la tabla.');
    }

    // Aquí puedes agregar lógica para guardar los datos en la base de datos
    // Ejemplo de conexión a la base de datos
    

    if ($connection->connect_error) {
        throw new Exception('Error al conectar a la base de datos: ' . $connection->connect_error);
    }

    // Iniciar una transacción
    $connection->begin_transaction();

    try {


       
        // Insertar los datos de la tabla dinámica
        $stmtDetalle = $connection->prepare("update uni_detmovimiento set dev='1',fechaDev=?,buen=?, mal=? where uni_movimientos_idmovimientosUni=? and uni_uniforme_iduniforme=?");
        
        foreach ($datosTabla as $fila) {
            // Suponiendo que cada fila tiene campos 'campo1', 'campo2' y 'campo3'
            
            $uniforme = isset($fila['idw[]']) ? $fila['idw[]'] : null;
            $cantidad = isset($fila['cantidadw[]']) ? $fila['cantidadw[]'] : null;
            $buen = isset($fila['cantdev[]']) ? $fila['cantdev[]'] : null;
            $mal = isset($fila['cantbas[]']) ? $fila['cantbas[]'] : null;


            if (!$uniforme ) {
                throw new Exception('Los campos de la tabla no pueden estar vacíos.');
            }
            
            //actualizarInv($connection,$uniforme,$buen,$sucursal);

            $inv='inv'.$sucursal;
    
            //comparar si es nuevo para cambiarlo a usado
            $stmtedo = $connection->prepare("SELECT * FROM datos_uniformes WHERE iduniforme=?");
            $stmtedo->bind_param("i", $uniforme);
            $stmtedo->execute();
            $resultedo = $stmtedo->get_result();

            while ($rowedo = $resultedo->fetch_assoc()) {
                $descripcion=$rowedo['u_descripcion'];
                $medida=$rowedo['medida'];
                $estado=$rowedo['idestadoUni'];
            }    

            if($estado=='1'){
                $stmtup = $connection->prepare("SELECT * FROM datos_uniformes WHERE u_descripcion=? and medida=? and idestadoUni='2'");
                

                $stmtup->bind_param("ss", $descripcion,$medida);
                $stmtup->execute();
                $resultup = $stmtup->get_result();

                while ($rowup = $resultup->fetch_assoc()) {
                    $iduni=$rowup['iduniforme'];
                    $existencia=$rowup[$inv];
                    $total=$existencia+$buen;
                }
                
                $stmtupdate = $connection->prepare("update uni_uniforme set ".$inv."=? where iduniforme=?");
                $stmtupdate->bind_param("ii", $total,$iduni);
                $stmtupdate->execute();
                $resultupdate = $stmtupdate->get_result();

            }else if($estado='2'){
                $stmtup = $connection->prepare("SELECT * FROM datos_uniformes WHERE iduniforme='?'");
                $stmtup->bind_param("i", $uniforme);
                $stmtup->execute();
                $resultup = $stmtup->get_result();

                while ($rowup = $resultup->fetch_assoc()) {
                    $existencia=$rowinv[$inv];
                    $total=$existencia+$buen;
                }
                
                $stmtupdate = $connection->prepare("update uni_uniforme set ".$inv."='?' where iduniforme='?'");
                $stmtupdate->bind_param("ii", $total,$uniforme);
                $stmtupdate->execute();
                $resultupdate = $stmtupdate->get_result();
            }

            $stmtDetalle->bind_param("siiii", $fecha, $buen, $mal,$idmov,$uniforme);
            $stmtDetalle->execute();

        }
        $stmtDetalle->close();

        // Confirmar la transacción
        $connection->commit();
        $response['success'] = true;
        //$response['id'] = $ultimoId;
    } catch (Exception $e) {
        // Revertir la transacción en caso de error
        $connection->rollback();
        throw $e;
    } finally {
        $connection->close();
    }


// Devolver la respuesta como JSON
http_response_code($response['success'] ? 200 : 400);
echo json_encode($response);
?>