Initial commit
This commit is contained in:
118
api-wiaas/client/js/components/users/link-customers.directive.js
Normal file
118
api-wiaas/client/js/components/users/link-customers.directive.js
Normal file
@@ -0,0 +1,118 @@
|
||||
(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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user