Files
old-wiaas-legacy/api-wiaas/client/js/components/orders/orders-utils.service.js
2018-06-11 11:09:35 +02:00

165 lines
6.0 KiB
JavaScript

(function () {
global.dashModule.service('ordersUtilsService', ['$', '$http', '$translate', 'utilsService', ordersUtilsService]);
function ordersUtilsService($, $http, $translate, utilsService) {
let maxDeliveryDate = '';
const earliestInstallationDate = {};
const isNextStepTheOneWanted = {};
const callbackMethods = {};
return {
hasExtraAction,
calculatePrice,
hasAgreement,
setMaximumDeliveryDate,
getEarliestInstallationDateFromDb,
getEarliestInstallationDate,
checkIfIsNextStepWanted,
isComponentDisabled,
registerOrderFunction,
getOrderInfo
};
function hasExtraAction(step) {
return step.stepType === 'extraAction' && step.status === 'in-progress';
}
function calculatePrice(values, units) {
let total = 0;
values.forEach((val) => {
total += parseFloat(val);
});
return units ? total * units : 0;
}
function hasAgreement(packagePayPeriod, servicesContractPeriod) {
return parseInt(packagePayPeriod) > 0 || parseInt(servicesContractPeriod) > 0;
}
function setMaximumDeliveryDate(idOrder, idPackage, earliestIntallationDate) {
const params = $.param({
idOrder,
idPackage,
maxDeliveryDate: earliestIntallationDate
});
if (!maxDeliveryDate) {
maxDeliveryDate = '-';
}
if (earliestIntallationDate && earliestIntallationDate !== '-') {
maxDeliveryDate = earliestIntallationDate;
$http({
method: 'POST',
url: 'orders/api/setEarliestInstallationDateInDb',
data: params
}).then(getMaximumDeliveryDate, utilsService.onHttpError);
}
}
function getMaximumDeliveryDate(response) {
if (typeof response.data !== 'undefined' && Object.keys(response.data).length) {
getEarliestInstallationDateFromDb(response.data.idOrder, response.data.idPackage);
displayMessage(response);
if('callConfirmationInstallationDatesFct' in response.data && response.data.callConfirmationInstallationDatesFct) {
utilsService.executeRegisteredFunction('getConfirmationInstallationDates');
}
}
}
function getEarliestInstallationDateFromDb(idOrder, idPackage) {
const params = $.param({
idOrder,
idPackage,
maxDeliveryDate: maxDeliveryDate[idPackage]
});
$http({
method: 'POST',
url: 'orders/api/getEarliestInstallationDate',
data: params
}).then(setEarliestInstallationDate, utilsService.onHttpError);
}
function setEarliestInstallationDate(response) {
if (typeof response.data !== 'undefined') {
if (response.data.messages) {
displayMessage(response);
}
if (response.data.earliestInstallationDate) {
const paramData = {
idPackage: response.data.idPackage,
minDate: response.data.earliestInstallationDate
};
earliestInstallationDate[response.data.idOrder] = response.data.earliestInstallationDate;
utilsService.executeRegisteredFunction('setMinDateAvailable', paramData);
}
}
}
function getEarliestInstallationDate(idOrder) {
return earliestInstallationDate[idOrder] || '-';
}
function checkIfIsNextStepWanted(idOrder, usedForDirective, stepIds) {
const params = $.param({
idOrder,
stepIds: JSON.stringify(stepIds)
});
$http({
method: 'POST',
url: 'orders/api/checkIfIsNextStepWanted',
data: params
}).then((response) => {
isNextStepWanted(response, idOrder, usedForDirective);
}, utilsService.onHttpError);
}
function isNextStepWanted(response, idOrder, usedForDirective) {
if(typeof response.data !== 'undefined') {
if(!isNextStepTheOneWanted[usedForDirective]) {
isNextStepTheOneWanted[usedForDirective] = {};
}
isNextStepTheOneWanted[usedForDirective][idOrder] = response.data;
}
}
function isComponentDisabled(idOrder, usedForDirective) {
if(isNextStepTheOneWanted[usedForDirective] && isNextStepTheOneWanted[usedForDirective][idOrder]) {
return isNextStepTheOneWanted[usedForDirective][idOrder];
}
return false;
}
function registerOrderFunction(key, showOrderInfo) {
callbackMethods[key] = showOrderInfo;
}
function getOrderInfo() {
const idOrder = global.getParameterByName('idOrder') || 0;
const params = $.param({
idOrder
});
$http({
method: 'POST',
url: 'orders/api/getOrderInfo',
data: params
}).then(callbackMethods.showOrderInfo, utilsService.onHttpError);
}
function displayMessage(response) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
let translatedMessage = $translate.instant('orders.messages.' + messageObj.message);
const messageKey = 'key' in messageObj ? ' ' + messageObj.key : '';
utilsService.displayMessage(messageObj.code, translatedMessage + messageKey);
});
}
}
}
})();