Files
old-wiaas-legacy/api-wiaas/client/js/components/orders/extra-actions/schedule-meeting.directive.js
2018-06-11 11:09:35 +02:00

148 lines
5.2 KiB
JavaScript

(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);
}
}
})();