// {} Librerías e importaciones

// ! Tabla
import Tabla from "../../../elementos/tabla.js";

// {}
(async () => {

  // ! Declaración de variables
  let
    peticion = { actual: null, serial: document.querySelector('[name=_token]').value },
		tabla = {
			permisos: {
				elemento: $(tablaRegistros),
				clase: new Tabla({
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: { procedimiento: 'p_traer_encabezado_procesos' }
						}
					},
          datos: {
            peticion: {
              ruta: `${window.aplicacion.enlace}/ejecutar`,
              parametro: {
                procedimiento: 'p_traer_programas',
                id_usuario_asignar: () => id_usuario_asignar.value ? id_usuario_asignar.value : -1,
                renglon: 'ASIGNAR'
              }
            }
          },
          configuracion: { dom: 'ft', pageLength: -1 }
        })
			}
		}

	// !
	await tabla.permisos.clase.inicializar();
	tabla.permisos.instancia = tabla.permisos.elemento.DataTable();

  // !
  $(id_usuario_asignar).change(function(evento) {

    tabla.permisos.instancia.ajax.reload()

  });

  // !
  tabla.permisos.elemento.find('tbody').on('change', 'tr', function(evento) {

    if (evento.tabla.celda.nombre === 'favorito')
      $.ajax({
        type: 'POST',
        url: `${window.aplicacion.enlace}/ejecutar`,
        headers: { 'X-CSRF-TOKEN': peticion.serial },
        data: {
          procedimiento: 'p_registrar_programas_favoritos',
          id_programa: evento.tabla.fila.datos.id_programa,
          id_usuario_asignar: id_usuario_asignar.value,
          accion: evento.tabla.celda.valor.asignar ? '' : 'QUITAR'
        },
        beforeSend: function(peticion, configuracion) {},
        success: function(respuesta, estado, peticion) {},
        error: function(peticion, estado) {},
        complete: function(peticion, estado) {}
      })
    else
      $.ajax({
        type: 'POST',
        url: `${window.aplicacion.enlace}/ejecutar`,
        headers: { 'X-CSRF-TOKEN': peticion.serial },
        data: {
          procedimiento: 'p_registrar_permisos_usuario',
          id_programa: evento.tabla.fila.datos.id_programa,
          id_usuario_asignar: id_usuario_asignar.value,
          visualizar: evento.tabla.fila.datos.visualizar,
          guardar: evento.tabla.fila.datos.guardar,
          modificar: evento.tabla.fila.datos.modificar
        },
        beforeSend: function(peticion, configuracion) {},
        success: function(respuesta, estado, peticion) {},
        error: function(peticion, estado) {},
        complete: function(peticion, estado) {}
      })

  })

})()
