/**
* Funcion para refrescar el captcha
* @param element Recibe el parametro
*/
function refresh_captcha(element) {
$form = $(element).parents('form');
var url = location.protocol + "//" + window.location.hostname + ":" + location.port + "/captcha/refresh/";
$.getJSON(url, {}, function(json) {
$form.find('input[name="captcha_0"]').val(json.key);
$form.find('img.captcha').attr('src', json.image_url);
});
return false;
}
/**
* Función para obtener los usuarios de un evento
*/
function get_event_user() {
var modal = false;
var pasaporte = $('#id_pasaporte').val();
if (pasaporte!='') {
var routes = $(location).attr('pathname').split('/');
var pk = routes[routes.length-1];
var url = URL_USUARIO_EVENTO+pk+"/"+pasaporte;
$.getJSON(url, function(data){
if (Object.keys(data).length > 0) {
construir_datos(data);
}
else{
simple_modal('Lo sentimos, no esta registrado para firmar');
}
}).fail(function(jqxhr, textStatus, error) {
simple_modal('Petición fállida' + textStatus + ", " + error);
})
}
else{
simple_modal('Debe ingresar un pasaporte');
}
}
/**
* Función para crear un modal sencillo
*/
function simple_modal(mensaje) {
MaterialDialog.alert(
mensaje,
{
title:'Alerta',
buttons:{
close:{
text:'cerrar',
className:'blue',
}
}
}
);
}
/**
* Función para construir la data del participante
* @param data Recibe los datos para crear la lista
*/
function construir_datos(data) {
firma = data.firmo;
data = data.datos;
$('#datos_paricipante').html('');
html = '
'
html += '- Nombre: '+data.nombres+'
';
html += '- Apellido: '+data.apellidos+'
';
html += '- Pasaporte: '+data.pasaporte+'
';
html += '- Correo: '+data.correo+'
';
html += '
';
html += '
';
if (firma==true) {
html += 'Ya firmó este documento
'
}
else{
html += '';
html += 'mode_edit Firmar';
}
$('#datos_paricipante').html(html);
}
/**
* Función para obtener el certificado del participante
* @param fileId Recibe el id del documento
*/
function ObtenerCertificadoFirmanteMultiples(fileId){
var xPos = yPos= signaturePage = "";
var lastSignature = false;
var routes = $(location).attr('pathname').split('/');
var pk = routes[routes.length-1];
$.ajax({
type: 'GET',
async: false,
url:URL_ULTIMO_FIRMANTE+pk,
success: function(datos){
if (datos.valid==true) {
xPos = datos.data.posX;
yPos = datos.data.posY;
signaturePage = datos.data.page;
lastSignature = true;
}
window.hwcrypto.getCertificate({lang: "en"}).then(
function(response) {
var cert = response;
var parameters = "";
parameters = JSON.stringify({
"fileId":fileId,
"certificate":cert.hex,
"reason":"Certificado",
"location":"RedGealc",
"contact":"RedGealc",
"signatureVisible":"false",
"signaturePage": signaturePage,
"xPos": xPos,
"yPos": yPos,
"lastSignature":lastSignature
});
// ahora llamar al ajax de obtener la resena del pdf
ObtenerHashPDFServerMultiples(parameters, cert);
},
function(err) {
var error;
if(err == "Error: user_cancel") {
error = "El usuario cancelo la operación";
}
else if(err == "Error: no_certificates") {
error = "No hay certificado disponible";
}
else if(err == "Error: no_implementation") {
error = "No hay soporte para el manejo del certificado";
}
simple_modal(error);
}
);
},
error: function(jqXHR, textStatus, errorThrown){
console.log('error: ' + textStatus);
}
});
}
/**
* Función para obtener el hash y procesar la informacion
* @param parameters Recibe los parametros
* @param cert Recibe los certificados
*/
function ObtenerHashPDFServerMultiples(parameters,cert){
$.ajax({
type: 'POST',
contentType: 'application/json',
url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfsqr",
dataType: "json",
data: parameters,
xhrFields: {withCredentials: true},
headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
success: function(data, textStatus, jqXHR){
var json_x = data;
var hash = json_x['hash'];
var hashtype = "SHA-256";
var lang = "eng";
//Procesa la información
window.hwcrypto.sign(cert, {type: hashtype, hex: hash}, {lang: lang}).then(
function(signature) {
FinalizarFirmaMultiples(signature.hex);
},
function(err) {
var error;
if(err == "Error: user_cancel") {
error = "El usuario cancelo la operación";
}
else if(err == "Error: no_certificates") {
error = "No hay certificado disponible";
}
else if(err == "Error: no_implementation") {
error = "No hay soporte para el manejo del certificado";
}
simple_modal(error);
});
},
error: function(jqXHR, textStatus, errorThrown){
console.log('ajax error function: ' + jqXHR.responseText);
}
});
}
/**
* Función para enviar la firma al servidor
* @param signature Recibe la firma
*/
function FinalizarFirmaMultiples(signature){
$.ajax({
type: 'POST',
contentType: 'application/json',
url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/pdfs/resenas",
dataType: 'json',
data: JSON.stringify({"signature":signature}),
xhrFields: {withCredentials: true},
headers: {"Authorization":"Basic YWRtaW46YWRtaW4="},
success: function(data, textStatus, jqXHR){
actualizar_participante(data['signedFileId']);
},
error: function(jqXHR, textStatus, errorThrown){
console.log('error en pdfs/resenas: ' + textStatus);
}
});
}
/**
* Función para actualizar los datos del participante
* @param id_documento Recibe el id del documento
*/
function actualizar_participante(id_documento) {
var pasaporte = $('#id_pasaporte').val();
var routes = $(location).attr('pathname').split('/');
var pk = routes[routes.length-1];
$.post(URL_ACTUALIZAR_PARTICIPACION,{'event_id':pk,'pasaporte':pasaporte,'serial':id_documento})
.done(function(data){
if (data.validate==true) {
simple_modal(data.mensaje);
$('#firmar').remove();
}
else{
simple_modal(data.mensaje);
}
})
.fail(function(err){
console.log(err);
});
}