1'use strict'; 2 3angular.module('nefiksApp') 4 .controller('ConfirmEntryFromPerson', function ($rootScope, $scope, $routeParams, $location, $window, $http, CommonFactory) { 5 if(!!$rootScope.Auth.isLoggedIn() && !$rootScope.Auth.isCompany()) { 6 $rootScope.Msgs.addNext(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('Neveljavna akcija.'))); 7 $window.history.back(); 8 return; 9 } 10 11 $rootScope.titles = { 12 pageTitle: Utf8._('Potrditev') 13 }; 14 $rootScope.sideSelected = ''; 15 $rootScope.bodyClass = ''; 16 $rootScope.contentClass = 'edit-state'; 17 $scope.rs = $rootScope; 18 $scope.now = new Date(); 19 $scope.NF = NefiksFields; 20 21 var requiredFields = {'workDescription': true, 'provedBy': true, 'specialCharacteristics':true, 'recommendationGround': true}; 22 23 if($location.url().startsWith('/confirm/nefiks')) { 24 $scope.nefiksMode = true; 25 $rootScope.titles.pageTitle = Utf8._('Potrditev vpisa v Nefiks'); 26 } else if($location.url().startsWith('/confirm/recom')) { 27 $scope.recomMode = true; 28 $rootScope.titles.pageTitle = Utf8._('Potrditev priporo{ch}ila'); 29 } else { 30 $rootScope.Msgs.addNext(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('Neveljavna akcija.'))); 31 $window.history.back(); 32 return; 33 } 34 35 if(!$routeParams.id && !$routeParams.hash) { 36 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('Napa{ch}ni podatki v URL-ju.'))); 37 return; 38 } 39 40 var _setSenderAndUserFields = function(data) { 41 $scope.person = { 42 name: data.personName, 43 mail: data.personMail 44 }; 45 46 $scope.confirmData.companyName = data.companyName; 47 $scope.confirmData.contactName = data.contactName; 48 $scope.confirmData.contactMail = data.contactEmail; 49 $scope.confirmData.contactPhone = data.contactPhone; 50 51 if(!!$scope.nefiksMode) { 52 $scope.confirmData.gradeType = 'pc'; 53 } 54 if(!!$scope.recomMode) { 55 $scope.confirmData.workDescription = data.workDescription; 56 $scope.confirmData.provedBy = data.provedBy; 57 $scope.confirmData.specialCharacteristics = data.specialCharacteristics; 58 $scope.confirmData.recommendationGround = data.recommendationGround; 59 } 60 }; 61 62 var validateRecomFields = function(init) { 63 $scope.errors = {}; 64 var allPresent = true; 65 66 allPresent = PPValidate.stringE(init ? $scope.obj.workDescription : $scope.refill.workDescription, {emp: ''}, requiredFields, $scope.errors, 'workDescription') && allPresent; 67 allPresent = PPValidate.stringE(init ? $scope.obj.provedBy : $scope.refill.provedBy, {emp: ''}, requiredFields, $scope.errors, 'provedBy') && allPresent; 68 allPresent = PPValidate.stringE(init ? $scope.obj.specialCharacteristics : $scope.refill.specialCharacteristics, {emp: ''}, requiredFields, $scope.errors, 'specialCharacteristics') && allPresent; 69 allPresent = PPValidate.stringE(init ?$scope.obj.recommendationGround : $scope.refill.recommendationGround, {emp: ''}, requiredFields, $scope.errors, 'recommendationGround') && allPresent; 70 71 if(!allPresent) { 72 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('Manjkajo{ch}i podatki - Prosimo izpolnite vse potrebne podatke v priporo{ch}ilu.'))); 73 } 74 75 return allPresent; 76 } 77 78 if(!!$scope.nefiksMode) { 79 $http.get('/api/nefiks/m/single/id/'+$routeParams.id+'/hash/'+$routeParams.hash+'/fconf/1') 80 .success(function(data) { 81 if(!data || data.status!=200) { 82 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.')), data); 83 } else {
84 $scope.obj = Nefhance.nefiks(data.obj, CommonFactory); 85 _setSenderAndUserFields(data); 86 } 87 }).error(function() { 88 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.'))); 89 }); 90 } else if(!!$scope.recomMode) { 91 $http.get('/api/recom/m/single/id/'+$routeParams.id+'/hash/'+$routeParams.hash+'/fconf/1') 92 .success(function(data) { 93 if(!data || data.status!=200) { 94 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.')), data); 95 } else { 96 $scope.obj = Nefhance.recommendation(data.obj); 97 if($scope.obj.status === "confirmed" || $scope.obj.status === "rejected") { 98 // This recommendation has already been confirmed - Write an error. 99 $rootScope.Msgs.addCurrent($scope.obj.status === "confirmed" ? MESSAGE_TYPE.SUCCESS : MESSAGE_TYPE.ERROR, Common.createResponseMessage($scope.obj.status === "confirmed" ? Utf8._('To priporo{ch}ilo je {zh}e potrjeno.') : Utf8._('To priporo{ch}ilo je {zh}e zavrnjeno.')), data); 100 $scope.obj = null; 101 } else { 102 $scope.refill = angular.copy($scope.obj); 103 _setSenderAndUserFields(data); 104 } 105 106 // Check if object has all neccessary fields defined - If not, notify the confirmator 107 validateRecomFields(true); 108 109 } 110 }).error(function() { 111 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri pridobivanju podatkov.'))); 112 }); 113 } 114 115 $scope.confirmData = { 116 accept: 'acc', 117 newUser: false 118 }; 119 120 var _getAcceptMode = function() { 121 if(!!$scope.recomMode) return 'rec'; 122 if(!!$scope.nefiksMode) return 'nef'; 123 return ''; 124 }; 125 126 $scope.onRejectClick = function() { 127 $scope.errors = {}; 128 if(Common.isEmptyString($scope.confirmData.rejectionReason)) { 129 $scope.errors.rejectionReason = Utf8._('Prosimo, vpi{sh}ite razlog zavrnitve.'); 130 return; 131 } 132 133 var json = { 134 obj: { 135 id: parseInt($routeParams.id), 136 hash: $routeParams.hash, 137 reject: true, 138 rejectionReason: $scope.confirmData.rejectionReason 139 } 140 }; 141 142 $http.post('/api/accept-entry/m/'+_getAcceptMode(), angular.toJson(json), {transformRequest: angular.identity, headers: {'Content-Type': undefined}}) 143 .success(function(data) { 144 if(!data || data.status!=200) { 145 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri zavrnitvi vpisa.')), data); 146 Common.scrollToTop(); 147 } else { 148 if(!!$scope.recomMode) { 149 $scope.rejectionMsg = Utf8._('Priporo{ch}ilo je bilo zavrnjeno. Zahvaljujemo se vam za sodelovanje in prispevek k izoblj{sh}avi portala nefiks.si.'); 150 } else if(!!$scope.nefiksMode) { 151 $scope.rejectionMsg = Utf8._('Vpis je bil zavrnjen. Zahvaljujemo se vam za sodelovanje in prispevek k izoblj{sh}avi portala nefiks.si.'); 152 } 153 } 154 }).error(function() { 155 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri zavrnitvi vpisa.'))); 156 Common.scrollToTop(); 157 }); 158 }; 159 160 var checkEmptyness = function(str, errField, emptyError) { 161 if(Common.isEmptyString(str)) { 162 $scope.errors[errField] = emptyError; 163 } 164 }; 165 166 var validateAcceptFields = function() { 167 checkEmptyness($scope.confirmData.companyName, 'companyName', Utf8._('Prosimo, vpi{sh}ite ime organizacije.')); 168 checkEmptyness($scope.confirmData.contactName, 'contactName', Utf8._('Prosimo, vpi{sh}ite ime in priimek kontaktne osebe.')); 169 checkEmptyness($scope.confirmData.contactMail, 'contactMail', Utf8._('Prosimo, vpi{sh}ite elektronski naslov.')); 170 171 if($scope.confirmData.gradeType == 'og') { 172 checkEmptyness($scope.confirmData.organizatiorGrade, 'organizatiorGrade', Utf8._('Prosimo, vpi{sh}ite oceno organizatorja.'));
173 } else if($scope.confirmData.gradeType == 'fr') { 174 checkEmptyness($scope.confirmData.workDescription, 'workDescription', Utf8._('Prosimo, izpolnite polje.')); 175 checkEmptyness($scope.confirmData.provedBy, 'provedBy', Utf8._('Prosimo, izpolnite polje.')); 176 checkEmptyness($scope.confirmData.specialCharacteristics, 'specialCharacteristics', Utf8._('Prosimo, izpolnite polje.')); 177 checkEmptyness($scope.confirmData.recommendationGround, 'recommendationGround', Utf8._('Prosimo, izpolnite polje.')); 178 } 179 180 return Common.isEmptyArray($scope.errors); 181 }; 182 183 var validateRefillFields = function() { 184 checkEmptyness($scope.refill.workDescription, 'workDescription', Utf8._('Prosimo, izpolnite polje.')); 185 checkEmptyness($scope.refill.provedBy, 'provedBy', Utf8._('Prosimo, izpolnite polje.')); 186 checkEmptyness($scope.refill.specialCharacteristics, 'specialCharacteristics', Utf8._('Prosimo, izpolnite polje.')); 187 checkEmptyness($scope.refill.recommendationGround, 'recommendationGround', Utf8._('Prosimo, izpolnite polje.')); 188 189 return Common.isEmptyArray($scope.errors); 190 }; 191 192 $scope.onAcceptClick = function(fromRefill) { 193 $scope.errors = {}; 194 195 if(!validateAcceptFields()) return; 196 if(!!fromRefill && !validateRefillFields()) return; 197 198 var json = { 199 obj: { 200 id: parseInt($routeParams.id), 201 hash: $routeParams.hash, 202 reject: false, 203 companyName: $scope.confirmData.companyName, 204 contactName: $scope.confirmData.contactName, 205 contactMail: $scope.confirmData.contactMail, 206 contactPhone: $scope.confirmData.contactPhone, 207 active: !!$scope.confirmData.active, 208 volunteer: !!$scope.confirmData.volunteer, 209 gradeType: $scope.confirmData.gradeType, 210 organizatiorGrade: $scope.confirmData.organizatiorGrade, 211 workDescription: $scope.confirmData.workDescription, 212 provedBy: $scope.confirmData.provedBy, 213 specialCharacteristics: $scope.confirmData.specialCharacteristics, 214 recommendationGround: $scope.confirmData.recommendationGround 215 } 216 }; 217 218 if(!!$scope.nefiksMode) { 219 json.obj.gradeType = $scope.confirmData.gradeType; 220 json.obj.organizatiorGrade = $scope.confirmData.organizatiorGrade; 221 json.obj.workDescription = $scope.confirmData.workDescription; 222 json.obj.provedBy = $scope.confirmData.provedBy; 223 json.obj.specialCharacteristics = $scope.confirmData.specialCharacteristics; 224 json.obj.recommendationGround = $scope.confirmData.recommendationGround; 225 } else if(!!$scope.recomMode && !!fromRefill) { //Recom data from refill object 226 json.obj.workDescription = $scope.refill.workDescription; 227 json.obj.provedBy = $scope.refill.provedBy; 228 json.obj.specialCharacteristics = $scope.refill.specialCharacteristics; 229 json.obj.recommendationGround = $scope.refill.recommendationGround; 230 } else if(!!$scope.recomMode && !fromRefill) { //Recom data from base object 231 json.obj.workDescription = $scope.obj.workDescription; 232 json.obj.provedBy = $scope.obj.provedBy; 233 json.obj.specialCharacteristics = $scope.obj.specialCharacteristics; 234 json.obj.recommendationGround = $scope.obj.recommendationGround; 235 } 236 237 $http.post('/api/accept-entry/m/'+_getAcceptMode(), angular.toJson(json), {transformRequest: angular.identity, headers: {'Content-Type': undefined}}) 238 .success(function(data) { 239 if(!!data && data.status==200) { 240 if(!!$scope.recomMode) { 241 $scope.acceptMsg = Utf8._('Priporo{ch}ilo je bilo potrjeno.'); 242 $rootScope.Msgs.removeCurrent(); 243 } else if(!!$scope.nefiksMode) { 244 $scope.acceptMsg = Utf8._('Vpis je bil potrjen.'); 245 } 246 } else if(!!data && data.status==201) { 247 $scope.errors = data.ers; 248 } else { 249 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri sprejemanju vpisa.')), data); 250 Common.scrollToTop(); 251 } 252 }).error(function() { 253 $rootScope.Msgs.addCurrent(MESSAGE_TYPE.ERROR, Common.createResponseMessage(Utf8._('{Zh}al je pri{sh}lo do napake pri zavrnitvi vpisa.'))); 254 Common.scrollToTop(); 255 });
256 }; 257 258 $scope.onFillPreviewClick = function() { 259 $scope.errors = {}; 260 261 if(!validateRefillFields()) return; 262 263 $scope.obj.workDescription = $scope.refill.workDescription; 264 $scope.obj.provedBy = $scope.refill.provedBy; 265 $scope.obj.specialCharacteristics = $scope.refill.specialCharacteristics; 266 $scope.obj.recommendationGround = $scope.refill.recommendationGround; 267 268 $scope.confirmData.accept = 'acc'; 269 Common.scrollToTop(); 270 }; 271 }); 272
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.