Initial commit

This commit is contained in:
Senad Uka
2018-06-11 11:09:35 +02:00
commit ed7df7b11f
1954 changed files with 483354 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
(function () {
global.dashModule
.controller('chooseInstallationCtrl', ['$scope', '$', '$http', '$translate', 'utilsService', chooseInstallationCtrl])
.directive('chooseInstallation', [chooseInstallationDirective]);
function chooseInstallationDirective() {
return {
restrict: 'E',
templateUrl: 'orders/html/chooseInstallationTemplate'
};
}
function chooseInstallationCtrl($scope, $, $http, $translate, utilsService) {
const step = $scope.$parent.step;
const idOrder = step.idOrder || 0;
const idPackage = step.idPackage || 0;
$scope.saveInstallationForPackage = saveInstallationForPackage;
$scope.getInstallCompaniesForPackage = getInstallCompaniesForPackage;
$scope.installCompany = {};
$scope.multipleInstallCompanies = false;
function getInstallCompaniesForPackage(step) {
const params = $.param({
idOrder,
idPackage
});
$http({
method: 'POST',
data: params,
url: 'orders/api/getInstallCompaniesForPackage'
}).then((response) => {
setInstallationCompanies(response, step);
}, utilsService.onHttpError);
}
function setInstallationCompanies(response, step) {
const availableInstallationCompanies = response.data.available;
const selectedInstallationCompany = response.data.selected;
if (response.data && availableInstallationCompanies.length) {
if (availableInstallationCompanies.length === 1) {
$scope.multipleInstallCompanies = false;
step.installationCompany = availableInstallationCompanies[0];
} else {
$scope.multipleInstallCompanies = true;
if (selectedInstallationCompany.length > 0) {
step.installationCompany = selectedInstallationCompany[0];
}
step.installCompanies = availableInstallationCompanies;
}
}
}
function saveInstallationForPackage(step) {
const params = $.param({
idOrder,
idPackage,
idInstallation: step.installationCompany.id
});
$http({
method: 'POST',
data: params,
url: 'orders/api/saveInstallationCompany'
}).then(showConfirmationMessage, utilsService.onHttpError);
}
function showConfirmationMessage(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);
});
}
}
}
})();

View File

@@ -0,0 +1,188 @@
(function () {
global.dashModule
.controller('customerAcceptanceCtrl', ['$scope', '$', '$http', '$translate', 'Upload', 'utilsService', customerAcceptanceCtrl])
.directive('customerAcceptance', [customerAcceptanceDirective]);
function customerAcceptanceDirective() {
return {
restrict: 'E',
templateUrl: 'orders/html/customerAcceptanceTemplate'
};
}
function customerAcceptanceCtrl($scope, $, $http, $translate, Upload, utilsService) {
const step = $scope.$parent.step;
const idOrder = step.idOrder;
const idProcess = step.idProcess;
const stepInfo = {
idOrder,
idProcess,
isNextButtonDisabled: true
};
$scope.getCustmerAcceptance = getCustmerAcceptance;
$scope.getDueDateClass = getDueDateClass;
$scope.uploadFile = uploadFile;
$scope.acceptDeclineInstallation = acceptDeclineInstallation;
$scope.getStatusIcon = getStatusIcon;
$scope.acceptance = {};
$scope.isInstallationNotAccepted = {};
$scope.showHideDialog = showHideDialog;
$scope.showDeclineInstallation = showDeclineInstallation;
$scope.isAcceptInstallationDisabled = false;
$scope.isDeclineInstallationDisabled = false;
$scope.isInstallationDeclined = {};
$scope.isDialogVisible = {};
$scope.getAcceptanceClass = getAcceptanceClass;
$scope.showCustomerAcceptance = showCustomerAcceptance;
$scope.getCustomerAcceptanceDescription = getCustomerAcceptanceDescription;
$scope.removeAcceptanceDocument = removeAcceptanceDocument;
function getCustmerAcceptance() {
const params = $.param({
idOrder
});
$http({
method: 'POST',
data: params,
url: 'orders/api/getCustomerAcceptance'
}).then(setCustomerAcceptance, utilsService.onHttpError);
}
function setCustomerAcceptance(response) {
if (response.data && Object.keys(response.data).length) {
$scope.acceptance = response.data[idOrder];
stepInfo.isNextButtonDisabled = parseInt($scope.acceptance.customerAccepted) === 0;
$scope.isAcceptInstallationDisabled = parseInt($scope.acceptance.customerAccepted) === 1;
$scope.isDeclineInstallationDisabled = parseInt($scope.acceptance.customerAccepted) === -1;
}
utilsService.executeRegisteredFunction('isNextBtnDisabled', stepInfo);
}
function getDueDateClass() {
if ($scope.acceptance.daysDiff <= 0) {
return 'alert-danger';
}
if ($scope.acceptance.daysDiff <= 3) {
return 'alert-warning';
}
return 'alert-info';
}
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') {
getCustmerAcceptance();
}
if (messageObj.message === 'INSTALLATION_DECLINED') {
showDeclineInstallation();
$scope.installationDeclinedReason = '';
$scope.isDeclineInstallationDisabled = true;
}
});
}
}
function uploadFile(file) {
Upload.upload({
url: 'orders/api/uploadAcceptanceDocument',
method: 'POST',
file: file,
data: {
idPackage,
idOrder
}
}).then(displayMessage, utilsService.onHttpError);
}
function acceptDeclineInstallation(actionType) {
const params = $.param({
idOrder,
idPackage,
actionType,
declineReason: $scope.installationDeclinedReason
});
if ((actionType === 'accept' && !$scope.isAcceptInstallationDisabled) ||
(actionType === 'decline' && !$scope.isDeclineInstallationDisabled)) {
$http({
method: 'POST',
data: params,
url: 'orders/api/acceptDeclineInstallation'
}).then(displayMessage, utilsService.onHttpError);
}
}
function getStatusIcon(status) {
let icon = 'time';
if (parseInt(status) === -1) {
icon = 'remove';
} else if (parseInt(status) === 1) {
icon = 'ok';
}
return icon;
}
function showHideDialog(actionType) {
$scope.$evalAsync(() => {
$scope.isDialogVisible[actionType] = !$scope.isDialogVisible[actionType];
});
}
function showDeclineInstallation() {
if (!$scope.isDeclineInstallationDisabled) {
$scope.$evalAsync(() => {
$scope.isInstallationDeclined[idPackage] = !$scope.isInstallationDeclined[idPackage];
});
}
}
function getAcceptanceClass(acceptanceStatus) {
let cssClass = 'warning';
if (parseInt(acceptanceStatus) === -1) {
cssClass = 'danger';
} else if (parseInt(acceptanceStatus) === 1) {
cssClass = 'success';
}
return cssClass;
}
function showCustomerAcceptance(acceptance) {
return acceptance !== 0;
}
function getCustomerAcceptanceDescription(customerAcceptance) {
let acceptanceStatus = 'WAITING';
if (parseInt(customerAcceptance) === -1) {
acceptanceStatus = 'DECLINED';
} else if (parseInt(customerAcceptance) === 1) {
acceptanceStatus = 'ACCEPTED';
}
return $translate.instant('orders.messages.CUSTOMER_INSTALLATION_' + acceptanceStatus);
}
function removeAcceptanceDocument(idDocument) {
const params = $.param({
idOrder,
idPackage,
idDocument
});
$http({
method: 'POST',
data: params,
url: 'orders/api/removeOrderDocument'
}).then(displayMessage, utilsService.onHttpError);
}
}
})();

View File

@@ -0,0 +1,96 @@
(function () {
global.dashModule
.controller('procurementCtrl', ['$scope', '$', '$http', '$translate', 'Upload', 'utilsService', 'ordersUtilsService', procurementCtrl])
.directive('procurement', [procurementDirective]);
function procurementDirective() {
return {
restrict: 'E',
templateUrl: 'orders/html/procurementTemplate'
};
}
function procurementCtrl($scope, $, $http, $translate, Upload, utilsService, ordersUtilsService) {
const step = $scope.$parent.step;
const idOrder = step.idOrder;
$scope.getSuppliersByPackageOrder = getSuppliersByPackageOrder;
$scope.uploadFile = uploadFile;
$scope.removeOrderDocument = removeOrderDocument;
$scope.isDialogVisible = {};
$scope.showHideDialog = showHideDialog;
$scope.selectPackage = selectPackage;
$scope.selectedPackage = {};
function selectPackage(packageObj, idSupplier){
$scope.selectedPackage[idSupplier] = packageObj;
}
function getSuppliersByPackageOrder() {
const params = $.param({
idOrder,
documentType: 'configuration'
});
$http({
method: 'POST',
data: params,
url: 'orders/api/getSuppliersByPackageOrder'
}).then(setProductEstimations, utilsService.onHttpError);
}
function setProductEstimations(response) {
if (response.data) {
$scope.suppliersData = response.data;
$.each($scope.suppliersData, (name, details) => {
details.documents.forEach(docDetails => {
$scope.isDialogVisible[docDetails.idDocument] = false;
});
});
}
}
function uploadFile(file, idSupplier) {
Upload.upload({
url: 'orders/api/uploadConfigurationDocument',
method: 'POST',
file: file,
data: {
idPackage : $scope.selectedPackage[idSupplier] && $scope.selectedPackage[idSupplier].idPackage || 0,
idOrder,
idSupplier
}
}).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);
getSuppliersByPackageOrder();
ordersUtilsService.getOrderInfo();
});
}
}
function removeOrderDocument(document) {
const params = $.param({
idOrder,
idPackage: document.idPackage,
idDocument: document.idDocument
});
$http({
method: 'POST',
data: params,
url: 'orders/api/removeOrderDocument'
}).then(displayMessage, utilsService.onHttpError);
}
function showHideDialog(idDocument) {
$scope.$evalAsync(() => {
$scope.isDialogVisible[idDocument] = !$scope.isDialogVisible[idDocument];
});
}
}
})();

View File

@@ -0,0 +1,147 @@
(function () {
global.dashModule
.controller('scheduleMeetingCtrl', ['$scope', '$', '$http', '$translate', 'utilsService', scheduleMeetingCtrl])
.directive('scheduleMeeting', [scheduleMeetingDirective]);
function scheduleMeetingDirective() {
return {
restrict: 'E',
templateUrl: 'orders/html/scheduleMeetingTemplate'
};
}
function scheduleMeetingCtrl($scope, $, $http, $translate, utilsService) {
$scope.updateScheduledDates = updateScheduledDates;
$scope.getScheduledDates = getScheduledDates;
$scope.addNewSchedule = addNewSchedule;
$scope.getIcon = getIcon;
$scope.canNotEditDate = canNotEditDate;
$scope.changeScheduleStatus = changeScheduleStatus;
$scope.parentStep = $scope.$parent.step;
const stepInfo = {
isNextButtonDisabled: true,
idOrder: $scope.$parent.step.idOrder,
idPackage: $scope.$parent.step.idPackage,
idProcess: $scope.$parent.step.idProcess
};
utilsService.executeRegisteredFunction('isNextBtnDisabled', stepInfo);
function getScheduledDates(step) {
const params = $.param({
idOrder: step.idOrder,
idPackage: step.idPackage,
idProcessStep: step.idProcessStep || 0
});
$http({
method: 'POST',
url: 'orders/api/getScheduledDates',
data: params
}).then((response) => {
setScheduleDates(response, step);
}, utilsService.onHttpError);
}
function setScheduleDates(response, step) {
if (response.data && response.data.length) {
step.scheduledDates = response.data;
} else {
addNewSchedule(step);
}
checkIfDateConfirmed(step);
}
function addNewSchedule(step) {
if (!step.scheduledDates) {
step.scheduledDates = [];
}
step.scheduledDates.push((() => {
return {
idSchedule: 0,
isDateConfirmed : 0,
scheduledDate: '',
idPackage: step.idPackage,
idProcessStep: step.idProcessStep
};
})());
}
function updateScheduledDates(newDate, data) {
const params = $.param({
idOrder: data.step.idOrder,
idPackage: data.step.idPackage,
idProcess: data.step.idProcess,
idProcessStep: data.step.idProcessStep || 0,
idSchedule: data.scheduleDate.idSchedule,
newDate: newDate,
});
$http({
method: 'POST',
url: 'orders/api/updateScheduledDates',
data: params
}).then((response) => {
showConfirmationMessage(response, data.step);
}, utilsService.onHttpError);
}
function showConfirmationMessage(response, step) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
const key = messageObj.key ? $translate.instant('orders.messages.' + messageObj.key) : '';
let translatedMessage = $translate.instant('orders.messages.' + messageObj.message);
translatedMessage = key !== '' ? key + ': ' + translatedMessage : translatedMessage;
utilsService.displayMessage(messageObj.code, translatedMessage);
if (messageObj.code === 'success') {
getScheduledDates(step);
}
});
}
}
function getIcon(status){
const statusesIcons = {
pending: 'time',
accepted: 'ok',
declined: 'ban-circle'
};
return statusesIcons[status];
}
function canNotEditDate(scheduleDate){
return parseInt(scheduleDate.isDateConfirmed) !== 0;
}
function changeScheduleStatus(scheduleDate, status, step){
const params = $.param({
idSchedule : scheduleDate.idSchedule,
idOrder: step.idOrder,
idPackage: step.idPackage,
actionCode: step.actionCode,
status
});
$http({
method: 'POST',
url: 'orders/api/updateScheduleDateStatus',
data: params
}).then((response) => {
showConfirmationMessage(response, step);
}, utilsService.onHttpError);
}
function checkIfDateConfirmed(step){
let isConfirmed = false;
step.scheduledDates.forEach((date) => {
if(date.isDateConfirmed && parseInt(date.isDateConfirmed) === 1){
isConfirmed = true;
}
});
stepInfo.isNextButtonDisabled = !isConfirmed;
utilsService.executeRegisteredFunction('isNextBtnDisabled', stepInfo);
}
}
})();

View File

@@ -0,0 +1,178 @@
(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');
}
}
})();