$(document).ready(function () {
    // Establecer la fecha y hora de actualización
    const now = new Date();
    $('#lastUpdate').text('Última actualización: ' + now.toLocaleString());

    // Cargar estadísticas
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getStats' },
        success: function (response) {
            try {
                const stats = JSON.parse(response);
                $('#totalCategorias').text(stats.totalCategorias);
                $('#totalMarcas').text(stats.totalMarcas);
                $('#totalProductos').text(stats.totalProductos);
                $('#totalDestacados').text(stats.totalDestacados);
            } catch (e) {
                console.error('Error parsing stats JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading stats:', error);
        }
    });

    // SECCIÓN REMOVIDA: Cargar gráfico de productos por mes

    // Cargar gráfico de productos destacados vs no destacados
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getProductosDestacados' },
        success: function (response) {
            try {
                const data = JSON.parse(response);
                const ctx = document.getElementById('destacadosChart').getContext('2d');
                
                new Chart(ctx, {
                    type: 'doughnut',
                    data: {
                        labels: data.labels,
                        datasets: [{
                            data: data.values,
                            backgroundColor: [
                                'rgba(77, 77, 77, 0.7)',
                                'rgba(255, 110, 1, 0.7)'
                            ],
                            borderColor: [
                                'rgba(77, 77, 77, 1)',
                                'rgba(255, 110, 1, 1)'
                            ],
                            borderWidth: 1
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: {
                                position: 'bottom'
                            }
                        }
                    }
                });
            } catch (e) {
                console.error('Error parsing destacados JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading destacados chart:', error);
        }
    });

    // Cargar gráfico de productos por categoría
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getProductosByCategoria' },
        success: function (response) {
            try {
                const data = JSON.parse(response);
                const ctx = document.getElementById('categoriasPieChart').getContext('2d');
                
                new Chart(ctx, {
                    type: 'pie',
                    data: {
                        labels: data.labels,
                        datasets: [{
                            data: data.values,
                            backgroundColor: data.colors,
                            borderWidth: 1
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: {
                                position: 'right'
                            },
                            tooltip: {
                                callbacks: {
                                    label: function(context) {
                                        const label = context.label || '';
                                        const value = context.parsed || 0;
                                        const total = context.dataset.data.reduce((acc, val) => acc + val, 0);
                                        const percentage = Math.round(value / total * 100);
                                        return label + ': ' + value + ' (' + percentage + '%)';
                                    }
                                }
                            }
                        }
                    }
                });
            } catch (e) {
                console.error('Error parsing categorias JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading categorias chart:', error);
        }
    });

    // Cargar gráfico de productos por marca
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getProductosByMarca' },
        success: function (response) {
            try {
                const data = JSON.parse(response);
                const ctx = document.getElementById('marcasChart').getContext('2d');
                
                new Chart(ctx, {
                    type: 'polarArea',
                    data: {
                        labels: data.labels,
                        datasets: [{
                            data: data.values,
                            backgroundColor: data.colors,
                            borderWidth: 1
                        }]
                    },
                    options: {
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: {
                                position: 'right'
                            },
                            tooltip: {
                                callbacks: {
                                    label: function(context) {
                                        const label = context.label || '';
                                        const value = context.parsed.r || 0;
                                        return label + ': ' + value;
                                    }
                                }
                            }
                        }
                    }
                });
            } catch (e) {
                console.error('Error parsing marcas JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading marcas chart:', error);
        }
    });

    // Cargar gráfico de distribución por rango de precios
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getRangosPrecios' },
        success: function (response) {
            try {
                const data = JSON.parse(response);
                const ctx = document.getElementById('preciosChart').getContext('2d');
                
                new Chart(ctx, {
                    type: 'bar',
                    data: {
                        labels: data.labels,
                        datasets: [{
                            label: 'Cantidad de Productos',
                            data: data.values,
                            backgroundColor: data.colors,
                            borderColor: data.colors.map(color => color.replace('0.7', '1')),
                            borderWidth: 1
                        }]
                    },
                    options: {
                        indexAxis: 'y',
                        responsive: true,
                        maintainAspectRatio: false,
                        plugins: {
                            legend: {
                                display: false
                            }
                        },
                        scales: {
                            x: {
                                beginAtZero: true,
                                title: {
                                    display: true,
                                    text: 'Cantidad de Productos'
                                }
                            }
                        }
                    }
                });
            } catch (e) {
                console.error('Error parsing precios JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading precios chart:', error);
        }
    });

    // Cargar Top Productos
    $.ajax({
        url: 'database/model/dashboard.php',
        type: 'POST',
        data: { action: 'getTopProductos' },
        success: function (response) {
            try {
                const productos = JSON.parse(response);
                const $container = $('#topProductosList');
                
                // Limpiar el contenedor
                $container.empty();
                
                // Agregar productos
                productos.forEach(producto => {
                    const imagenUrl = producto.imagen ? 'img/productos/' + producto.imagen : 'img/no-image.png';
                    
                    $container.append(`
                        <li class="item">
                            <div class="product-img">
                                <img src="${imagenUrl}" alt="${producto.nombre}" class="img-size-50">
                            </div>
                            <div class="product-info">
                                <a href="productos.php?id=${producto.id}" class="product-title">
                                    ${producto.nombre}
                                    <span class="badge badge-warning float-right">$${parseFloat(producto.precio).toFixed(2)}</span>
                                </a>
                                <span class="product-description">
                                    ${producto.categoria} | ${producto.marca}
                                </span>
                            </div>
                        </li>
                    `);
                });
            } catch (e) {
                console.error('Error parsing top productos JSON:', e);
                console.log('Response:', response);
            }
        },
        error: function(xhr, status, error) {
            console.error('Error loading top productos:', error);
        }
    });

    // Cargar tabla de últimos productos
    $('#productosTable').DataTable({
        ajax: {
            url: 'database/model/dashboard.php',
            type: 'POST',
            data: { action: 'getLastProductos' },
            dataSrc: ''
        },
        columns: [
            {
                "data": null,
                "render": function (data, type, row, meta) {
                    return meta.row + 1;  // Contador
                }
            },
            {
                "data": "imagen",
                "render": function (data, type, row) {
                    return data ? 
                        `<img src="img/productos/${data}" alt="${row.nombre}" class="img-thumbnail" style="max-width: 50px;">` : 
                        `<img src="img/no-image.png" alt="Sin imagen" class="img-thumbnail" style="max-width: 50px;">`;
                }
            },
            { "data": "nombre" },
            { 
                "data": "precio",
                "render": function (data, type, row) {
                    return `$${parseFloat(data).toFixed(2)}`;
                }
            },
            { "data": "sku" },
            { "data": "categoria" },
            { "data": "marca" },
            {
                "data": null,
                "render": function (data, type, row) {
                    return `<a href="productos.php?id=${row.id}" class="btn btn-primary btn-sm">Ver</a>`;
                }
            }
        ],
        "language": {
            "url": "https://cdn.datatables.net/plug-ins/1.11.5/i18n/es-ES.json"
        },
        "responsive": true,
        "lengthChange": false,
        "autoWidth": false,
        "pageLength": 5
    });

    // Actualizar datos cada 5 minutos
    setInterval(function() {
        location.reload();
    }, 300000); // 5 minutos en milisegundos
});