function getColumns() {
	let columns = [
		{
			title: `N°`,
			data: `id`,
			className: 'text-center'
		},
		{
			title: `PERSONAL`,
			data: null,
			className: `text-center`,
			render: (data) => {
				let nombresCompletos;
				let nombres = data.trabajador_nombres;
				let apellidos = data.trabajador_apellidos;
				nombresCompletos = `${apellidos} ${nombres}`;

				return nombresCompletos;
			}
		},
		{
			title: "FECHA",
			data: "fecha_inicio",
			className: "text-center"
		},
		{
			title: `MOTIVO`,
			data: `motivo`,
			className: 'text-center'
		},
		{
			title: `ESTADO`,
			data: `estado`,
			className: 'text-center',
			render: (data) => {
				let label = "";
				let contenido = ""

				switch (data) {
					case 0:
						label = "label bg-purple"
						contenido = "PENDIENTE"
						break;
					case 1:
						label = "label label-success"
						contenido = "ACEPTADO"
						break;
					case 2:
						label = "label label-warning"
						contenido = "RECHAZADO"
						break;
				}

				return `<span class="${label}">${contenido}</span>`;
			}
		},
		{
			title: `ACCIONES`,
			data: null,
			className: 'text-center',
			render: (data) => {
				let acciones = "";
				let registrar = "";
				let verdetalle = "";
				verdetalle = `<span data-toggle="tooltip" data-placement="left" title="Ver detalle" style="cursor: pointer"> <i class='verdetalle fa fa-list text-primary-700'></i>&nbsp;&nbsp; </span>`;
				acciones = verdetalle;
				return acciones;
			}
		}
	];

	return columns;
}

const mostrarModalVerDetalleJustificacion = (data) => {
//	let filtros = {
//		fecha_inicio: $("#dpFechaInicioFiltro").val(),
//		fecha_fin: $("#dpFechaFinFiltro").val(),
//		sede_id: $("#cboSedesFiltro").val()
//	}
	debugger
	localStorage.setItem('data', JSON.stringify(data))
//	localStorage.setItem('filtros', JSON.stringify(filtros))
	location.href = `${baseURLModals}justificaciones/evaluarJustificacion.jsp`
}



const listarJustificaciones = (objParams = {}) => {
	ajaxWebService.get(URI_JUSTIFICACION, objParams).then((response) => {
		let columns = getColumns();

		let wrapsNameDatatable = `divDatatable`;
		let classNameForDatatable = `display table table-bordered`;

		makeDatatable(
			wrapsNameDatatable,
			{
				data: response.data,
				columns,
			},
			classNameForDatatable,
			).then((nodes) => {
			nodes.container
				.off()
				.on("click", ".verdetalle", function () {
					let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
					mostrarModalVerDetalleJustificacion(data);
				})

		});
	});
};


const listarPersonal = (selectorName) => {
	initSelect2(selectorName, baseURLRest + URI_TRABAJADORES, {title: "nombresapellidos", subtitle: "documentoidentidad"});
};

const listarEstadoJustificaciones = (nodeIdentifier) => {
	ajaxWebService.get(URI_ESTADOJUSTIFICACION).then((response) => {
		let estadoJusticaciones = response.data;
		debugger
		let html = ""
//		html += estadoJusticaciones.map(sede => `<option value="${sede.id}">${sede.descripcion}</option>`)
		html += estadoJusticaciones.map(sede => `<option value="${sede.id - 1}">${sede.descripcion}</option>`)//QUITAR EN PRODUCCION
		$(nodeIdentifier).html(html)
		$(nodeIdentifier).selectpicker('refresh')
	});
}

const formControls = {
	init() {
		this.initPersonal()
		this.initPickers()
		this.initSedes()
		this.initEstados()
	},
	initPersonal() {
		listarPersonal("#cboPersonalFiltro")
	},
	initPickers() {
		initDatePicker("#dpFechaInicioFiltro", "#dpFechaFinFiltro")
		$("#dpFechaInicioFiltro").val("")
		$("#dpFechaFinFiltro").val("")
	},
	initSedes() {
		listarSedes("#cboSedesFiltro")
	},
	initEstados() {
		listarEstadoJustificaciones("#cboEstadoJustificacionFiltro")
	}
}
//
const aplicarFiltro = () => {
	let personal = $("#cboPersonalFiltro").select2('data')[0];
	let {id: trabajador_id} = personal ? personal : {id: ""}
	let fecha_inicio = $("#dpFechaInicioFiltro").val()
	let fecha_fin = $("#dpFechaFinFiltro").val()
	let rango_fechas = generarFechas(fecha_inicio, fecha_fin)

	let sede_id = $("#cboSedesFiltro").val()
	let sede_descripcion = $("#cboSedesFiltro option:selected").text()
	let estadoJustificacion = $("#cboEstadoJustificacionFiltro").val();

	let params = cleanQueryParams({
		fecha_inicio: rango_fechas,
		trabajador_id,
		estado: estadoJustificacion
	})
	listarJustificaciones({params})
}


$(document).ready(function () {
	formControls.init()
	$("#btnMostrarTodo").click(listarJustificaciones)
	$("#btnAplicarFiltro").click(aplicarFiltro)
})