let htmlConceptos = "";
let htmlSedes = "";

function getColumns() {
	let columns = [
		{
			title: `N°`,
			data: `sede_id`,
			className: 'text-center'
		},
		{
			title: `SEDE`,
			data: `sede_descripcion`,
			className: `text-center`,
		},
		{
			title: `CONCEPTO`,
			data: `montoamanecida_descripcion`,
			className: 'text-center',
			render: (data) => {
				if (data) {
					return data;
				} else {
					return "-";
				}
			}
		},
		{
			title: 'ESTADO',
			data: `estado`,
			className: "text-center",
			render: (data) => {
				debugger
				let label = "";
				let contenido = "";

				if (data === 1) {
					label = `label label-success`;
					contenido = "ACTIVO";
				} else if (data === 0) {
					label = `label label-danger`;
					contenido = "INACTIVO";
				} else if (!data) {
					label = `label label-primary`;
					contenido = `NO TIENE ASIGNADO`;
				}

				return `<span class="${label}">${contenido}</span>`;
			}
		},
		{
			title: `ACCIONES`,
			data: `estado`,
			className: 'text-center',
			render: (data) => {
				debugger
				let registrar = "";
				let editar = "";
				let eliminar = "";

				if (data) {
					editar = `<span data-placement="left" title="Editar" style="cursor: pointer"> <i class="editar icon-pencil text-slate-800"></i>&nbsp;&nbsp; </span>`;
					eliminar = `<span data-placement="left" title="Eliminar" style="cursor: pointer"> <i class="eliminar fa fa-power-off text-danger-700"></i>&nbsp;&nbsp; </span>`;
				} else if (data === 0) {
					eliminar = `<span data-placement="left" title="Eliminar" style="cursor: pointer"> <i class="eliminar fa  fa-power-off text-success-700"></i>&nbsp;&nbsp; </span>`;
				} else {
					registrar = `<span data-toggle="modal" data-target="#modal_entrada_pendiente" data-placement="left" title="Editar" style="cursor: pointer"> <i class='registrar icon-plus-circle2 text-success-700'></i>&nbsp;&nbsp; </span>`;
				}
				let acciones = registrar + editar + eliminar;
				return acciones;
			}
		}
	];

	return columns;
}

function getColumnDefs() {
	let columnDefs = [
		{orderable: false, width: '3%', targets: 0, className: "text-center"},
		{orderable: false, width: '10%', targets: 1, className: "text-center"},
		{orderable: false, width: '30%', targets: 2, className: "text-center"},
		{orderable: false, width: '7%', targets: 3, className: "text-center"},
		{orderable: false, width: '7%', targets: 4, className: "text-center"},
	];
	return columnDefs;
}

function inicializarInputsModalEditar(data = {}){
	debugger
	$("#spanSede").html(data.sede_descripcion);
	$("#cboEditarConceptos").html(htmlConceptos);
	$("#cboEditarConceptos").val(data.montoamanecida_id);
//    $("#txtEditarMonto12h").val(data.monto12h);
//    $("#txtEditarMonto24h").val(data.monto24h);
//    debugger
}

function inicializarInputsModalRegistrar(data = {}){
	$("#spanRegistrarSede").html(data.sede_descripcion);
	$("#cboRegistrarConceptos").html(htmlConceptos);
	$(".select-search").select2();
}

function mostrarMensajeResultadoModalEditar(result = {}){
	if (result.value) {
//        registrar();
		swal({
			type: 'success',
			title: '¡Se realizó la actualización correctamente!',
			showConfirmButton: false,
			timer: 1500
		});
}
}

function mostrarMensajeResultadoModalRegistrar(result = {}){
	if (result.value) {
		swal({
			type: 'success',
			title: '¡Se asigno correctamente!',
			showConfirmButton: false,
			timer: 1500
		});
}
}

function mostrarModalEdicion(data = {}) {
	ajaxModal.get("policias/mantenimientoSedes/editarConceptoSede.jsp").then((response) => {
		swal({
			title: '<strong>Editar</strong>',
			html: response.data,
			showCloseButton: true,
			showCancelButton: true,
			focusConfirm: false,
			confirmButtonText: '<i class="fa fa-thumbs-up"></i> Guardar cambios',
			confirmButtonAriaLabel: 'Thumbs up, great!',
			cancelButtonText: 'Cancelar',
			cancelButtonAriaLabel: 'Thumbs down',
			width: '15%',
			onOpen: () => {
				inicializarInputsModalEditar(data);
			}
		}).then((result) => {
			mostrarMensajeResultadoModalEditar(result);
		});
	});
}

function mostrarModalEliminacion(data) {
	let {id, estado} = data;
	let titulo = "";
	let textoConfirmacion = ""
	let tituloOperacion = "";


	if (estado) {
		titulo = 'Está seguro de eliminar?';
		textoConfirmacion = 'Sí, eliminar!';
		tituloOperacion = '¡Eliminado exitosamente!';
		estado = 0;
	} else {
		titulo = 'Está seguro de activar?';
		textoConfirmacion = 'Sí, activar!';
		tituloOperacion = '¡Activado exitosamente!';
		estado = 1;
	}


	swal({
		title: titulo,
		text: "",
		type: 'warning',
		showCancelButton: true,
		confirmButtonColor: '#3085d6',
		cancelButtonColor: '#d33',
		confirmButtonText: textoConfirmacion
	}).then((result) => {
		if (result.value) {
			ajaxWebService.patch(`${URI_POLICIA_CONCEPTOSEDES}/${id}`, {estado}).then((response) => {
				if (response.status) {
					swal({
						type: 'success',
						title: tituloOperacion,
						showConfirmButton: false,
						timer: 1500
					});
					listarAsignacionesConceptosSede();
				}
			});
		}
	});

}

function mostrarModalRegistrar(data = {}) {
	ajaxModal.get("policias/mantenimientoSedes/registrarConceptoSede.jsp").then((response) => {
		swal({
			title: '<strong>Asignar concepto a sede</strong>',
			html: response.data,
			showCloseButton: true,
			showCancelButton: true,
			focusConfirm: false,
			confirmButtonText: '<i class="fa fa-thumbs-up"></i> Registrar',
			confirmButtonAriaLabel: 'Thumbs up, great!',
			cancelButtonText: 'Cancelar',
			cancelButtonAriaLabel: 'Thumbs down',
			width: '15%',
			onOpen: () => {
				inicializarInputsModalRegistrar(data);
			}
		}).then((result) => {
			mostrarMensajeResultadoModalEditar(result);
		});
	});
}

function listarAsignacionesConceptosSede(objParams = {}) {
	ajaxWebService.get(URI_POLICIA_CONCEPTOSEDES, objParams).then((response) => {
		let columns = getColumns();
//		let columnDefs = getColumnDefs();
		let columnDefs = [];

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

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

			nodes.container.on("click", ".editar", function () {
				let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
				mostrarModalEdicion(data);
			});

			nodes.container.on("click", ".eliminar", function () {
				let data = nodes.datatable.DataTable().row($(this).parents("tr")).data();
				mostrarModalEliminacion(data);
			});
		});
	});
}
function listarSedes(selectorName) {
	ajaxWebService.get(URI_SEDES).then((result) => {
		let sedes = result.data;
		sedes = _.orderBy(sedes, s => s.descripcion);
		let html = `<option value="">[TODOS]</option>`;
		sedes.forEach(sede => htmlSedes += `<option value="${sede.codigo}">${sede.descripcion}</option>`);
		html += htmlSedes;
		$(selectorName).html(html).select2();
	});
}

function listarConceptos(selectorName) {
	ajaxWebService.get(URI_POLICIA_MONTOS_AMANECIDAS).then((response) => {
		let data = response.data;
		data = _.orderBy(data, d => d.descripcion);
		let html = `<option value="">[TODOS]</option>`;
		data.forEach(amanecida => htmlConceptos += `<option value="${amanecida.id}">${amanecida.descripcion}</option>`);
		html += htmlConceptos;
		$(selectorName).html(html).select2();
	});
}

function buscar() {
	debugger
	let sede_id = $("#cboSedes").val();
	let montoamanecida_id = $("#cboConceptos").val();

	let params = cleanQueryParams({
		sede_id,
		montoamanecida_id
	});

	listarAsignacionesConceptosSede({params});
}


function registrar() {
	let sede_id = $("#cboRegistrarSedes").val();
	let sede_descripcion = $("#cboRegistrarSedes option:selected").text();
	let montoamanecida_id = $("#cboRegistrarConceptos").val();
	let montoamanecida_descripcion = $("#cboRegistrarConceptos option:selected").text();
	let estado = 1;

	let params = {
		sede_descripcion,
		sede_id,
		montoamanecida_id,
		montoamanecida_descripcion,
		estado
	};

	debugger

	ajaxWebService.post(URI_POLICIA_CONCEPTOSEDES, params)
	  .then((response) => {
		  listarAsignacionesConceptosSede();
	  });


}


$().ready(function () {
	listarSedes("#cboSedes");
	listarConceptos("#cboConceptos");
	$("#btnVerTodos").click(listarAsignacionesConceptosSede);
	$("#btnFiltro").click(buscar);
	$("#btnNuevo").click(registrar);
});