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


const 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 => html += `<option value="${sede.codigo}">${sede.descripcion}</option>`);
		$(`${selectorName}`).html(html);
		$(selectorName).select2();
	});
};


const inicializarInputsModalNuevaTolerancia = () => {
	listarPersonal("#cboPersonal");
	$("#cboPersonal").change(cargarHorarios);
	$("#txtToleranciaLV").bind('input', function (e) {
		if (!$(this).data("previousValue") || $(this).data("previousValue") != $(this).val()) {
			console.log("changed " + $(this).val());
			$(this).data("previousValue", $(this).val());
			let tolerancia = $(this).val();
			let horarioLV = $("#txtHorarioLV").val();
			let nuevoHorarioLV = addMinutes(horarioLV, tolerancia);
			$("#txtNuevoHorarioLV").val(nuevoHorarioLV);
		}

	});
	
	$("#txtToleranciaSabado").bind('input', function (e) {
		if (!$(this).data("previousValue") || $(this).data("previousValue") != $(this).val()) {
			console.log("changed " + $(this).val());
			$(this).data("previousValue", $(this).val());
			let tolerancia = $(this).val();
			let horarioSabado = $("#txtHorarioSabado").val();
			let nuevoHorarioSabado = addMinutes(horarioSabado, tolerancia);
			$("#txtNuevoHorarioSabado").val(nuevoHorarioSabado);
		}

	});
	
	initDatePicker("#dpFechaInicio", "#dpFechaFin");
};

const cargarHorarios = () => {
	let jsonPersonal = $('#cboPersonal').select2('data')[0];
	let horarioLV = jsonPersonal.horarioLV;
	let horarioSabado = jsonPersonal.horarioSabado;
	$("#txtHorarioLV").val(horarioLV);
	$("#txtNuevoHorarioLV").val(horarioLV).attr('min', horarioLV);
	$("#txtHorarioSabado").val(horarioSabado).attr('min', horarioSabado);
	$("#txtNuevoHorarioSabado").val(horarioSabado);
}

const registrarNuevaTolerancia = () => {
	let jsonPersonal = $('#cboPersonal').select2('data')[0];
	let {
		id: trabajador_id,
		nombres: trabajador_nombres,
		apellidos: trabajador_apellidos,
		documento_identidad: trabajador_documentoidentidad,
		horarioLV,
		horarioSabado
	} = jsonPersonal;


	let toleranciaLV = $("#txtToleranciaLV").val();
	let toleranciaSabado = $("#txtToleranciaSabado").val();
	let nuevoHorarioLV = $("#txtNuevoHorarioLV").val();
	let nuevoHorarioSabado = $("#txtNuevoHorarioSabado").val();

	let fechaInicio = $("#dpFechaInicio").val();
	let fechaFin = $("#dpFechaFin").val();
	let observacion = $("#txtObservacion").val();


	let params = {
		trabajador_id,
		trabajador_documentoidentidad,
		trabajador_nombres,
		trabajador_apellidos,
		horarioLV,
		toleranciaLV,
		nuevoHorarioLV,
		horarioSabado,
		toleranciaSabado,
		nuevoHorarioSabado,
		fechaRegistro: "",
		fechaInicio,
		fechaFin,
		observacion,
		estado: 1
	};

	ajaxWebService.post(URI_ADMINISTRATIVOS_TOLERANCIA_INDIVIDUAL, params)
	  .then((response) => {
		  debugger;
		  if (response.status) {
			  swal({
				  type: 'success',
				  title: '¡Tolerancia registrada exitosamente!',
				  showConfirmButton: false,
				  timer: 1500
			  })
			  listarRolesPolicias();
//			  console.log(response.data);
		  } else {
			  swal({
				  type: 'success',
				  title: '¡No ha sido posible registrar la tolerancia!',
				  showConfirmButton: false,
				  timer: 1500
			  })
		  }
	  })
	  .catch((error) => {
		  console.log(error);
	  });


};

const mostrarModalNuevaTolerancia = () => {
	ajaxModal.get("administrativos/tolerancia/individual/registroTolerancia.jsp").then((response) => {
		swal({
			title: '<strong>Nueva Tolerancia</strong>',
//            type: 'info',
			html: response.data,
			showCloseButton: true,
			showCancelButton: true,
			focusConfirm: false,
			confirmButtonText: '<i class="icon-checkmark2"></i> Registrar tolerancia',
			confirmButtonAriaLabel: 'Registrar tolerancia',
			cancelButtonText: '<i class="icon-cross3"></i>Cancelar',
			cancelButtonAriaLabel: 'Thumbs down',
			width: '30%',
			customClass: 'swal2-overflow',
			onOpen: () => {
				inicializarInputsModalNuevaTolerancia();
			}
		}).then((result) => {
			if (result.value) {
				registrarNuevaTolerancia();
			}
		});
	});
};

function addMinutes(time, minsToAdd) {
	function D(J) {
		return (J < 10 ? '0' : '') + J;
	}
	;
	var piece = time.split(':');
	var mins = piece[0] * 60 + +piece[1] + +minsToAdd;

	return D(mins % (24 * 60) / 60 | 0) + ':' + D(mins % 60);
}

$(() => {
	initDatePicker("#dpFechaInicioFiltro", "#dpFechaFinFiltro");
	listarPersonal("#cboPersonalFiltro");
	listarSedes("#cboSedesFiltro");
//	$("#btnMostrarTodo").click(listarAsistencia);
//	$("#btnAplicarFiltro").click(aplicarFiltro);
	$("#btnNuevaTolerancia").click(mostrarModalNuevaTolerancia);
});