$(document).ready(function () {
    loadProducts();
});

function loadProducts() {
    $.ajax({
        url: 'database/model/productos.php',
        type: 'POST',
        data: { "action": "getProductos" },
        success: function (response) {
            try {
                let productos = JSON.parse(response);

                // Destruir la tabla si ya existe
                if ($.fn.DataTable.isDataTable('#productosTable')) {
                    $('#productosTable').DataTable().destroy();
                }

                $('#productosTable').DataTable({
                    "paging": true,
                    "pageLength": 10,
                    "lengthMenu": [5, 10, 25, 50, 100],
                    "searching": true,
                    "info": true,
                    "ordering": true,
                    "responsive": true,
                    "data": productos,
                    "columns": [
                        {
                            "data": null,
                            "render": function (data, type, row, meta) {
                                return meta.row + 1;  // Contador
                            }
                        },
                        {
                            "data": "imagen_principal",
                            "render": function (data) {
                                if (data) {
                                    return `<img src="img/productos/${data}" alt="Imagen producto" class="producto-miniatura img-thumbnail">`;
                                }
                                return `<div class="no-image">Sin imagen</div>`;
                            }
                        },
                        {
                            "data": null,
                            "render": function (data) {
                                return `${data.nombre}<br><small class="text-muted">${data.categoria || 'Sin categoría'}</small>`;
                            }
                        },
                        {
                            "data": "marca",
                            "render": function (data) {
                                return data || 'Sin marca';
                            }
                        },
                        {
                            "data": "precio",
                            "render": function (data) {
                                return `$${parseFloat(data).toFixed(2)}`;
                            }
                        },
                        {
                            "data": "destacado",
                            "render": function (data) {
                                return data == 1 ?
                                    '<span class="badge bg-success">Sí</span>' :
                                    '<span class="badge bg-secondary">No</span>';
                            }
                        },
                        {
                            "data": "status",
                            "render": function (data) {
                                return data == 1 ?
                                    '<span class="badge bg-success">Activo</span>' :
                                    '<span class="badge bg-danger">Inactivo</span>';
                            }
                        },
                        {
                            "data": null,
                            "render": function (data, type, row) {
                                let buttons = `<div class="btn-group" role="group">
                                    <a href="editarProducto.php?id=${row.id_producto}" class="btn btn-primary btn-sm">
                                        <i class="fa-solid fa-pen-to-square"></i>
                                    </a>`;

                                // Condición para mostrar el botón de eliminar o restaurar según el status
                                if (row.status == 1) {
                                    buttons += `
                                    <button class="btn btn-danger btn-sm" onclick="deleteProducto(${row.id_producto})">
                                        <i class="fa-solid fa-trash"></i>
                                    </button>`;
                                } else {
                                    buttons += `
                                    <button class="btn btn-success btn-sm" onclick="activateProducto(${row.id_producto})">
                                        <i class="fa-solid fa-rotate-right"></i>
                                    </button>`;
                                }

                                buttons += `</div>`;
                                return buttons;
                            }
                        }
                    ],
                    "language": {
                        "url": "es-ES.json"
                    }
                });
            } catch (e) {
                console.error("Error al procesar la respuesta:", e);
                Swal.fire({
                    icon: "error",
                    title: "Error",
                    text: "Error al cargar los productos: " + e.message
                });
            }
        },
        error: function (xhr, status, error) {
            console.error("Error AJAX:", error);
            Swal.fire({
                icon: "error",
                title: "Error",
                text: "Error de conexión al servidor"
            });
        }
    });
}

function deleteProducto(id) {
    Swal.fire({
        title: "¿Estás seguro?",
        text: "El producto será desactivado",
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#3085d6",
        cancelButtonColor: "#d33",
        confirmButtonText: "Sí, desactivar",
        cancelButtonText: "Cancelar"
    }).then((result) => {
        if (result.isConfirmed) {
            $.ajax({
                url: "database/model/productos.php",
                type: "POST",
                data: { "action": "deleteProducto", "id": id },
                success: function (response) {
                    try {
                        let result = JSON.parse(response);

                        Swal.fire({
                            icon: result.status,
                            title: result.message,
                            showConfirmButton: false,
                            timer: 1500
                        }).then(() => {
                            if (result.status === "success") {
                                loadProducts();
                            }
                        });
                    } catch (e) {
                        console.error("Error al procesar la respuesta:", e);
                        Swal.fire({
                            icon: "error",
                            title: "Error",
                            text: "Error al procesar la respuesta del servidor"
                        });
                    }
                },
                error: function (xhr, status, error) {
                    console.error("Error AJAX:", error);
                    Swal.fire({
                        icon: "error",
                        title: "Error",
                        text: "Error de conexión al servidor"
                    });
                }
            });
        }
    });
}

function activateProducto(id) {
    Swal.fire({
        title: "¿Estás seguro?",
        text: "El producto será activado nuevamente",
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#3085d6",
        cancelButtonColor: "#d33",
        confirmButtonText: "Sí, activar",
        cancelButtonText: "Cancelar"
    }).then((result) => {
        if (result.isConfirmed) {
            $.ajax({
                url: "database/model/productos.php",
                type: "POST",
                data: { "action": "activateProducto", "id": id },
                success: function (response) {
                    try {
                        let result = JSON.parse(response);

                        Swal.fire({
                            icon: result.status,
                            title: result.message,
                            showConfirmButton: false,
                            timer: 1500
                        }).then(() => {
                            if (result.status === "success") {
                                loadProducts();
                            }
                        });
                    } catch (e) {
                        console.error("Error al procesar la respuesta:", e);
                        Swal.fire({
                            icon: "error",
                            title: "Error",
                            text: "Error al procesar la respuesta del servidor"
                        });
                    }
                },
                error: function (xhr, status, error) {
                    console.error("Error AJAX:", error);
                    Swal.fire({
                        icon: "error",
                        title: "Error",
                        text: "Error de conexión al servidor"
                    });
                }
            });
        }
    });
}

// Exponer las funciones para uso global
window.deleteProducto = deleteProducto;
window.activateProducto = activateProducto;