119 lines
4.4 KiB
JavaScript
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);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
})();
|