$(function () {
    $('#config').addClass("active");
    listar();
});

var listar = function () {

    function filterGlobal() {
        $('#table').DataTable().search(
            $('#global_filter').val()
        ).draw();
    }

    var table = $('#table')
        .DataTable({
            "destroy": true,
            "responsive": true,
            "dom": "tip",
            "bSort": true,
            "ajax": {
                "method": "POST",
                "url": $('#url').val() + "ajuste/usuario_list"
            },
            "columns": [
                { "data": "nombres" },
                { "data": "ape_paterno" },
                { "data": "ape_materno" },
                {
                    "data": null, "render": function (data, type, row) {
                        if (data.id_rol == 1) {
                            return '<span class="label label-light-primary">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 6) {
                            return '<span class="label label-light-info">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 5) {
                            return '<span class="badge badge-light-warning">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 4) {
                            return '<span class="badge badge-light-success">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 7) {
                            return '<span class="badge bg-secondary">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 3) {
                            return '<span class="badge bg-primary">' + data.desc_r + '</span>';
                        } else if (data.id_rol == 2) {
                            return '<span class="badge bg-info">' + data.desc_r + '</span>';
                        } else {
                            return '<span class="badge badge-light-success">' + data.desc_r + '</span>';
                        }

                    }
                },
                {
                    "data": null, "render": function (data, type, row) {
                        if (data.estado == 'a') {
                            return '<div class="text-center"><a href="javascript::void(0)" onclick="estado(' + data.id_usu + ',\'' + data.estado + '\',\'' + data.nombres + ' ' + data.ape_paterno + ' ' + data.ape_materno + '\'' + ');"><span class="badge badge-success">ACTIVO</span></a></div>';
                        } else if (data.estado == 'i') {
                            return '<div class="text-center"><a href="javascript::void(0)" onclick="estado(' + data.id_usu + ',\'' + data.estado + '\',\'' + data.nombres + ' ' + data.ape_paterno + ' ' + data.ape_materno + '\'' + ');"><span class="badge badge-danger">INACTIVO</span></a></div>';
                        }
                    }
                },
                {
                    "data": null, "render": function (data, type, row) {
                        return '<div class="text-right"><a href="usuario_edit/' + data.id_usu + '" class="text-info edit"><i data-feather="edit" class="feather-sm fill-white"></i></a>'
                            + '&nbsp;<a href="javascript:void(0)" class="text-danger delete ms-2" onclick="anular(' + data.id_usu + ',' + data.id_rol + ',\'' + data.nombres + ' ' + data.ape_paterno + ' ' + data.ape_materno + '\');"><i data-feather="trash-2" class="feather-sm fill-white"></i></a></div>';
                    }
                }
            ]
        });

    $('input.global_filter').on('keyup click', function () {
        filterGlobal();
    });

    $('#table').DataTable().on("draw", function () {
        feather.replace();
    });
}

var estado = function (id_usu, estado, nombre) {

    if (estado == 'a') {
        var esta = 'INACTIVO';
        var est = 'i';
    } else {
        var esta = 'ACTIVO';
        var est = 'a';
    }

    var html_confirm = '<div>Se pondrá ' + esta + ' al usuario:<br>' + nombre + '</div><br>\
        <div><span class="text-success" style="font-size: 17px;">¿Está Usted de Acuerdo?</span></div>';

    Swal.fire({
        title: 'Necesitamos de tu Confirmación',
        html: html_confirm,
        icon: 'info',
        showCancelButton: true,
        confirmButtonColor: '#34d16e',
        confirmButtonText: 'Si, Adelante!',
        cancelButtonText: "No!",
        showLoaderOnConfirm: true,
        preConfirm: function () {
            return new Promise(function (resolve) {
                $.ajax({
                    url: $('#url').val() + 'ajuste/usuario_estado',
                    type: 'POST',
                    data: {
                        id_usu: id_usu,
                        estado: est
                    },
                    dataType: 'json'
                })
                    .done(function (response) {
                        Swal.fire({
                            title: 'Proceso Terminado',
                            text: 'Datos actualizados correctamente',
                            icon: 'success',
                            confirmButtonColor: "#34d16e",
                            confirmButtonText: "Aceptar"
                        });
                        listar();
                    })
                    .fail(function () {
                        Swal.fire('Oops...', 'Problemas con la conexión a internet!', 'error');
                    });
            });
        },
        allowOutsideClick: false
    });
}

var anular = function (id_usu, id_rol, nombre) {

    var html_confirm = '<div>Se procederá a eliminar al usuario:<br>' + nombre + '</div><br>\
        <div><span class="text-success" style="font-size: 17px;">¿Está Usted de Acuerdo?</span></div>';

    Swal.fire({
        title: 'Necesitamos de tu Confirmación',
        html: html_confirm,
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#34d16e',
        confirmButtonText: 'Si, Adelante!',
        cancelButtonText: "No!",
        showLoaderOnConfirm: true,
        preConfirm: function () {
            return new Promise(function (resolve) {
                $.ajax({
                    url: $('#url').val() + 'ajuste/usuario_delete',
                    type: 'POST',
                    data: {
                        id_usu: id_usu,
                        id_rol: id_rol
                    },
                    dataType: 'json'
                })
                    .done(function (response) {
                        if (response == 1) {
                            Swal.fire({
                                title: 'Proceso Terminado',
                                text: 'Datos eliminados correctamente',
                                icon: 'success',
                                confirmButtonColor: "#34d16e",
                                confirmButtonText: "Aceptar"
                            });
                        } else {
                            Swal.fire({
                                title: 'Proceso No Culminado',
                                text: 'Los datos del usuario ' + nombre + ', no se pueden eliminar, porque tiene relación con ventas aprobadas',
                                icon: 'error',
                                confirmButtonColor: "#34d16e",
                                confirmButtonText: "Aceptar"
                            });
                        }
                        listar();
                    })
                    .fail(function () {
                        Swal.fire('Oops...', 'Problemas con la conexión a internet!', 'error');
                    });
            });
        },
        allowOutsideClick: false
    });
}