function FcardFacial() { /** * Mensagens de erro */ const ErrorMessages = { 'Bad Resolution' : 'Baixa resolução', 'Face not detected' : 'Rosto não encontrado', 'Low Sharpness' : 'Nitidez baixa', 'Hat or Cap Detected' : 'Boné ou Chapéu detectado, por favor remova-o.', 'Multiple faces' : 'Mais de um rosto encontrado' }; /** * @namespace */ const FcardFacial = {}; /** * Envia a foto de fato para backend * @param {string} name * @param {string} document * @param {inputfile} file * @param {function} onSuccess * @param {function} onError */ FcardFacial.upload = function upload( name, document, file, onSuccess, onError) { const formData = new FormData(); formData.append('name', name); formData.append('document', document); formData.append('photo', file); $.ajax({ url: '/order/register-facial-photo', type: 'POST', data: formData, contentType: false, processData: false, cache: false, success: function(data) { let errorMessage; if( !data.status ) { // Para facilitar tratamento de erro switch(data.error){ case 'duplicate-photo': errorMessage = 'Este usuário já enviou uma foto.'; if( onSuccess ) { onSuccess(); } break; case 'birth-date': errorMessage = 'Data de nascimento inválida.'; break; case 'invalid-photo': if(data.message) { errorMessage = 'Foto Inválida: ' + (ErrorMessages[data.message] || data.message); } else { errorMessage = 'Esta não é uma foto válida, por favor tente novamente'; } break; case 'invalid-request': errorMessage = 'Por favor verifique os dados'; break; default: errorMessage = 'Ocorreu um erro no envio'; break; } toastr.error(errorMessage); // Chama if( onError ) { onError( data ); } return; } toastr.success('Upload realizado com successo!'); if( onSuccess ) { onSuccess(); } }, error: function(data) { // Erro no request toastr.error('Ocorreu um erro no envio, por favor tente novamente mais tarde.'); if( onError ) { onError( data ); } } }); }; /** * Verifica se o ingresso já tem foto capturada * @param {number} ticketId * @param {number} orderId * @param {function} callback */ FcardFacial.checkFacialTicketStatus = function checkFacialTicketStatus(ticketId, orderId, callback) { $.ajax({ url : '/order/check-facial-ticket', method : 'get', data : { orderId : orderId, ticketId : ticketId, }, dataType: 'json', success : callback }); }; return FcardFacial; } fcardFacial = new FcardFacial();