// {} Librerías e importaciones

// ! Tabla
import Tabla from "../../elementos/tabla.js"
import { parametros } from "../../../utilidades.js";

// {}
(async () => {

  // ! Declaración de variables
  let
    peticion = {
			actual: null
		},
    campo = {
			id_empleado: window.aplicacion.campo.selector.id_empleado,
		},
		tabla = {
			nominas: {
				elemento: $(tabla_nominas),
				clase: new Tabla({
					tabla: tabla_nominas,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: { procedimiento: 'p_traer_encabezado_procesos', renglon: 'NOMINAS_PAGADAS' }
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_datos_entidad',
								renglon: 'EMPLEADO',
								tipo_filtro: 'NOMINAS',
								id_empleado: () => !id_empleado.value ? -1 : id_empleado.value
							}
						}
					},
					configuracion: { dom: `ft`, pageLength: -1 }
				})
			},
			permisos: {
				elemento: $(tabla_permisos),
				clase: new Tabla({
					tabla: tabla_permisos,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_encabezado_procesos',
								renglon: 'PERMISOS'
							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_datos_entidad',
								renglon: 'EMPLEADO',
								tipo_filtro: 'PERMISOS',
								id_empleado: () => !id_empleado.value ? -1 : id_empleado.value
							}
						}
					},
					configuracion: {
						dom: `ft`,
						pageLength: -1
					}
				}),
			},
			notas: {
				elemento: $(tabla_notas),
				clase: new Tabla({
					tabla: tabla_notas,
					columna: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_encabezado_procesos',
								renglon: 'NOTAS'
							}
						}
					},
					datos: {
						peticion: {
							ruta: `${window.aplicacion.enlace}/ejecutar`,
							parametro: {
								procedimiento: 'p_traer_datos_entidad',
								renglon: 'EMPLEADO',
								tipo_filtro: 'NOTAS',
								id_empleado: () => !id_empleado.value ? -1 : id_empleado.value
							}
						}
					},
					configuracion: {
						dom: `ft`,
						pageLength: -1
					},
					configuracion: { autoInit: false, dom: `t`, pageLength: -1 },
				})
			},
		}
	;

	// !
	$('table').on('draw.dt', function(evento) {

		evento.id = evento.tabla.id.replace('tabla_', '');

		if (!tabla[evento.id])
			return
		;

		evento.tabla.clase  = tabla[evento.id].clase;
		tabla[evento.id] = evento.tabla

	});

	// !
	await tabla.nominas.clase.inicializar();

	// !
	await tabla.permisos.clase.inicializar();

	// !
	await tabla.notas.clase.inicializar();

  // !
  $(id_empleado).focusout(function(evento) {

		const camposLimpiar =$([id_empleado, empleado, id_entidad,identificacion,fecha_ingreso,id_posicion])

    // +
    if (!this.value)
      return camposLimpiar.trigger('reset')
    ;

    // + Condición para verificar si la
    // + petición existe y cancelarla
    peticion.actual &&
    peticion.actual.abort();

    // + Petición hacía el
    // + controlador 'traerRegistros'
    peticion.actual = $.ajax({
      url: `${window.aplicacion.enlace}/ejecutar`,
      data: {
        procedimiento: 'p_traer_unico_registro',
        renglon: 'EMPLEADO',
        id_renglon: this.value
      },
      beforeSend: function(peticion, configuracion) { camposLimpiar.trigger('reset') },
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {

				tabla.nominas.instancia.ajax.reload();
				tabla.permisos.instancia.ajax.reload();
				tabla.notas.instancia.ajax.reload();
			},
      campo: { elemento: this },
			formulario: { elemento: formularioHistoricoEmpleado }
    })

  });


  // // !
  // $(document).on('ajaxSuccess', function(evento, configuracion) {

  //   if (
  //     window.aplicacion.peticion.formulario.elemento === formularioSolicitudes &&
  //     window.aplicacion.peticion.formulario.exitosa.propiedades === window.aplicacion.peticion.exitosa.propiedades &&
	// 		new URLSearchParams(window.aplicacion.peticion.exitosa.configuracion.url).get('renglon') === 'guardar'
  //   )
	// 		tabla.solicitudes.instancia.ajax.reload()
	// 	;
  // });

	// function imprimir(id) {

	// 	const impresion = {
	// 		programa: 'procesos.solicitudPrestamo',
	// 		renglon: 'SOLICITUD_PRESTAMO',
	// 		id: Number(id)
	// 	}

	// 	$.ajax({
	// 		type: 'get',
	// 		url: `${window.aplicacion.enlace}/impresion`,
	// 		data: impresion,
	// 		dataType: 'JSON',
	// 		success: function (response) {

	// 			const nuevaVentana = window.open(''
	// 			,'_blank',
	// 			`width = 992, height = 600, left = ${(window.screen.width - 992) / 2}, top = ${(window.screen.height - 600) / 2}`,
	// 			);
	// 			nuevaVentana.document.write(response);
	// 			nuevaVentana.document.close();

	// 		}
	// 	});

	// }

})()
