const urlLocales = 'json/simulator/getLocales.php';
const urlDeliverysLibres = 'json/simulator/getDeliveryList.php';
const urlDeliverysOcupados = 'json/simulator/getBusyDeliveryList.php';
const urlPendingPedidos = 'json/simulator/getPendingPedidos.php';


const direcciones = [
    {
        calle: "Calle 2",
        numero: 1234,
        esquina: "Rambla República del Perú",
        latitud: -34.902345,
        longitud: -56.150678
    },
    {
        calle: "Calle 11",
        numero: 5678,
        esquina: "Av. Italia",
        latitud: -34.901234,
        longitud: -56.151234
    },
    {
        calle: "Calle 20",
        numero: 91011,
        esquina: "Av. Rivera",
        latitud: -34.903456,
        longitud: -56.152345
    },
    {
        calle: "Calle 27",
        numero: 1213,
        esquina: "Av. Dr. Luis Alberto de Herrera",
        latitud: -34.902345,
        longitud: -56.152345
    },
    {
        calle: "Calle 34",
        numero: 1415,
        esquina: "Av. Italia",
        latitud: -34.901234,
        longitud: -56.153456
    }
];

const telefonos = ["091111111", "092222222", "093333333", "094444444", "095555555"];
const ffpago = ["PAGO", "TARJETA", "EFECTIVO", "PAGO", "EFECTIVO"];
let clientes = ["Freddie Mercury", "David Bowie", "Mick Jagger", "Eric Clapton", "Jimmy Page"];

async function obtenerNombresLocales(url) {
    const response = await fetch(url); // Realizar solicitud HTTP para obtener el JSON
    const data = await response.json(); // Analizar el JSON

    const nombresLocales = [];

    // Recorrer el array "content" del JSON y extraer los nombres de local y sus IDs correspondientes
    for (let local of data.content) {
        const nombreLocal = local.nombre;
        const idLocal = local.id_local;
        nombresLocales.push({nombre: nombreLocal, id: idLocal});
    }

    return nombresLocales; // Devolver array con los nombres de local y sus IDs correspondientes
}
function cargarLocales() {
    obtenerNombresLocales(urlLocales)
            .then(nombresLocales => {
                console.log(nombresLocales); // [{nombre: 'Malvin', id: 1}, {nombre: 'Pocitos', id: 2}, {nombre: 'Carrasco', id: 3}, {nombre: 'Avda. Americas', id: 4}, {nombre: 'Centro', id: 5}, {nombre: 'Prado', id: 6}]
                for (i = 0; i < nombresLocales.length; i++) {
                    $("#enroll_locales").append('<input type="radio" name="enroll_local" id="enroll_local_' + nombresLocales[i]['id'] + '" value="'+nombresLocales[i]['id']+'" aria-label="Radio button for following text input"> ' + nombresLocales[i]['nombre'] + "<br>");
                    $("#pedido_locales").append('<input type="radio" name="enroll_local" id="pedido_local_' + nombresLocales[i]['id'] + '" value="'+nombresLocales[i]['id']+'" aria-label="Radio button for following text input"> ' + nombresLocales[i]['nombre'] + "<br>");
                }
                return nombresLocales;
            })
            .catch(error => {
                console.error(error);
            });
}
async function obtenerNombresDeliverysLibres(url) {
    const response = await fetch(url); // Realizar solicitud HTTP para obtener el JSON
    const data = await response.json(); // Analizar el JSON

    const deliverys = [];

    // Recorrer el array "content" del JSON y extraer los nombres de local y sus IDs correspondientes
    for (let delivery of data.content) {
        const nomDelivery = delivery.nombre;
        const idDelivery = delivery.id_delivery;
        if (delivery.local_actual === null) {
            deliverys.push({nombre: nomDelivery, id: idDelivery});
        }
    }

    return deliverys; // Devolver array con los nombres de local y sus IDs correspondientes
}
function cargarDeliverysParaEnrolar() {
    $("#enroll_deliverys").empty();
    obtenerNombresDeliverysLibres(urlDeliverysLibres)
            .then(nombresDeliverys => {
                console.log(nombresDeliverys); // [{nombre: 'Malvin', id: 1}, {nombre: 'Pocitos', id: 2}, {nombre: 'Carrasco', id: 3}, {nombre: 'Avda. Americas', id: 4}, {nombre: 'Centro', id: 5}, {nombre: 'Prado', id: 6}]
                for (i = 0; i < nombresDeliverys.length; i++) {
                    $("#enroll_deliverys").append('<input type="radio" name="enroll_delivery" id="enroll_delivery_' + nombresDeliverys[i]['id'] + '" value="' + nombresDeliverys[i]['id'] + '"> Enrolar ' + nombresDeliverys[i]['nombre'] + "<br>");
                }
                return nombresDeliverys;
            })
            .catch(error => {
                console.error(error);
            });
}
async function enroll() {

    var idDelivery = $('input[name=enroll_delivery]:checked').val();
    var idLocal = $('input[name=enroll_local]:checked').val();

    let dataSet = {
        "token": "3633c190e2f54d07eb0951b2885a5ac3",
        "idDelivery": idDelivery,
        "idLocal": idLocal,
        "tarjeta": 1

    };

    let options = {
        method: "POST",
        body: JSON.stringify(dataSet),
        headers: {"Content-Type": "application/json"}
    }

    fetch("./json/brodevo/enroll.php", options)
            .then(response => response.json())
            .then(data => {
                cargarDeliverysParaEnrolar();
                cargarDeliverysParaLiberar();
            })
            .catch(error => console.error(error));



}
async function obtenerNombresDeliverysOcupados(url) {
    const response = await fetch(url); // Realizar solicitud HTTP para obtener el JSON
    const data = await response.json(); // Analizar el JSON

    const deliverys = [];

    // Recorrer el array "content" del JSON y extraer los nombres de local y sus IDs correspondientes
    for (let delivery of data.content) {
        const nomDelivery = delivery.nombre;
        const idDelivery = delivery.id_delivery;
        const local = delivery.local_actual;

        deliverys.push({nombre: nomDelivery, id: idDelivery, local: local});

    }

    return deliverys; // Devolver array con los nombres de local y sus IDs correspondientes
}
function cargarDeliverysParaLiberar() {
    $("#free_deliverys").empty();
    $("#pedido_deliverys").empty();
    obtenerNombresDeliverysOcupados(urlDeliverysOcupados)
            .then(nombresDeliverys => {
                console.log(nombresDeliverys); // [{nombre: 'Malvin', id: 1}, {nombre: 'Pocitos', id: 2}, {nombre: 'Carrasco', id: 3}, {nombre: 'Avda. Americas', id: 4}, {nombre: 'Centro', id: 5}, {nombre: 'Prado', id: 6}]
                for (i = 0; i < nombresDeliverys.length; i++) {
                    $("#free_deliverys").append('<input type="radio" name="free_" id="free_' + nombresDeliverys[i]['id'] + '" value="' + nombresDeliverys[i]['id'] + '"> Liberar ' + nombresDeliverys[i]['nombre'] + "<br>");
                    $("#pedido_deliverys").append('<input type="radio" name="ped_" id="ped_' + nombresDeliverys[i]['id'] + '"loc="'+nombresDeliverys[i]['local']+'" value="' + nombresDeliverys[i]['id'] + '"> Asignar a ' + nombresDeliverys[i]['nombre'] + " (Local " + nombresDeliverys[i]['local'] + ") <br>");
                }
                return nombresDeliverys;
            })
            .catch(error => {
                console.error(error);
            });
}
async function liberar() {

    var idDelivery = $('input[name=free_]:checked').val();

    let dataSet = {
        "token": "3633c190e2f54d07eb0951b2885a5ac3",
        "idDelivery": idDelivery
    };

    let options = {
        method: "POST",
        body: JSON.stringify(dataSet),
        headers: {"Content-Type": "application/json"}
    }

    fetch("./json/brodevo/dismiss.php", options)
            .then(response => response.json())
            .then(data => {
                cargarDeliverysParaEnrolar();
                cargarDeliverysParaLiberar();
            })
            .catch(error => console.error(error));
}
function enviarPedido() {
    var checkboxes = $('input[type=checkbox][id^="itm"]');
    var pedidoContent = [];
    let r = 0;
    checkboxes.each(function () {
        if (this.checked) {
            r=Math.floor(Math.random() * 12);
            pedidoContent.push({item:$(this).attr('value'),cantidad:r, esRefresco:$(this).attr('data-refresco')});
        }
    });

    let randy = Math.floor(Math.random() * 5);
    let calle = direcciones[randy]['calle'];
    let numero = direcciones[randy]['numero'];
    let lat = direcciones[randy]['latitud'];
    let lng = direcciones[randy]['longitud'];
    let esquina = direcciones[randy]['esquina'];
    let telefono = telefonos[randy];
    let idPedido = Math.floor(Math.random() * 10000);
    let fpago = ffpago[randy];
    let cliente = clientes[randy];
    let ts = Math.floor(marcaTiempoUnix = Date.now()/1000);
    let token = "3633c190e2f54d07eb0951b2885a5ac3";
    let idDelivery = $('input[name=ped_]:checked').val();
    let idLocal = $('input[name=ped_]:checked').attr("loc");
    //alert(idLocal);
   // let idDelivery = $('input[name=ped_]:checked').val();
    
    let pedido = {idPedido: idPedido, formaDePago: fpago, idLocal: idLocal, 
        clienteName: cliente, telefonoCliente: telefono, nombreCalle: calle, numeroPuerta: numero, complemento: "", 
        esquinaName: esquina, indicaciones: "", lat: lat, lng: lng, tsSolicitado: ts, tsPickup: ts, timeout: 600, items: pedidoContent}
    
    var jsonData = JSON.stringify({token: token, idTarjeta: "1", idDelivery : idDelivery , pedidos:[pedido]});
    let numeroAleatorio = Math.floor(Math.random() * 5);

    $.ajax({
        url: './json/brodevo/setPedidos.php',
        type: 'POST',
        data: jsonData,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            console.log(data);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus, errorThrown);
        }
    });
}
function generarPedido() {
    enviarPedido();
}
async function obtenerPendingPedidos(url) {
    const response = await fetch(url); // Realizar solicitud HTTP para obtener el JSON
    const data = await response.json(); // Analizar el JSON

    const pedidos = [];

    // Recorrer el array "content" del JSON y extraer los nombres de local y sus IDs correspondientes
    for (let pedido of data.content) {
        const idPedido = pedido.id_pedido;
        const cliente = pedido.nombre_cliente;
        const nroBocatti = pedido.numero_pedido_bocatti;
        const direccion = pedido.direccion;

        pedidos.push({idPedido: idPedido, cliente: cliente, nroBocatti: nroBocatti, direccion: direccion});

    }

    return pedidos; // Devolver array con los nombres de local y sus IDs correspondientes
}
function cargarPendingPedidos() {
    $("#pedidosCedular").empty();
    obtenerPendingPedidos(urlPendingPedidos)
            .then(pendingPedidos => {
                console.log(pendingPedidos); // [{nombre: 'Malvin', id: 1}, {nombre: 'Pocitos', id: 2}, {nombre: 'Carrasco', id: 3}, {nombre: 'Avda. Americas', id: 4}, {nombre: 'Centro', id: 5}, {nombre: 'Prado', id: 6}]
                
                for (i = 0; i < pendingPedidos.length; i++) {
                    $("#pedidosCedular").append('<input type="radio" name="pending_pedido" id="pp_' + pendingPedidos[i]['idPedido'] + '" value="' + pendingPedidos[i]['idPedido'] + '"> Cedular pedido ' + pendingPedidos[i]['nroBocatti'] + " ("+pendingPedidos[i]['cliente']+","+pendingPedidos[i]['direccion']+")<br>");
                    //$("#pedido_deliverys").append('<input type="radio" name="ped_" id="ped_' + nombresDeliverys[i]['id'] + '" value="' + nombresDeliverys[i]['id'] + '"> Asignar a ' + nombresDeliverys[i]['nombre'] + " (Local " + nombresDeliverys[i]['local'] + ") <br>");
                }
                return pendingPedidos;
                 
            })
            .catch(error => {
                console.error(error);
            });
}
function cedular() {
   
    let idPedido = $('input[name=pending_pedido]:checked').val();
    let token = "3633c190e2f54d07eb0951b2885a5ac3";
    
    
    console.log("PP: "+idPedido);

    var jsonData = JSON.stringify({token: token, idPedido: idPedido});
    $.ajax({
        url: './json/simulator/cedularPedido.php',
        type: 'POST',
        data: jsonData,
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (data) {
            console.log(data);
            cargarPendingPedidos();
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log(textStatus, errorThrown);
        }
    });
    
}