var statusPausa = false;
let mamadasPendejas = false;
// =================================================================
// Id del timeout que se ejecutara si el estado de pausa
// tenia un tiempo limite
let idTimeoutTiempoLimite = null;
// =================================================================
// Id del registro de pausa cuando se expira el tiempo
let idReportePausa = '';
// =================================================================
function ocultapausa() {
	$('#codPausa').hide();
	statusCalificacion = false;
	$('#botonPausaCalificar').attr('disabled', true);
}

function pideRazonPausa(id) {
	if (statusPausa) {
		statusPausa = false;
		$.ajax({
			url: MODULOS + 'EstadosPausa/getStatusesSelect',
			type: 'POST',
			dataType: 'text',
			success: function (result) {
				var resp = JSON.parse(result);
				console.log(resp);
				if (resp.Estado == 'ok') {
					$('#codigosPausa').html('');
					if (resp.Registros.length > 0) {
						for (var i = 0; i < resp.Registros.length; i++) {
							if (id == resp.Registros[i].estado) {
								$('#codigosPausa').append(`
									<a 
										href="#" 
										style="padding: 5 px;" 
										class="letraSize col-sm-3  bg-success text-white text-center list-group-item list-group-item-secondary text-wrap" 
										onclick="enviaPausa(
											'${resp.Registros[i].estado}',1,${resp.Registros[i].tiempo_limite},'${resp.Registros[i].requiere_aprovacion}','${resp.Registros[i].cantidad}'
										)"
									>
										${resp.Registros[i].estado}-${resp.Registros[i].nombre}
									</a>`);
							} else {
								$('#codigosPausa').append(`
									<a 
										href="#" 
										style="padding: 5 px;" 
										class="letraSize col-sm-3  botonCalificar text-center list-group-item-action text-wrap" 
										onclick="enviaPausa('${resp.Registros[i].estado}',0,${resp.Registros[i].tiempo_limite},'${resp.Registros[i].requiere_aprovacion}','${resp.Registros[i].cantidad}')"
									>
										${resp.Registros[i].estado}-${resp.Registros[i].nombre}
									</a>
								`);
							}
						}
						if (!id) {
							document
								.getElementById('my_iframe')
								.contentWindow.PauseCodeSelectContent_create(
									'YES'
								);
						}
					} else {
						enviaPausa('PAUSA', 1, -1, '0');
					}
				} else {
					$('#ListaAlert').html(i18n.gettext(resp.Descripcion));
					crearTooltip();
				}
			},
			error: function (error) {
				console.log(error);
			},
		});
	}
}

function pausaAgente() {
	bloquearPlay = false;
	document
		.getElementById('my_iframe')
		.contentWindow.AutoDial_ReSume_PauSe(
			'VDADpause',
			'',
			'',
			'',
			'',
			'',
			'',
			'YES'
		);
	$('#codPausa').show();
	statusPausa = true;
	$('#botonPausaCalificar').attr('disabled', false);
	pideRazonPausa();
}
function truncaPausa(){
	Enpausa=false;
}
function enviaPausa(id, cant, tiempo_limite, requiere_aprovacion,cantidad) {
	/*
		El tiempo_limite determina en segundos cuando un agente a rebasado
		el tiempo limite en que puede estar en pausa. Si el tiempo_limite es
		< 0 la pausa no tendra tiempo limite.
		Si se requiere_aprovacion un supervisor y solo un supervisor
		puede desactivar la pausa, donde se generara un reporte de pausa.
	*/
	console.log(cantidad);
	if (cant == 0) {
		statusPausa = true;
		pideRazonPausa(id);
	} else {
		Enpausa=true;
		let tiempo_quepaso=0;
		let pausa_contador=setInterval(HandleContador,1000);
		function HandleContador(){
			let horas= Math.floor(tiempo_limite/3600);
			let minutos=Math.floor((tiempo_limite%3600)/60);
			let segundos=tiempo_limite%60;
			horas=String(horas).padStart(2,'0');
			minutos=String(minutos).padStart(2,'0');
			segundos=String(segundos).padStart(2,'0');
			$('#pause_time_left').text("TIEMPO RESTANTE DE PAUSA: "+horas+":"+minutos+":"+segundos);
			if(tiempo_limite>0 || cantidad<=0){
				tiempo_limite--;
				tiempo_quepaso++;
			}else{
				Enpausa=false;
			}
			if(!Enpausa){
				$('#pause_time_left').text("");
				$.ajax({
					url: "EstadosPausa/resumePause",
					type: "POST",
					data: {
						usuario: Usuario,
						campana: campanaActual,
						codigoPausa:id,
						tiempo: tiempo_quepaso
					},
					dataType: "text",
					success: function (response) {
						var res = JSON.parse(response);
						if(res.Estado == "ok"){
							console.log("todo bien :)");
						}else{
							console.log("algo salio mal");
							console.log(res.Descripcion);
						}
					},
					error: function(res){
						console.log(res)
					},
				});
				clearInterval(pausa_contador);
				tiempo_quepaso=0;
			}
		}
		document
			.getElementById('my_iframe')
			.contentWindow.PauseCodeSelect_submit(id, 'YES');
		ocultapausa();
		if(cantidad<=0){
			console.log('Tiempo limite de pausa superado');
				Enpausa=false;
				crearRegistroReportePausa(id).then((_) => {
					if (requiere_aprovacion === '1') {
						$('#modalTiempoLimitePausa').modal('show');
						localStorage.setItem('idReportePausa', idReportePausa);
					}
					idTimeoutTiempoLimite = null;
				});
		}
		if (tiempo_limite > 0) {
			idTimeoutTiempoLimite = setTimeout(() => {
				console.log('Tiempo limite de pausa superado');
				Enpausa=false;
				crearRegistroReportePausa(id).then((_) => {
					if (requiere_aprovacion === '1') {
						$('#modalTiempoLimitePausa').modal('show');
						localStorage.setItem('idReportePausa', idReportePausa);
					}
					idTimeoutTiempoLimite = null;
				});
			}, tiempo_limite * 1000);
		} else {
			idTimeoutTiempoLimite = null;
			Enpausa=false;
		}
	}
}

function nextDialMan() {
	clearTimeout(idTimeoutTiempoLimite);
	bloquearRedial = true;
	if (bln_dial_block) {
		return;
	}
	bln_dial_block = true;
	if (!enLlamada) {
		if (!bloquearPlay || mamadasPendejas != 2) {
			mamadasPendejas = 2;
			bloquearPlay = true;
			document
				.getElementById('my_iframe')
				.contentWindow.AutoDial_ReSume_PauSe(
					'VDADpause',
					'',
					'',
					'',
					'',
					'',
					'',
					'YES'
				);
			document
				.getElementById('my_iframe')
				.contentWindow.PauseCodeSelectContent_create('YES');
			document
				.getElementById('my_iframe')
				.contentWindow.PauseCodeSelect_submit('NEXT', 'YES');
			setTimeout(() => {
				if (!enLlamada) {
					document
						.getElementById('my_iframe')
						.contentWindow.ManualDialNext(
							'',
							'',
							'',
							'',
							'',
							'0',
							'',
							'',
							'YES'
						);
				}
			}, 2000);
			otraFlag = true;
		} else {
			alert(
				'Acabas de presionar el boton de play, espera por la llamada'
			);
		}
	}
}

function playAgente() {
	clearTimeout(idTimeoutTiempoLimite);
	bandera_pausa=false;
	if (!enLlamada) {
		if (!bloquearPlay || mamadasPendejas != 1) {
			Enpausa=false;
			bloquearPlay = true;
			mamadasPendejas = 1;
			if (Manual === 'MANUAL') {
				nextDialMan();
			} else {
				document
					.getElementById('my_iframe')
					.contentWindow.AutoDial_ReSume_PauSe(
						'VDADready',
						'',
						'',
						'',
						'',
						'',
						'',
						'YES'
					);
				// Eliminar el timeout por que ya se quito la pausa
			}
		} else {
			alert(
				'Acabas de presionar el boton de play, espera por la llamada'
			);
		}
	}
}

function detenerAgente() {
	$('#btnPlay').addClass('disabled');
	$('#btnPause').addClass('disabled');
	$('#btnRecord').html('<i class="fas fa-dot-circle controles"></i>');
}

// Funcion para hacer peticiones
function $_post(url, data) {
	return $.post(MODULOS + url, data)
		.then((r) => {
			if (r.Estado === 'ok') {
				return r;
			} else {
				throw r;
			}
		})
		.catch((e) => {
			throw e;
		})
		.catch((e) => {
			console.error(e);
			if (!e.Descripcion) {
				throw {
					Descripcion: 'Error desconocido',
				};
			}
			throw e;
		});
}

// Funciona para hacer el registro de reporte del estado de pausa
function crearRegistroReportePausa(pauseCode) {
	return $_post('HomeAgente/createPauseReport', { pauseCode })
		.then((r) => {
			idReportePausa = r.idReport;
		})
		.catch((e) => {});
}

// Funcion para cuando se cierra el modal si se requiere aprovacion del
// del supervisor
function reanudarAgenteTimepoLimiteExcedido() {
	const data = {
		usuario: $('#usuarioSupervisorPausa').val(),
		password: $('#passwordSupervisorPausa').val(),
		idReport: idReportePausa,
	};
	return $_post('HomeAgente/checkSupervisor', data).then(() => {
		$('#passwordSupervisorPausa').val('');
		$('#usuarioSupervisorPausa').val('');
	}).catch((e) => {
		$('#passwordSupervisorPausa').val('');
		$('#usuarioSupervisorPausa').val('');
		throw e;
	});
}

$('#iniciarSupervisor').click((e) => {
	const m_error = $('#mensajeErrorTiempoLimitePausa');
	reanudarAgenteTimepoLimiteExcedido()
		.then((_) => {
			$('#modalTiempoLimitePausa').modal('hide');
			m_error.text('');
			m_error.hide();
			localStorage.removeItem('idReportePausa');
		})
		.catch((e) => {
			m_error.text(e.Descripcion);
			m_error.show();
		});
});

// Mostrar modal si reinicio pantalla
if (localStorage.getItem('idReportePausa')) {
	idReportePausa = localStorage.getItem('idReportePausa')
	$('#modalTiempoLimitePausa').modal('show');
}
