$(document).ready(function () {
    $.ajax({
        url: 'database/model/usuarios.php',
        type: 'POST',
        data: { "action": "getUsers" },
        success: function (response) {
            let users = JSON.parse(response);
            $('#userTable').DataTable({
                "paging": true,
                "pageLength": 5,
                "lengthMenu": [5, 10, 50, 100],
                "searching": true,
                "info": true,
                "ordering": true,
                "processing": true,
                "data": users,
                "columns": [
                    {
                        "data": null,
                        "render": function (data, type, row, meta) {
                            return meta.row + 1;  // Contador
                        }
                    },
                    { "data": "nombre" },
                    {
                        "data": "status",
                        "render": function (data, type, row) {
                            if (data == 1) {
                                return '<span class="badge text-bg-success">Activo</span>';
                            } else {
                                return '<span class="badge text-bg-danger">No Activo</span>';
                            }
                        }
                    },
                    {
                        "data": null,
                        "render": function (data, type, row) {
                            return `<div class="buttons" role="group" aria-label="Basic example">
                            <button class="btn btn-primary btn-sm" onclick="editUsuario(${row.id})"><i class="fa-solid fa-pen-to-square"></i></button>
                            <button class="btn btn-danger btn-sm" onclick="deleteUsuario(${row.id})"><i class="fa-solid fa-trash"></i></button>
                            </div>`;
                        }
                    }
                ],
                "language": {
                    "url": "es-ES.json"
                }
            });
        },
        error: function (xhr, status, error) {
            console.error("AJAX error:", xhr.responseText);
        }
    });
});

$("#addUser").on("submit", function (e) {
    e.preventDefault();

    // Validar que todos los campos estén llenos
    let name = $("#nombre").val().trim();
    let password = $("#password").val().trim();
    let confirmPassword = $("#confirmPassword").val().trim();
    let rolId = $("#rol_id").val();

    if (!name || !password || !confirmPassword || !rolId) {
        Swal.fire({
            icon: "error",
            title: "Error",
            text: "Todos los campos son obligatorios"
        });
        return;
    }

    // Validar que las contraseñas coincidan
    if (password !== confirmPassword) {
        Swal.fire({
            icon: "error",
            title: "Error",
            text: "Las contraseñas no coinciden"
        });
        return;
    }

    // Si todo está correcto, enviar el formulario
    let formData = new FormData(this);
    let action = $("#id_usuario").val() ? "updateUser" : "createUser";
    formData.append("action", action);

    $.ajax({
        url: "database/model/usuarios.php",
        type: "POST",
        data: formData,
        processData: false,
        contentType: false,
        success: function (response) {
            try {
                console.log(response);
                let result = JSON.parse(response);
                Swal.fire({
                    icon: result.status,
                    title: result.message,
                    showConfirmButton: false,
                    timer: 1500
                }).then(() => {
                    if (result.status === "success") {
                        location.reload();
                    }
                });
            } catch (e) {
                console.error(e);
            }
        },
        error: function (xhr, status, error) {
            console.error("Error:", status, error, xhr);
            Swal.fire({
                icon: "error",
                title: "Error",
                text: "Ocurrió un error al registrar el usuario"
            });
        }
    });
});

function deleteUsuario(id) {
    Swal.fire({
        title: "¿Estás seguro?",
        text: "No podrás revertir esto",
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#3085d6",
        cancelButtonColor: "#d33",
        confirmButtonText: "Sí, eliminar",
        cancelButtonText: "Cancelar"
    }).then((result) => {
        if (result.isConfirmed) {
            $.ajax({
                url: "database/model/usuarios.php",
                type: "POST",
                data: { "action": "deleteUser", "id": id },
                success: function (response) {
                    let result = JSON.parse(response);
                    Swal.fire({
                        icon: result.status,
                        title: result.message,
                        showConfirmButton: false,
                        timer: 1500
                    }).then(() => {
                        if (result.status === "success") {
                            location.reload();
                        }
                    });
                },
                error: function (error) {
                    console.log(error);
                }
            });
        }
    });
}

function editUsuario(id) {
    $.ajax({
        url: "database/model/usuarios.php",
        type: "POST",
        data: { "action": "getUser", "id": id },
        success: function (response) {
            let user = JSON.parse(response);
            console.log(user)
            if (user) {
                $("#id_usuario").val(user.id);
                $("#nombre").val(user.nombre);
                $("#email").val(user.email);
                $("#usuario").val(user.usuario);
                loadProfiles(user.rol_id);
                $("#addUserModalLabel").text("Editar usuario");
                $("#addUserModal").modal("show");
                $("#btn-add").text("Actualizar");
            }
        },
        error: function (error) {
            console.log(error);
        }
    });

    $('#addUserModal').on('hidden.bs.modal', function () {
        $(this).find('form')[0].reset();
        $("#addUserModalLabel").text("Añadir usuario");
        $("#btn-add").text("Guardar usuario");
        $("#id_usuario").val("");
        loadProfiles();
    });
}

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

function loadProfiles(selectedProfileId = null) {
    $.ajax({
        url: 'database/model/usuarios.php',
        type: 'POST',
        data: { "action": "getRoles" },
        success: function (response) {
            let roles = JSON.parse(response);
            let select = $('#rol_id');
            select.empty();
            select.append('<option value="">Selecciona un rol</option>');
            roles.forEach(role => {
                let selected = role.id == selectedProfileId ? "selected" : "";
                select.append(`<option value="${role.id}" ${selected}>${role.rol}</option>`);
            });
        },
        error: function (xhr, status, error) {
            console.error("Error al cargar perfiles:", error);
        }
    });
}