Files
old-wiaas-legacy/api-wiaas/client/js/components/users/link-customers.directive.js
2018-06-11 11:09:35 +02:00

119 lines
4.4 KiB
JavaScript

(function () {
global.dashModule
.directive('linkCustomers', linkCustomersDirective)
.controller('linkCustomersCtrl', ['$scope', '$http', '$', '$translate', 'utilsService', linkCustomersCtrl]);
function linkCustomersDirective() {
return {
restrict: 'E',
templateUrl: 'users/html/linkCustomersTemplate'
};
}
function linkCustomersCtrl($scope, $http, $, $translate, utilsService) {
$scope.getCustomersAndCl = getCustomersAndCl;
$scope.getUserClass = getUserClass;
$scope.customerDragStart = customerDragStart;
$scope.customerDragStop = customerDragStop;
$scope.customerDropped = customerDropped;
$scope.selectCommercialLead = selectCommercialLead;
$scope.updateLinkedCustomers = updateLinkedCustomers;
$scope.customers = [];
$scope.commercialLeads = [];
$scope.selectedCommercialLead = {};
function getCustomersAndCl(){
$http({
method: 'GET',
url: 'users/api/getCustomersAndCl'
}).then(showCustomersAndCl, utilsService.onHttpError);
}
function showCustomersAndCl(response){
if(response.data){
$scope.customers = response.data.customers;
$scope.commercialLeads = response.data.commercialLeads;
$scope.selectedCommercialLead = response.data.commercialLeads[Object.keys(response.data.commercialLeads)[0]] || {};
$scope.customers.forEach(hideLinkedCustomers);
}
}
function selectCommercialLead(selected) {
$scope.selectedCommercialLead = selected;
$scope.customers.forEach(hideLinkedCustomers);
}
function hideLinkedCustomers(curentCustomer) {
let isCustomerInArray = false;
if ($scope.selectedCommercialLead.linkedCustomers) {
isCustomerInArray = $scope.selectedCommercialLead.linkedCustomers.find((customer) => {
return customer.id === curentCustomer.id;
});
}
curentCustomer.isNotLinked = isCustomerInArray ? false : true;
}
function getUserClass(curent) {
return curent === $scope.selectedCommercialLead ? 'selected-user' : '';
}
function customerDragStart(event, ui, selector) {
$('#'+selector).css({
overflow: 'visible',
});
}
function customerDragStop(event, ui, selector) {
$('#'+ selector).css({
'overflow': 'auto'
});
}
function customerDropped(event, ui, dropContainer) {
const dropToSelector = $(ui.helper).attr('drop-to');
const idCustomer = $(ui.helper).attr('id-customer');
if(dropContainer !== dropToSelector){
return;
}
if (dropToSelector === 'linked-customers') {
const dragedCustomer = $scope.customers.find((customer) => {
return customer.id === idCustomer;
});
$scope.selectedCommercialLead.linkedCustomers.push(dragedCustomer);
} else {
const dragedCustomerIndex = $scope.selectedCommercialLead.linkedCustomers.findIndex((customer) => {
return customer.id === idCustomer;
});
$scope.selectedCommercialLead.linkedCustomers.splice(dragedCustomerIndex, 1);
}
$scope.customers.forEach(hideLinkedCustomers);
}
function updateLinkedCustomers(){
const params = $.param({
idCommercialLead: $scope.selectedCommercialLead.id,
customers: JSON.stringify($scope.selectedCommercialLead.linkedCustomers)
});
$http({
method: 'POST',
url: 'users/api/updateLinkedCustomers',
data: params
}).then(updateMessage, utilsService.onHttpError);
}
function updateMessage(response) {
if (typeof response.data.messages !== 'undefined') {
response.data.messages.forEach((messageObj) => {
let translatedMessage = $translate.instant('users.messages.' + messageObj.message);
utilsService.displayMessage(messageObj.code, translatedMessage);
});
}
}
}
})();