--- /dev/null
+(function() {
+
+ "use strict";
+
+
+
+ angular.module("nero.app.gestionApps").controller("DiffuseAppController",
+
+ DiffuseAppController);
+
+
+
+ DiffuseAppController.$inject = [ "$uibModalInstance", "$uibModal",
+
+ "toastr", "gestionAppsService", "currentApp", "$timeout" ];
+
+
+
+ function DiffuseAppController($uibModalInstance, $uibModal, toastr,
+
+ gestionAppsService, currentApp, $timeout) {
+
+
+
+ var vm = this;
+
+
+
+ vm.currentApp = JSON.parse(JSON.stringify(currentApp));
+
+
+
+ vm.onSavePerimeters = onSavePerimeters;
+
+ vm.deletePerimeters = deletePerimeters;
+
+
+
+ vm.closePerimeterDiffusionModal = closePerimeterDiffusionModal;
+
+
+
+ vm.addPerimeters = addPerimeters;
+
+
+
+ vm.allClasses = [];
+
+ vm.allRoles = [];
+
+
+
+ vm.selectedClasses = [];
+
+ vm.selectedRoles = [];
+
+
+
+ vm.currentApp.isRules = true;
+
+
+
+ vm.loadRoles = loadRoles;
+
+ vm.loadClasses = loadClasses;
+
+
+
+ vm.convertRuleToText = convertRuleToText;
+
+
+
+ vm.effectiveRules = currentApp.rules;
+
+
+
+ getRoleList();
+
+ getListClasses();
+
+
+
+ if (vm.currentApp.rules.length == 0) {
+
+ vm.currentApp.isRules = false;
+
+ }
+
+
+
+ /**
+
+ * Convert information ng-tag-input in text
+
+ */
+
+
+
+ function convertRuleToText(perimeter) {
+
+
+
+ var text = "les ";
+
+
+
+ for (var k = 0; k < perimeter.roles.length; k++) {
+
+ var role = perimeter.roles[k];
+
+ if (k > 0) {
+
+ text += ", ";
+
+ }
+
+ text += role.displayText;
+
+ }
+
+ ;
+
+
+
+ text += " de ";
+
+
+
+ for (var j = 0; j < perimeter.classes.length; j++) {
+
+ var classe = perimeter.classes[j];
+
+ if (j > 0) {
+
+ text += "ou ";
+
+ }
+
+ text += classe.displayText;
+
+
+
+ }
+
+ ;
+
+
+
+ return text;
+
+ }
+
+
+
+ /**
+
+ * get list of classes
+
+ */
+
+
+
+ function getListClasses() {
+
+ gestionAppsService.getListClasses(vm.currentApp.etabId).then(
+
+ function(data) {
+
+ vm.allClasses = data.classList;
+
+ })["catch"](function(message) {
+
+ toastr.error(message);
+
+ });
+
+
+
+ }
+
+
+
+ /**
+
+ * Add input
+
+ */
+
+
+
+ function addPerimeters() {
+
+
+
+ var perimeter = {
+
+ roles : [],
+
+ classes : []
+
+ };
+
+ vm.currentApp.rules.push(perimeter);
+
+
+
+ return vm.currentApp.isRules = true;
+
+
+
+ }
+
+
+
+ /**
+
+ * Delete input
+
+ */
+
+
+
+ function deletePerimeters(index) {
+
+ vm.currentApp.rules.splice(index, 1);
+
+
+
+ if (vm.currentApp.rules.length == 0) {
+
+ vm.currentApp.isRules = false;
+
+ }
+
+ }
+
+
+
+ /**
+
+ * ngTagsInput load auto complete
+
+ */
+
+
+
+ function loadRoles(query) {
+
+ if (!query && query === "") {
+
+ return vm.allRoles;
+
+ } else {
+
+ return vm.allRoles.filter(function(role) {
+
+ return role.displayText.toLowerCase().indexOf(
+
+ query.toLowerCase()) != -1;
+
+ });
+
+ }
+
+ }
+
+
+
+ function loadClasses(query) {
+
+ if (!query && query === "") {
+
+ return vm.allClasses;
+
+ } else {
+
+ return vm.allClasses.filter(function(classe) {
+
+ return classe.displayText.toLowerCase().indexOf(
+
+ query.toLowerCase()) != -1;
+
+ });
+
+ }
+
+ }
+
+
+
+ /**
+
+ * get list of Role
+
+ */
+
+
+
+ function getRoleList() {
+
+ gestionAppsService.getRoleList().then(function(data) {
+
+ vm.allRoles = data.roleList;
+
+
+
+ var allProfils = {
+
+ displayText : "Tous les profils",
+
+ roleId : 0,
+
+ isForClasse : false
+
+ };
+
+ vm.allRoles.unshift(allProfils);
+
+
+
+ })["catch"](function(message) {
+
+ toastr.error(message);
+
+ });
+
+
+
+ }
+
+
+
+ /**
+
+ * On saving App (Either create or edit)
+
+ */
+
+ function onSavePerimeters() {
+
+
+
+
+ if(!vm.currentApp.isRules) {
+
+ var modalInstance = $uibModal.open({
+
+ templateUrl: contextPath + "/js/allapps/warningmodal.html?t="+ gestionAppsTimestamp,
+
+ controller: "WarningDiffuseController",
+
+ controllerAs: "WarningDiffuseCtrl",
+
+ backdrop: 'static',
+
+ resolve: {
+
+ currentApp : function(){
+
+ return vm.currentApp;
+
+ }
+
+ }
+
+
+
+ });
+
+
+ modalInstance.result.then(function() {
+
+ saveAndClose();
+
+ }, function(){
+
+// Cancel paste so don't do anything
+
+ });
+
+
+ }
+
+ else {
+
+ saveAndClose();
+
+ }
+
+
+
+ }
+
+
+ function saveAndClose() {
+
+ vm.currentApp.ruleIds = [];
+
+ for (var i = 0; i < vm.currentApp.rules.length; i++) {
+
+ var rule = vm.currentApp.rules[i];
+
+ var ruleId = {
+
+ classes : [],
+
+ roles : []
+
+ };
+
+
+ vm.currentApp.noRules = false;
+
+
+ if (rule.roles.length == 0 || rule.classes.length == 0) {
+
+ vm.currentApp.noRules = true;
+
+ var modalInstance = $uibModal.open({
+
+ templateUrl: contextPath + "/js/allapps/warningmodal.html?t="+ gestionAppsTimestamp,
+
+ controller: "WarningDiffuseController",
+
+ controllerAs: "WarningDiffuseCtrl",
+
+ backdrop: 'static',
+
+ resolve: {
+
+ currentApp : function(){
+
+ return vm.currentApp;
+
+ }
+
+ }
+
+
+
+ });
+
+ return;
+
+ }
+
+
+
+ vm.currentApp.simplyRules = false
+
+
+
+
+ for (var j = 0; j < rule.classes.length; j++) {
+
+
+
+ if (rule.classes.length > 1 && rule.classes[j].value == 0) {
+
+ ruleId.classes.length = 0;
+
+ ruleId.classes.push(parseInt("0", 10));
+
+ vm.currentApp.simplyRules = true
+
+ break;
+
+ } else {
+
+
+
+ ruleId.classes.push(rule.classes[j].value);
+
+ }
+
+
+
+ }
+
+
+ if (vm.currentApp.simplyRules){
+
+ rule.classes.length = 0;
+
+ rule.classes.push({
+
+ displayText : "Tous l\établissement",
+
+ value : 0
+
+ });
+
+ }
+
+
+
+ var isAllProfil = false;
+
+
+
+ for (var k = 0; k < rule.roles.length; k++) {
+
+
+
+ if (rule.roles.length > 1 && rule.roles[k].roleId == 0) {
+
+ ruleId.roles.length = 0;
+
+ ruleId.roles.push(parseInt("0", 10));
+
+ var isAllProfil = true;
+
+ vm.currentApp.simplyRules = true
+
+ break;
+
+ } else {
+
+ ruleId.roles.push(rule.roles[k].roleId);
+
+ }
+
+ }
+
+
+ if( isAllProfil ){
+
+ var allProfil = rule.roles[k];
+
+ rule.roles.length = 0;
+
+ rule.roles.push(allProfil);
+
+ }
+
+
+
+ vm.currentApp.profilError = false;
+
+
+
+ for (var k = 0; k < rule.roles.length; k++) {
+
+ if (!rule.roles[k].isForClass && ((ruleId.classes.length > 1) || (rule.classes.length == 1 && rule.classes[0].value != 0))) {
+
+ vm.currentApp.profilError = true;
+
+ var modalInstance = $uibModal.open({
+
+ templateUrl: contextPath + "/js/allapps/warningmodal.html?t="+ gestionAppsTimestamp,
+
+ controller: "WarningDiffuseController",
+
+ controllerAs: "WarningDiffuseCtrl",
+
+ backdrop: 'static',
+
+ resolve: {
+
+ currentApp : function(){
+
+ return vm.currentApp;
+
+ }
+
+ }
+
+
+
+ });
+
+ return;
+
+ }
+
+ }
+
+ vm.currentApp.ruleIds.push(ruleId);
+
+
+
+ }
+
+
+
+ vm.myPromise = gestionAppsService.modifyDiffusionPerimeter(vm.currentApp).then(
+
+ function(data) {
+
+ if (vm.currentApp.simplyRules){
+
+ var modalInstance = $uibModal.open({
+
+ templateUrl: contextPath + "/js/allapps/warningmodal.html?t="+ gestionAppsTimestamp,
+
+ controller: "WarningDiffuseController",
+
+ controllerAs: "WarningDiffuseCtrl",
+
+ backdrop: 'static',
+
+ resolve: {
+
+ currentApp : function(){
+
+ return vm.currentApp;
+
+ }
+
+ }
+
+ });
+
+ }
+
+ toastr.success(data.message)
+
+ vm.effectiveRules = vm.currentApp.rules;
+
+ $uibModalInstance.close(vm.effectiveRules);
+
+
+
+ })["catch"](function(message) {
+
+ toastr.error(message);
+
+ });
+
+ }
+
+
+
+ /**
+
+ * On cancel (close clicked)
+
+ */
+
+ function closePerimeterDiffusionModal() {
+
+
+
+ $uibModalInstance.dismiss("cancel");
+
+ }
+
+
+
+ }
+
+})();
+