179 lines
6.6 KiB
JavaScript
179 lines
6.6 KiB
JavaScript
(function () {
|
|
global.dashModule
|
|
.controller('validateQuestionnaireCtrl', ['$scope', '$', '$http', '$translate', 'Upload', 'utilsService', validateQuestionnaireCtrl])
|
|
.directive('validateQuestionnaire', [validateQuestionnaireDirective]);
|
|
|
|
function validateQuestionnaireDirective() {
|
|
return {
|
|
restrict: 'E',
|
|
templateUrl: 'orders/html/validateQuestionnaireTemplate'
|
|
};
|
|
}
|
|
|
|
function validateQuestionnaireCtrl($scope, $, $http, $translate, Upload, utilsService) {
|
|
$scope.customerDocuments = [];
|
|
$scope.getDocumentsAndQuestionnaireComments = getDocumentsAndQuestionnaireComments;
|
|
$scope.getValidationStatus = getValidationStatus;
|
|
$scope.validateQuestionaire = validateQuestionaire;
|
|
$scope.uploadFile = uploadFile;
|
|
$scope.needsUplaod = needsUplaod;
|
|
$scope.isQuestionaireInvalid = {};
|
|
$scope.isValidationDialogVisible = {
|
|
validated : {},
|
|
invalid : {}
|
|
};
|
|
$scope.showHideValidationDialog = showHideValidationDialog;
|
|
$scope.showInvalidTextbox = showInvalidTextbox;
|
|
$scope.waitingResponseFromCustomer = {};
|
|
$scope.getInvalidReasonsHeader = getInvalidReasonsHeader;
|
|
$scope.questionnaireCommentsExist = false;
|
|
const step = $scope.$parent.step;
|
|
const idOrder = step.idOrder;
|
|
const idProcessStep = step.idProcessStep;
|
|
const stepInfo = {
|
|
idOrder,
|
|
idProcess: step.idProcess
|
|
};
|
|
|
|
function getDocumentsAndQuestionnaireComments() {
|
|
getCustomerDocuments();
|
|
getQuestionnaireComments();
|
|
}
|
|
|
|
function getCustomerDocuments() {
|
|
const params = $.param({
|
|
idOrder,
|
|
documentType: 'orderQuestionaire'
|
|
});
|
|
|
|
$http({
|
|
method: 'POST',
|
|
data: params,
|
|
url: 'v2/orders/api/getOrderDocumentsPerType'
|
|
}).then(setCustomerDocuments, utilsService.onHttpError);
|
|
}
|
|
|
|
function showHideValidationDialog(fctParams) {
|
|
if(!$scope.waitingResponseFromCustomer[fctParams.idDocument]) {
|
|
$scope.$evalAsync(() => {
|
|
$scope.isValidationDialogVisible[fctParams.validationStatus][fctParams.idDocument] = !$scope.isValidationDialogVisible[fctParams.validationStatus][fctParams.idDocument];
|
|
});
|
|
}
|
|
}
|
|
|
|
function checkIfAllValid() {
|
|
let allValid = true;
|
|
Object.keys($scope.customerDocuments).forEach(key => {
|
|
const packageDocuments = $scope.customerDocuments[key];
|
|
packageDocuments.forEach((doc) => {
|
|
if (doc.validation !== 'validated') {
|
|
allValid = false;
|
|
}
|
|
$scope.waitingResponseFromCustomer[doc.idDocument] = doc.validation !== 'not-validated';
|
|
});
|
|
});
|
|
|
|
stepInfo.isNextButtonDisabled = !allValid;
|
|
utilsService.executeRegisteredFunction('isNextBtnDisabled', stepInfo);
|
|
}
|
|
|
|
function setCustomerDocuments(response) {
|
|
if (response.data && response.data.documents) {
|
|
$scope.customerDocuments = response.data.documents;
|
|
checkIfAllValid();
|
|
}
|
|
}
|
|
|
|
function getValidationStatus(status, documentValidation) {
|
|
return status === documentValidation;
|
|
}
|
|
|
|
function validateQuestionaire(fctParams) {
|
|
const params = $.param({
|
|
idOrder,
|
|
idPackage: fctParams.idPackage,
|
|
idDocument: fctParams.idDocument,
|
|
idProcessStep,
|
|
validationStatus: fctParams.validationStatus,
|
|
invalidQuestionaireReason: $scope.invalidQuestionaireReason
|
|
});
|
|
|
|
if (!$scope.waitingResponseFromCustomer[fctParams.idDocument]) {
|
|
$http({
|
|
method: 'POST',
|
|
data: params,
|
|
url: 'orders/api/validateQuestionaire'
|
|
}).then(displayMessage, utilsService.onHttpError);
|
|
}
|
|
}
|
|
|
|
function displayMessage(response) {
|
|
if (typeof response.data.messages !== 'undefined') {
|
|
response.data.messages.forEach((messageObj) => {
|
|
const translatedMessage = $translate.instant('orders.messages.' + messageObj.message);
|
|
utilsService.displayMessage(messageObj.code, translatedMessage);
|
|
|
|
if (messageObj.code === 'success') {
|
|
$scope.invalidQuestionaireReason = '';
|
|
$scope.isQuestionaireInvalid = {};
|
|
getDocumentsAndQuestionnaireComments();
|
|
}
|
|
|
|
if (messageObj.message === 'REASON_EMPTY') {
|
|
$('#invalid-questionaire-comment').focus();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function needsUplaod(validation) {
|
|
return validation === 'invalid';
|
|
}
|
|
|
|
function uploadFile(file, idDocument, idPackage) {
|
|
Upload.upload({
|
|
url: 'orders/api/reUploadQuestionaire',
|
|
method: 'POST',
|
|
file: file,
|
|
data: {
|
|
idPackage,
|
|
idOrder,
|
|
idDocument
|
|
}
|
|
}).then(displayMessage, utilsService.onHttpError);
|
|
}
|
|
|
|
function showInvalidTextbox(idDocument) {
|
|
$scope.isQuestionaireInvalid[idDocument] = (!$scope.isQuestionaireInvalid[idDocument] && !$scope.waitingResponseFromCustomer[idDocument]);
|
|
}
|
|
|
|
function getQuestionnaireComments() {
|
|
const params = $.param({
|
|
idOrder,
|
|
idProcessStep,
|
|
commentType: 'invalidQuestionnaireComment'
|
|
});
|
|
|
|
$http({
|
|
method: 'POST',
|
|
url: 'v2/orders/api/getCommentsByType',
|
|
data: params
|
|
}).then(setQuestionnaireComments, utilsService.onHttpError);
|
|
}
|
|
|
|
function setQuestionnaireComments(response) {
|
|
if (typeof response.data !== 'undefined') {
|
|
if (response.data.messages) {
|
|
displayMessage(response);
|
|
}
|
|
$scope.invalidQuestionaireComments = response.data;
|
|
$scope.questionnaireCommentsExist = $scope.invalidQuestionaireComments.length > 0;
|
|
}
|
|
}
|
|
|
|
function getInvalidReasonsHeader() {
|
|
return $translate.instant('orders.tables.extra.INVALID_REASONS');
|
|
}
|
|
}
|
|
})();
|