<?php


require("./connect.php");

include('../../vendor/funciones.php');
include('../../vendor/DBA.php');
include('../../vendor/EncryptClass.php');
include('../../vendor/Security.php');

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // Verifica si se han enviado datos en el cuerpo de la solicitud
    $input = file_get_contents('php://input');
    $datapost = json_decode($input, true);

    // Verifica si los datos se han decodificado correctamente
    if ($datapost !== null) {
        $sucursal = $datapost['sucursal'];
        $tipo = $datapost['tipo'];


        $tokenID = getCode();
        $myencrypt = new EncryptClass();
        $sql = "SELECT * FROM `cat_sucursal` where clave = '$sucursal'";
        $resultset1 = mysqli_query($conn, $sql);
        $data = array();
        while ($rows = mysqli_fetch_assoc($resultset1)) {
            $data[] = $rows;
        }
        $pedidoFechaUltimoCorte = '';
        $pedidoFechaUltimoCorteNormal = '';
        $sPedidoFechaUltimoCorteNormal = '';
        function obtenerUltimoCorte($connSuc)
        {
            global $pedidoFechaUltimoCorte, $pedidoFechaUltimoCorteNormal, $sPedidoFechaUltimoCorteNormal;

            $shortDateFormat = 'Ymd';
            $shortTimeFormat = 'H:i:s';
            $hoy = date('Y-m-d');
            $hora = date('H:i:s');

            // Obtengo el último corte final que se realizó
            $sqlcorte = "SELECT * FROM corte WHERE status='1' ORDER BY fecha DESC, hora DESC LIMIT 1";
            $resultsetcorte = mysqli_query($connSuc, $sqlcorte);
            $dataCorte = array();
            while ($rows = mysqli_fetch_assoc($resultsetcorte)) {
                $dataCorte[] = $rows;
            }
            if ($dataCorte != null) { // Si existe corte anterior
                $sHoraFiltro = date('H:i:s', strtotime($dataCorte[0]['hora']));
                $pedidoFechaUltimoCorte = $dataCorte[0]['fecha'] . ' ' . $sHoraFiltro;

                $shortDateFormat = 'd/m/Y';
                $pedidoFechaUltimoCorteNormal = $dataCorte[0]['fecha'];
                $sPedidoFechaUltimoCorteNormal = $dataCorte[0]['fecha'] . ' ' . $dataCorte[0]['hora'];
            } else { // No existe corte anterior
                // Obtengo la primera venta registrada para tomar el filtro desde ahí
                $sqlcorte = "SELECT * FROM pedido ORDER BY fechaCreacion ASC, horaAbierto ASC LIMIT 1";
                $resultsetcorte = mysqli_query($connSuc, $sqlcorte);
                $dataCorte = array();
                while ($rows = mysqli_fetch_assoc($resultsetcorte)) {
                    $dataCorte[] = $rows;
                }
                if ($dataCorte != null) {
                    $sHoraFiltro = date('H:i:s', strtotime($dataCorte[0]['horaAbierto']));
                    $pedidoFechaUltimoCorte = $dataCorte[0]['fechaCreacion'] . ' ' . $sHoraFiltro;
                    $shortDateFormat = 'd/m/Y';
                    $pedidoFechaUltimoCorteNormal = $dataCorte[0]['fechaCreacion'];
                    $sPedidoFechaUltimoCorteNormal = $dataCorte[0]['fechaCreacion'] . ' ' . $dataCorte[0]['horaAbierto'];
                } else { // No hay ventas registradas, ponemos la fecha de hoy
                    $sHoraFiltro = date('H:i:s', $hora);
                    $pedidoFechaUltimoCorte = date('Y-m-d', $hoy) . ' ' . $sHoraFiltro;
                    $shortDateFormat = 'd/m/Y';
                    $pedidoFechaUltimoCorteNormal = $hoy;
                    $sPedidoFechaUltimoCorteNormal = date('Y-m-d', $hoy) . ' ' . date('H:i:s', $hora);
                }
            }
            $shortDateFormat = 'Y/m/d';
        }









        if ($data != null) {
            $data[0]["bdName"] = $myencrypt->desencripta($data[0]["bdName"], $tokenID, "blowfish");
            $data[0]["bdPassword"] = $myencrypt->desencripta($data[0]["pwd_local"], $tokenID, "blowfish");
            $data[0]["hostName"] = $myencrypt->desencripta($data[0]["host_local"], $tokenID, "blowfish");
            $data[0]["bdUserName"] = $myencrypt->desencripta($data[0]["usuaro_local"], $tokenID, "blowfish");
            //se crea una conexion nueva con los datos de la sucursal














         //   $servername = $data[0]["hostName"];
         //   $username = $data[0]["bdUserName"];
         //   $password =  $data[0]["bdPassword"];


          //  $dbname = $data[0]["bdName"];

            //$servername = '127.0.0.1';/*$data[0]["hostName"];*/
            //$username = 'root'; /*$data[0]["bdUserName"];*/
          //  $password = '';/* $data[0]["bdPassword"];*/
            //   $dbname = 'kapital_vt_nueva';





            $servername = $data[0]["hostName"];
            $username = $data[0]["bdUserName"];
            $password =  $data[0]["bdPassword"];

            $dbname = $data[0]["bdName"];



            $connSuc = mysqli_connect($servername, $username, $password, $dbname);
            if (!$conn) {
                $data = array("error" => "1");
                echo json_encode($data);
                return;
            } else {
                switch ($tipo) {
                    case 'meseros':
                        $sql = "SELECT * FROM `mesero`  where mesero=1 ";
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }
                        echo json_encode($data);
                        break;
                    case 'mesasDesocupadas':
                        $sql = "SELECT * FROM `mesa` where `pedidoActivo`= '' and `status` =''";
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }
                        echo json_encode($data);
                        break;


                    case 'OpenNewCount':
                        $shortDateFormat = 'Y/m/d';
                        $longTimeFormat = 'H:i:s';
                        $hora = time();

                        // Consulto la hora del servidor de MySQL para que cada pedido sea regido por la hora del servidor al momento de su creación


                        $sqlcorte = "SELECT * from corte where status='1' order by fecha desc, hora desc limit 1;";


                        $resultsetcorte = mysqli_query($connSuc, $sqlcorte);

                        $dataCorte = array();
                        while ($rows = mysqli_fetch_assoc($resultsetcorte)) {
                            $dataCorte[] = $rows;
                        }



                        $sqlDataformat = "SELECT DATE_FORMAT(NOW(), '%Y/%m/%d') AS fecha,DATE_FORMAT(NOW(), '%H') AS hora,DATE_FORMAT(NOW(), '%i') AS minuto,DATE_FORMAT(NOW(), '%s') AS segundo";
                        $resultsetDataformat = mysqli_query($connSuc, $sqlDataformat);

                        $dataDataformat = array();
                        while ($rows = mysqli_fetch_assoc($resultsetDataformat)) {
                            $dataDataformat[] = $rows;
                        }





                        $sH = $dataDataformat[0]['hora'];
                        $sMinuto = $dataDataformat[0]['minuto'];
                        $sSegundo = $dataDataformat[0]['segundo'];

                        $sHora = $sH . ':' . $sMinuto . ':' . $sSegundo;
                        $hoy =  $dataDataformat[0]['fecha'];

                        // Obtener el último corte (función obtenerUltimoCorte)
                        obtenerUltimoCorte($connSuc);




                        $sqlcorte = "SELECT p.idPedido as idPedido,p.fechaCreacion AS fecha,p.horaAbierto hora FROM pedido p WHERE p.idPedido=(SELECT MAX(pe.idPedido) idPedido FROM pedido pe WHERE (DATE_FORMAT(CONCAT(pe.fechaCreacion, ' ', pe.horaAbierto), '%Y%m%d %H:%i:%s') >= '$pedidoFechaUltimoCorte') AND pe.tipo='domicilio'   AND pe.status<> 'cancelado' )";




                        $resultsetcorte = mysqli_query($connSuc, $sqlcorte);

                        $dataCorte = array();
                        while ($rows = mysqli_fetch_assoc($resultsetcorte)) {
                            $dataCorte[] = $rows;
                        }



                        $shortDateFormat = 'Y/m/d';
                        $longTimeFormat = 'H:i:s';

                        $sFecha = $hoy;
                        $sFecha2 = $dataCorte[0]['fecha'];
                        $sHora2 = $dataCorte[0]['hora'];

                        if ($hoy < $dataCorte[0]['fecha']) {
                            echo 'La Fecha es Menor a la de la última Cuenta.';
                            exit;
                        }

                        if ($sFecha == $sFecha2 && $sHora2 > $sHora) {
                            echo 'La hora es Menor a la de la última Cuenta.';
                            exit;
                        }
                        $nombreUsuarioGlobal = "app";

                        $tipo = $datapost['tipo'];

                        $tipoCuenta = $datapost['tipoCuenta'];
                        $mesero = $datapost['mesero'];
                        $mesa = $datapost['mesa'];
                        $numeroPersonas = $datapost['personas'];

                        $sHoraFiltro = "t";








                        //  echo $pedidoFechaUltimoCorte . " ";
                        //  echo $hoy;
                        //echo $sHora . " ";



                        $vowels = array("-", "-", "-");
                        $hoyUtilizar = str_replace($vowels, "/", $hoy);

                        $pedidoFechaUltimoCorte = str_replace($vowels, "", $pedidoFechaUltimoCorte);



                        $sql = "SELECT inserta_pedido('$pedidoFechaUltimoCorte','$tipoCuenta','$hoyUtilizar', '$sHora', 'abierto','$nombreUsuarioGlobal') as numero";
                        $resultsetnuevaCuenta = mysqli_query($connSuc, $sql);
                        $dataCuenta = array();
                        while ($rows = mysqli_fetch_assoc($resultsetnuevaCuenta)) {
                            $dataCuenta[] = $rows;
                        }

                        $numeroCuenta = $dataCuenta[0]["numero"];

                        $sql = "SELECT * FROM pedido where numero='$numeroCuenta'";
                        $resultsetnuevaCuenta = mysqli_query($connSuc, $sql);
                        $dataCuentadatos = array();
                        while ($rows = mysqli_fetch_assoc($resultsetnuevaCuenta)) {
                            $dataCuentadatos[] = $rows;
                        }
                        $iIDPedidoActivo = $dataCuentadatos[0]['idPedido'];

                        if ($tipoCuenta == "3") {
                            $sql = "UPDATE pedido SET clienteLlevar='$numeroPersonas', mesero=(SELECT nombre FROM mesero WHERE idMesero ='$mesero' ) WHERE idPedido='$iIDPedidoActivo' ";
                            $resultsetnuevaCuenta = mysqli_query($connSuc, $sql);


                            $sql = "SELECT concat(pedido.clienteLlevar,IF(pedido.tipo='mesa', (select nombreMesa from pedido_mesa where pedido_mesa.idPedido = pedido.idPedido),'')) label,pedido.idPedido value, pedido.* FROM pedido where  idPedido='$iIDPedidoActivo'";
                            $resultsetMESA = mysqli_query($connSuc, $sql);
                            $dataMesa = array();
                            while ($rows = mysqli_fetch_assoc($resultsetMESA)) {
                                $dataMesa[] = $rows;
                            }

                            echo json_encode($dataMesa[0]);

                            exit;
                        }
                        // echo json_encode($dataCuenta);
                        //exit;



                        $sql = "UPDATE pedido SET numeroPersonas='$numeroPersonas', mesero=(SELECT nombre FROM mesero WHERE idMesero ='$mesero' ) WHERE idPedido='$iIDPedidoActivo' ";
                        $resultsetnuevaCuenta = mysqli_query($connSuc, $sql);

                        $sql = "SELECT * from mesa where idMesa='$mesa'";
                        $resultsetMESA = mysqli_query($connSuc, $sql);
                        $dataMesa = array();
                        while ($rows = mysqli_fetch_assoc($resultsetMESA)) {
                            $dataMesa[] = $rows;
                        }
                        $numeromesa = $dataMesa[0]["numero"];
                        $caption = $dataMesa[0]["caption"];

                        $sql = " UPDATE mesa set status='ocupada',pedidoActivo='$numeroCuenta' where idMesa='$mesa';";
                        $resultsetnuevaCuenta = mysqli_query($connSuc, $sql);





                        $sql = "INSERT INTO pedido_mesa (idPedido,pedido,idMesa,numeroMesa,nombreMesa) VALUES ('$iIDPedidoActivo','$numeroCuenta','$mesa','$numeromesa','$caption')";
                        $resultsetMESA = mysqli_query($connSuc, $sql);




                        $sql = "SELECT concat(pedido.clienteLlevar,IF(pedido.tipo='mesa', (select nombreMesa from pedido_mesa where pedido_mesa.idPedido = pedido.idPedido),'')) label,pedido.idPedido value, pedido.* FROM pedido where  idPedido='$iIDPedidoActivo'";
                        $resultsetMESA = mysqli_query($connSuc, $sql);
                        $dataMesa = array();
                        while ($rows = mysqli_fetch_assoc($resultsetMESA)) {
                            $dataMesa[] = $rows;
                        }




                        echo json_encode($dataMesa[0]);
                        /*


                        $sqlCorte = "SELECT * from corte where status='1' order by fecha desc, hora desc limit 1;";


                        $resultset1 = mysqli_query($connSuc, $sqlCorte);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }






                        // DateTimeToString(sHoraFiltro,'t',DM.qryDM1.fieldbyname('hora').AsDateTime);
                        $sHoraFiltro =  $data[0]["hora"];

                        $pedidoFechaUltimoCorte = $data[0]["fecha"] . ' ' . $sHoraFiltro;

                        echo $pedidoFechaUltimoCorte;
                            */



                        /*  $sql = "SELECT inserta_pedido('+QuotedStr(pedidoFechaUltimoCorte)+', '+QuotedStr('2')+','+
                        QuotedStr(DateToStr(hoy))+', '+QuotedStr(sHora)+', '+QuotedStr('pendiente')+' ,'+
                        QuotedStr(nombreUsuarioGlobal)+') as numero";*/






                        break;
                    case 'categorias':
                        $sql = 'SELECT * FROM `categoria` order by nombre';
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }
                        echo json_encode($data);

                        break;
                    case 'platillos':
                        $sql = 'SELECT * FROM `platillo` order by nombre';
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }
                        echo json_encode($data);
                        break;
                    case 'meseros':
                        $sql = 'SELECT * FROM `mesero` where mesero =1 order by nombre';
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);

                        $data = array();
                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $data[] = $rows;
                        }
                        echo json_encode($data);
                        break;
                    case 'cuentasAbiertas':
                        $sql = 'SELECT CONCAT(pedido.clienteLlevar, IF(pedido.tipo="mesa", (SELECT nombreMesa FROM pedido_mesa WHERE pedido_mesa.idPedido = pedido.idPedido), "")) label, pedido.idPedido value, pedido.* FROM `pedido` WHERE status = "abierto" AND liquidado = 0;';
                        $tildes = $connSuc->query("SET NAMES 'utf8'");
                        $resultset1 = mysqli_query($connSuc, $sql);
                        $ids = "";
                        $dataCuetas = array();

                        while ($rows = mysqli_fetch_assoc($resultset1)) {
                            $dataCuetas[] = $rows;
                            $ids .= $rows['value'] . ",";
                        }

                        $ids = rtrim($ids, ",");

                        $sql = "SELECT * FROM `pedido_detalle` WHERE idPedido IN ($ids)";
                        $resultsetPlatillos = mysqli_query($connSuc, $sql);
                        $dataPlatillos = array();

                        while ($rows = mysqli_fetch_assoc($resultsetPlatillos)) {
                            $idPedido = $rows['idPedido'];

                            if (!isset($dataPlatillos[$idPedido])) {
                                $dataPlatillos[$idPedido] = array();
                            }

                            $dataPlatillos[$idPedido][] = $rows;
                        }

                        // Convertir a JSON
                        // $jsonDataPlatillos = json_encode($dataPlatillos);

                        // Imprimir o devolver el resultado
                        // echo $jsonDataPlatillos;
                        // echo json_encode($dataPlatillos);

                        // Agregar información de los detalles a cada pedido en $dataCuetas
                        foreach ($dataCuetas as &$pedido) {
                            $idPedido = $pedido['value'];
                            if (isset($dataPlatillos[$idPedido])) {
                                $pedido['detalles'] = $dataPlatillos[$idPedido];
                            } else {
                                $pedido['detalles'] = array(); // Si no hay detalles, asignar un array vacío
                            }
                        }
                        echo json_encode($dataCuetas);




                        break;
                    case 'ingresarPedido_detalle':




                        $platillos = $datapost['platillos'];

                        $a = [];
                        foreach ($platillos as $platillo) {

                            for ($i = 1; $i <= intval($platillo['cantidad']); $i++) {




                                $stmt = $connSuc->prepare("INSERT INTO `pedido_detalle` (
                                    `idPedido`, 
                                    `pedido`, 
                                    `idPlatillo`, 
                                    `nombrePlatillo`, 
                                    `cantidad`, 
                                    `precio`, 
                                    `idCategoria`,
                                     `nombreCategoria`,
                                      `costo`, `clave`,
                                       `platillo_promocion`, 
                                    `status`, `cantados`,
                                     `impresos`, 
                                     `platilloBase`,
                                      `separador`, 
                                      `observacion`, 
                                    `idPromocion`, 
                                    `enviadoServicio`,
                                    `app`
                                ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)");

                                $stmt->bind_param(
                                    "ssssssssssssssssssss",
                                    $platillo['idPedido'],
                                    $platillo['idPedido'],
                                    $platillo['idPlatillo'],
                                    $platillo['nombrePlatillo'],
                                    $platillo['app'],
                                    $platillo['precio'],
                                    $platillo['idCategoria'],
                                    $platillo['nombreCategoria'],
                                    $platillo['costo'],
                                    $platillo['clave'],
                                    $platillo['platillo_promocion'],
                                    $platillo['status'],
                                    $platillo['cantados'],
                                    $platillo['impresos'],
                                    $platillo['platilloBase'],
                                    $platillo['separador'],
                                    $platillo['observacion'],
                                    $platillo['idPromocion'],
                                    $platillo['enviadoServicio'],
                                    $platillo['app']
                                );

                                $idp = $platillo['idPedido'];
                                $tildes = $connSuc->query("SET NAMES 'utf8'");
                                // Ejecuta la consulta
                                $stmt->execute();
                                $id = $connSuc->insert_id;
                                $observacionint = "0" ;

                                if ($platillo['opeserbacion'] != "") {
                                    $orden_obcerbacion = $platillo["tipoObservacion"];
                                    $agrupado = '0';
                                     $observacionint ="1";
                                    if ($platillo["tipoObservacion"] == 'orden') {
                                        $orden_obcerbacion = "1";
                                        $agrupado = "1";
                                    }

                                    $vacio = "";
                                    $textoLibre = "     " . $platillo['opeserbacion'] . "¬";
                                    $stmt = $connSuc->prepare("INSERT INTO `observacion_detalle`( `idPedidoDetalle`, 
                                    `idObservacion`, `txt`, `idPlatillo`, `numeroPlatillo`, `idPedido`, `textoLibre`, `status`, 
                                    `observacionAgrupada`, `enviadoServicio`, `agregable`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

                                    $stmt->bind_param(
                                        "sssssssssss",
                                        $id,
                                        $platillo['idPromocion'],
                                        $vacio,
                                        $platillo['idPlatillo'],
                                        $orden_obcerbacion,
                                        $platillo['idPedido'],
                                        $textoLibre,
                                        $vacio,
                                        $agrupado,
                                        $platillo['idPromocion'],
                                        $platillo['idPromocion']

                                    );
                                    $tildes = $connSuc->query("SET NAMES 'utf8'");
                                    // Ejecuta la consulta
                                    $stmt->execute();
                                }








                                $stmt1 = $connSuc->prepare(
                                    "INSERT INTO `platillo_detalle`(
                                    `numeroPlatillo`, 
                                    `status`, 
                                    `idPedidoDetalle`, 
                                    `numeroPersona`, 
                                    `observacion`, 
                                    `idPlatillo`, 
                                    `observacionAgrupada`, 
                                    `enviadoServicio`) 
                                    VALUES (?,?,?,?,?,?,?,?)"
                                );
                                $stmt1->bind_param(
                                    "ssssssss",
                                    $platillo['app'],
                                    $platillo['idPromocion'],
                                    $id,
                                    $platillo['idPromocion'],
                                    $observacionint,
                                    $platillo['idPlatillo'],
                                    $platillo['idPromocion'],
                                    $platillo['idPromocion']

                                );


                                if ($stmt1->execute()) {
                                    echo "La consulta se ejecutó correctamente.";
                                } else {
                                    // Muestra información detallada sobre el error
                                    echo "Error en la ejecución de la consulta: " . $stmt1->error;
                                }
                            }
                        }




                        $response = array(
                            'success' => true,
                            'message' => $a,
                            'platillos' => 'si'
                        );
                        header('Content-Type: application/json');
                        echo json_encode($response);


                        break;
                }
            }
        } else {
            $data = array("SinSucursal" => "1");
            echo json_encode($data);
        }
    } else {
        // Error en la decodificación JSON
        $response = array(
            'success' => false,
            'message' => 'Error al decodificar los datos JSON.'
        );

        // Devuelve la respuesta como JSON
        header('Content-Type: application/json');
        echo json_encode($response);
    }
} else {
    // La solicitud no es de tipo POST
    $response = array(
        'success' => false,
        'message' => 'La solicitud debe ser de tipo POST.'
    );

    // Devuelve la respuesta como JSON
    header('Content-Type: application/json');
    echo json_encode($response);
}
