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

function loadBlogs() {
    $.ajax({
        url: 'database/model/blogs.php',
        type: 'POST',
        data: { "action": "getBlogs" },
        success: function (response) {

            try {
                let blogs = JSON.parse(response);

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

                $('#blogsTable').DataTable({
                    "paging": true,
                    "pageLength": 10,
                    "lengthMenu": [5, 10, 25, 50, 100],
                    "searching": true,
                    "info": true,
                    "ordering": true,
                    "responsive": true,
                    "data": blogs,
                    "columns": [
                        {
                            "data": null,
                            "render": function (data, type, row, meta) {
                                return meta.row + 1;  // Contador
                            }
                        },
                        {
                            "data": null,
                            "render": function (data) {
                                return `${data.titulo}`;
                            }
                        },
                        {
                            "data": null,
                            "render": function (data) {
                                return data.status == 1 ?
                                    '<span class="badge bg-success">Activo</span>' :
                                    '<span class="badge bg-danger">Inactivo</span>';
                            }
                        },
                        {
                            "data": "fecha_modificacion", // CORREGIDO: usar campo que existe
                            "render": function (data) {
                                // Si no hay fecha de modificación, usar fecha de creación
                                let fechaUsar = data;
                                if (!fechaUsar) {
                                    // Acceder a la fila completa para obtener fecha_creacion
                                    return tiempoRelativo('fecha_creacion'); // Esto necesita otro enfoque
                                }
                                return tiempoRelativo(fechaUsar);
                            }
                        },
                        {
                            "data": null,
                            "render": function (data, type, row) {
                                let buttons = `<div class="btn-group" role="group">
                                    <a href="editarBlog.php?id=${row.id}" 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="deleteBlog(${row.id})">
                                        <i class="fa-solid fa-trash"></i>
                                    </button>`;
                                } else {
                                    buttons += `
                                    <button class="btn btn-success btn-sm" onclick="activateBlog(${row.id})">
                                        <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);
                console.error("Respuesta completa:", response);
                Swal.fire({
                    icon: "error",
                    title: "Error",
                    text: "Error al cargar los blogs: " + e.message
                });
            }
        },
        error: function (xhr, status, error) {
            console.error("Error AJAX:", error);
            console.error("Estado:", status);
            console.error("Respuesta:", xhr.responseText);
            Swal.fire({
                icon: "error",
                title: "Error",
                text: "Error de conexión al servidor"
            });
        }
    });
}

function deleteBlog(id) {
    Swal.fire({
        title: "¿Estás seguro?",
        text: "El blog será desactivado",
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#3085d6",
        cancelButtonColor: "#d33",
        confirmButtonText: "Sí, desactivar",
        cancelButtonText: "Cancelar"
    }).then((result) => {
        if (result.isConfirmed) {
            $.ajax({
                url: "database/model/blogs.php",
                type: "POST",
                data: { "action": "deleteBlog", "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") {
                                loadBlogs();
                            }
                        });
                    } 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 activateBlog(id) {
    Swal.fire({
        title: "¿Estás seguro?",
        text: "El blog 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/blogs.php",
                type: "POST",
                data: { "action": "activateBlog", "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") {
                                loadBlogs();
                            }
                        });
                    } 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 tiempoRelativo(fecha) {
    const ahora = new Date();
    const fechaPost = new Date(fecha);
    const diferencia = ahora - fechaPost;

    // Convertir a diferentes unidades
    const segundos = Math.floor(diferencia / 1000);
    const minutos = Math.floor(segundos / 60);
    const horas = Math.floor(minutos / 60);
    const dias = Math.floor(horas / 24);
    const semanas = Math.floor(dias / 7);
    const meses = Math.floor(dias / 30);
    const años = Math.floor(dias / 365);

    let texto = '';
    let clase = 'bg-secondary'; // Clase por defecto

    if (años > 0) {
        texto = `Hace ${años} año${años > 1 ? 's' : ''}`;

    } else if (meses > 0) {
        texto = `Hace ${meses} mes${meses > 1 ? 'es' : ''}`;

    } else if (semanas > 0) {
        texto = `Hace ${semanas} semana${semanas > 1 ? 's' : ''}`;

    } else if (dias > 0) {
        if (dias === 1) {
            texto = 'Ayer';

        } else {
            texto = `Hace ${dias} día${dias > 1 ? 's' : ''}`;

        }
    } else if (horas > 0) {
        texto = `Hace ${horas} hora${horas > 1 ? 's' : ''}`;

    } else if (minutos > 0) {
        texto = `Hace ${minutos} minuto${minutos > 1 ? 's' : ''}`;

    } else {
        texto = 'Hace unos segundos';

    }

    return `<span class="badge ${clase}">${texto}</span>`;
}

// Exponer las funciones para uso global
window.deleteBlog = deleteBlog;
window.activateBlog = activateBlog;