var SUPPORTED_MIME_TYPE = ["pdf", "jpeg", "jpg", "png", "gif", "tiff"];
var SUPPORTED_DOCUMENT_TYPE = ["PieceIdentite"];
var RAD_IDS = ["CNI", "TitreSejour"];
JSAPI.get().registerForComponentChange(
function(formAPI, component, phase) {
if (phase == PHASE_INSERT && OBJECT_TYPE_DOCUMENT == component.getCategory()) {
setTimeout(function() {
JSAPI.get().getLastComponentFormAPI().getActions().registerForActionConfirmation("footer", "create", function(value, executor) {
executor.hold();
JSAPI.get().showLoadingPanel();
if (!callDocumentConformite(component, executor)) {
JSAPI.get().hideLoadingPanel();
executor.resume();
}
});
}, 500);
}
});
function callDocumentConformite (component, executor) {
var documentType = component.getTagValue("TypeDocument");
if (documentType != "" && SUPPORTED_DOCUMENT_TYPE.indexOf(documentType) != -1) {
var fileId = component.getDocumentFiles()[0].getId();
var fileType = component.getDocumentFiles()[0].getFormatCode();
if (isSupportedFormat(fileType)) {
var token = JSAPI.get().getUserAPI().getUserToken();
$.ajax({
type: "GET",
dataType: 'binary',
processData: 'false',
responseType: 'arraybuffer',
url: './../flower-docs-ws/rest/files/tmp/' + fileId + '?token=' + token
}).then(function (response) {
callDocumentConformityService (component, response, fileType, documentType, executor);
}, function (error) {
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError("Impossible de transmettre le fichier pour l'analyse de la conformité. Veuillez contacter votre administrateur technique.");
});
} else {
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError("Le format de fichier n'est pas le format attendu : pdf, jpeg, jpg, png, gif, tiff");
}
return true;
}
return false;
}
function callDocumentConformityService (component, fileContent, fileType, documentType, executor) {
$.ajax({
url: "http://documentConfityServiceUrl",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "POST",
dataType: "json",
complete: function (result) {
if (result.status == 200) {
var token = result.responseJSON.access_token;
extractJSONInformation (component, responseJSON, documentType, executor)
} else {
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError("Impossible de transmettre le fichier pour l'analyse de la conformité. Veuillez contacter votre administrateur technique.");
}
}
});
}
function extractJSONInformation (component, responseJSON, documentType, executor) {
var customerName = component.getTagValue("NomClient");
var document = responseJSON.document;
var type = document.type;
if (RAD_IDS.indexOf(type) != -1) {
if (document.result.errors != undefined && document.result.errors.length != 0) {
var errorMessage = "Le document n'est pas conforme. \n";
for (var i in document.result.errors) {
errorMessage += document.result.errors[i].shortDescription + "\n";
}
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError(errorMessage);
return;
} else {
if (document.customerName == customerName) {
JSAPI.get().hideLoadingPanel();
executor.resume();
return;
}
}
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError("Le document ne concerne pas le client " + customerName);
} else {
JSAPI.get().hideLoadingPanel();
JSAPI.get().getNotificationAPI().sendError("Le document n'est pas une pièce d'identité.");
}
}
function isSupportedFormat(fileType) {
for (var mimeType in SUPPORTED_MIME_TYPE) {
if (fileType.indexOf(SUPPORTED_MIME_TYPE[mimeType]) != -1) {
return true;
}
}
return false;
}