// {} Librerías e importaciones

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

// {}
(async () => {

  // ! Declaración de variables
  let
		peticion = {actual: null},
		campo = { id_cuenta: window.aplicacion.campo.selector.id_cuenta },
		tabla = {
			elemento: $(tablaRegistros),
			clase: new Tabla({
				datos: {
					peticion: {
						ruta: `${window.aplicacion.enlace}/ejecutar`,
						parametro: {
							procedimiento: 'p_traer_datos_entidad',
							renglon: 'NOTAS_CLIENTE',
							id_renglon: () => !id_cliente.value ? -1 : id_cliente.value,
						}
					}
				},
				configuracion: { dom: `ft`, pageLength: -1 }
			})
		}
	;

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

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

		// +
		if(!this.value)
			return formularioNotas.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: 'CLIENTE',
        id_renglon: this.value
      },
      beforeSend: (peticion, configuracion) => {

        campo.id_cuenta.parametros();
        formularioNotas.reset();

      },
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: (peticion, estado) => {

        campo.id_cuenta.peticion('opciones');

				$(tablaRegistros).DataTable().ajax.reload()

      },
      formulario: { elemento: formularioNotas }
    })

	});

	// !
	$(formularioNotas).on('reset', function(evento) {

		$(tablaRegistros).find('.table-active').removeClass('table-active')

	});

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

    // + 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_nota',
        id_nota: $(evento.currentTarget).find('.id').text()
      },
      beforeSend: function(peticion, configuracion) {},
      success: function(respuesta, estado, peticion) {},
      error: function(peticion, estado) {},
      complete: function(peticion, estado) {},
      formulario: { elemento: formularioNotas }
    })

  });

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

    if (
      window.aplicacion.peticion.formulario.elemento === formularioNotas &&
      window.aplicacion.peticion.formulario.exitosa.propiedades === window.aplicacion.peticion.exitosa.propiedades
    )
      $(tablaRegistros).DataTable().ajax.reload()

  })

})()
