// ../../Modelo/Archivos_JS/Permisos_Usuarios.js
$(document).ready(function () {

  // -----------------------------------------------------------------
  // BANDERA GLOBAL para que la use Gestion_Usuarios.js
  // -----------------------------------------------------------------
  window.puedeEstadoUsuarios = false;

  // -----------------------------------------------------------------
  // OBTENER PERMISOS DE LA SESIÓN SEGÚN MODULO_ACTUAL
  // -----------------------------------------------------------------
  obtenerPermisosSesion(window.MODULO_ACTUAL || 'usuarios', function (permisos) {
    window.puedeEstadoUsuarios = (permisos.puede_estado == 1);

    if (!window.puedeEstadoUsuarios) {
      $(".cambiar-estado, .cambiar-estado-usuario")
        .addClass("disabled-estado")
        .css({
          "pointer-events": "none",
          "opacity": "0.6",
          "cursor": "not-allowed"
        })
        .attr("title", "No tienes permisos para cambiar el estado");
    } else {
      $(".cambiar-estado, .cambiar-estado-usuario")
        .removeClass("disabled-estado")
        .css({
          "pointer-events": "",
          "opacity": "",
          "cursor": ""
        })
        .removeAttr("title");
    }
  });

  // -----------------------------------------------------------------
  // BOTÓN PERMISOS - ABRIR MODAL
  // -----------------------------------------------------------------
  $(document).on("click", ".btn-permisos", function (e) {
    e.preventDefault();
    const idUsuario = $(this).data("id");
    $("#permiso_id_usuario").val(idUsuario);

    $("input[name^='permisos']").prop("checked", false);

    cargarPermisosTodosModulos(idUsuario);

    const modalPermisos = bootstrap.Modal.getOrCreateInstance(
      document.getElementById('modalPermisos')
    );
    modalPermisos.show();
  });

  // -----------------------------------------------------------------
  // GUARDAR PERMISOS
  // -----------------------------------------------------------------
  $("#formPermisos").on("submit", function (e) {
    e.preventDefault();
    const datos = $(this).serialize();

    $.ajax({
      url: "../../Controlador/Ctrl_Administrador/MySQL_Guardar_Permisos.php",
      type: "POST",
      data: datos,
      dataType: "json",
      success: function (data) {
        if (data.success) {
          Swal.fire({
            icon: 'success',
            title: 'Permisos guardados correctamente',
            timer: 1500,
            showConfirmButton: false
          });

          bootstrap.Modal.getInstance(
            document.getElementById('modalPermisos')
          )?.hide();

        } else {
          Swal.fire({
            icon: 'error',
            title: 'Error al guardar permisos',
            text: data.error || 'Intente nuevamente.'
          });
        }
      },
      error: function () {
        Swal.fire({
          icon: 'error',
          title: 'Error',
          text: 'No se pudo guardar permisos.'
        });
      }
    });
  });

  // -----------------------------------------------------------------
  // CARGAR PERMISOS DE TODOS LOS MÓDULOS (CORREGIDO + movimientos)
  // -----------------------------------------------------------------
  function cargarPermisosTodosModulos(idUsuario) {
    $.ajax({
      url: "../../Controlador/Ctrl_Administrador/MySQL_Obtener_Permisos.php",
      type: "GET",
      data: { id_usuario: idUsuario },
      dataType: "json",
      success: function (data) {
        if (data.success && data.data) {
          for (let modulo in data.data) {
            const p = data.data[modulo] || {};

            $(`input[name='permisos[${modulo}][agregar]']`).prop("checked", p.agregar == 1);
            $(`input[name='permisos[${modulo}][editar]']`).prop("checked", p.editar == 1);
            $(`input[name='permisos[${modulo}][eliminar]']`).prop("checked", p.eliminar == 1);
            $(`input[name='permisos[${modulo}][reportes]']`).prop("checked", p.reportes == 1);
            $(`input[name='permisos[${modulo}][estado]']`).prop("checked", p.estado == 1);

            // ⭐ NUEVO: movimientos
            $(`input[name='permisos[${modulo}][movimientos]']`).prop("checked", p.movimientos == 1);
          }
        } else {
          $("input[name^='permisos']").prop("checked", false);
        }
      },
      error: function () {
        $("input[name^='permisos']").prop("checked", false);
      }
    });
  }

  // -----------------------------------------------------------------
  // OBTENER PERMISOS DE SESIÓN
  // -----------------------------------------------------------------
  function obtenerPermisosSesion(modulo, callback) {
    $.ajax({
      url: "../../Controlador/Ctrl_Administrador/MySQL_Obtener_Permisos_Sesion.php",
      type: "GET",
      data: { modulo },
      dataType: "json",
      success: function (data) {
        callback(data.success ? data.permisos : {
          puede_agregar: 0,
          puede_editar: 0,
          puede_eliminar: 0,
          puede_reportes: 0,
          puede_estado: 0
        });
      },
      error: function () {
        callback({
          puede_agregar: 0,
          puede_editar: 0,
          puede_eliminar: 0,
          puede_reportes: 0,
          puede_estado: 0
        });
      }
    });
  }

});
