Initial commit
This commit is contained in:
189
api-wiaas/client/js/components/users/create-user.directive.js
Normal file
189
api-wiaas/client/js/components/users/create-user.directive.js
Normal file
@@ -0,0 +1,189 @@
|
||||
(function() {
|
||||
global.dashModule.directive('createUser', createUserDirective).controller('createUserCtrl', [
|
||||
'$scope',
|
||||
'$',
|
||||
'$http',
|
||||
'$translate',
|
||||
'utilsService',
|
||||
createUserCtrl
|
||||
]);
|
||||
|
||||
function createUserDirective() {
|
||||
return {restrict: 'E', templateUrl: 'users/html/createUserTemplate'};
|
||||
}
|
||||
|
||||
function createUserCtrl($scope, $, $http, $translate, utilsService) {
|
||||
let commercialLeadKeyDropped;
|
||||
let listSelector;
|
||||
$scope.isSelectCLVisible = isSelectCLVisible;
|
||||
$scope.info = {};
|
||||
$scope.roles = [];
|
||||
$scope.selectedUserType = '';
|
||||
$scope.startEventStyle = startEventStyle;
|
||||
$scope.endEventStyle = endEventStyle;
|
||||
$scope.droppedCommercialLead = droppedCommercialLead;
|
||||
$scope.saveUserInDB = saveUserInDB;
|
||||
$scope.getUserTypes = getUserTypes;
|
||||
$scope.checkIfCLIsNeeded = checkIfCLIsNeeded;
|
||||
$scope.getDataForUserCreation = getDataForUserCreation;
|
||||
$scope.selectCompany = selectCompany;
|
||||
$scope.selectedCompany = '';
|
||||
$scope.toggleNewCompany = toggleNewCompany;
|
||||
$scope.showAddNewCompany = false;
|
||||
$scope.getClassForCompany = getClassForCompany;
|
||||
|
||||
function getDataForUserCreation() {
|
||||
getUserTypes();
|
||||
getCompanies();
|
||||
}
|
||||
|
||||
function getUserTypes() {
|
||||
$http({method: 'POST', url: 'users/api/getUserTypes'}).then(setUserTypes, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setUserTypes(response) {
|
||||
$scope.roles = response.data || [];
|
||||
if ($scope.selectedUserType) {
|
||||
const selectedUserType = $scope.roles.find(role => {
|
||||
return role.name === $scope.selectedUserType;
|
||||
});
|
||||
|
||||
$scope.userTypeSelected = {
|
||||
id: selectedUserType.id
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function getCompanies() {
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: 'users/api/getCompanies'
|
||||
}).then(setCompanies, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setCompanies(response) {
|
||||
$scope.availableCompanies = response.data || [];
|
||||
if ($scope.selectedCompany) {
|
||||
const selectedCompany = $scope.availableCompanies.find(company => {
|
||||
return company.name === $scope.selectedCompany;
|
||||
});
|
||||
|
||||
$scope.companySelected = {
|
||||
id: selectedCompany.id
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function selectCompany(selectedCompany = '') {
|
||||
$scope.selectedCompany = selectedCompany;
|
||||
}
|
||||
|
||||
function checkIfCLIsNeeded(selectedUserType = '') {
|
||||
$scope.selectedUserType = selectedUserType;
|
||||
if ($scope.userTypeSelected.id === '2') {
|
||||
getCommercialLeads();
|
||||
}
|
||||
}
|
||||
|
||||
function getCommercialLeads() {
|
||||
$http({method: 'GET', url: 'users/api/getCommercialLeads'}).then(setCommercialLeads, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function setCommercialLeads(response) {
|
||||
if (response.data) {
|
||||
$scope.availableCommercialLeads = response.data;
|
||||
$scope.selectedCommercialLeads = [];
|
||||
}
|
||||
}
|
||||
|
||||
function isSelectCLVisible() {
|
||||
return $scope.userTypeSelected && $scope.userTypeSelected.name
|
||||
? $scope.userTypeSelected.name.toLowerCase() === 'customer'
|
||||
: false;
|
||||
}
|
||||
|
||||
function saveUserInDB() {
|
||||
$scope.info.idUserType = $scope.userTypeSelected && $scope.userTypeSelected.id
|
||||
? $scope.userTypeSelected.id
|
||||
: 0;
|
||||
|
||||
if(!$scope.showAddNewCompany) {
|
||||
$scope.info.selectedCompanyId = $scope.companySelected ? $scope.companySelected.id : 0;
|
||||
delete $scope.info.companyName;
|
||||
delete $scope.info.vat;
|
||||
}
|
||||
const params = $.param({
|
||||
info: JSON.stringify($scope.info),
|
||||
cl: JSON.stringify($scope.selectedCommercialLeads)
|
||||
});
|
||||
|
||||
$http({
|
||||
method: 'POST',
|
||||
data: params,
|
||||
url: 'users/api/saveUserInDB'
|
||||
}).then(showConfirmationMessage, utilsService.onHttpError);
|
||||
}
|
||||
|
||||
function showConfirmationMessage(response) {
|
||||
if (response.data && response.data.messages) {
|
||||
const messagesData = response.data.messages;
|
||||
messagesData.forEach(messageData => {
|
||||
const message = $translate.instant('users.forms.messages.' + messageData.message);
|
||||
utilsService.displayMessage(messageData.code, message);
|
||||
if (messageData.code === 'success') {
|
||||
$scope.info = {};
|
||||
checkIfCLIsNeeded();
|
||||
if($scope.showAddNewCompany) {
|
||||
getCompanies();
|
||||
toggleNewCompany();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function startEventStyle(event, ui, from, key) {
|
||||
$('.choose-cl-list').css({overflow: 'visible'});
|
||||
|
||||
switch (from) {
|
||||
case 'available':
|
||||
$('#selected-cl-list-container').addClass('allowed-drop-zone');
|
||||
break;
|
||||
case 'selected':
|
||||
$('#available-cl-list-container').addClass('allowed-drop-zone');
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
commercialLeadKeyDropped = key;
|
||||
listSelector = from;
|
||||
}
|
||||
|
||||
function endEventStyle() {
|
||||
$('.choose-cl-list').css({'overflow-y': 'scroll'});
|
||||
$('.choose-cl-list').removeClass('allowed-drop-zone');
|
||||
}
|
||||
|
||||
function droppedCommercialLead(event, ui, from) {
|
||||
if (from !== listSelector) {
|
||||
if (listSelector === 'available') {
|
||||
$scope.selectedCommercialLeads.push($scope.availableCommercialLeads[commercialLeadKeyDropped]);
|
||||
$scope.availableCommercialLeads.splice(commercialLeadKeyDropped, 1);
|
||||
} else if (listSelector === 'selected') {
|
||||
$scope.availableCommercialLeads.push($scope.selectedCommercialLeads[commercialLeadKeyDropped]);
|
||||
$scope.selectedCommercialLeads.splice(commercialLeadKeyDropped, 1);
|
||||
}
|
||||
}
|
||||
$(ui.helper).css({position: 'relative', left: 0, top: 0});
|
||||
}
|
||||
|
||||
function toggleNewCompany() {
|
||||
$scope.showAddNewCompany = !$scope.showAddNewCompany;
|
||||
}
|
||||
|
||||
function getClassForCompany() {
|
||||
return $scope.showAddNewCompany ? 'select-inactive' : '';
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user