1'use strict'; // 2 3// **************************************************** 4// Gestion des Produits 5// **************************************************** 6angular.module('AboShopApp').factory('categoriesManager', ['$q', 'TbsWS', 'commonConfig', '$rootScope', 'formulaireManager', '$state',function ($q, TbsWS, commonConfig, $rootScope, formulaireManager, $state) { 7 8 var factory = {}; 9 10 factory.loadCategoriesFromIds = function loadCategoriesFromIds(categoriesId){ 11 var deferred = $q.defer(); 12 var resultCategories = []; 13 if(categoriesId.length > 0){ 14 factory.getCategories("all").then( 15 function(categories){ 16 if(categories !== undefined){ 17 for(let p in categories){ 18 if(_.contains(categoriesId,categories[p].refCategorie.toString())){ 19 resultCategories.push(categories[p]); 20 } 21 } 22 } 23 deferred.resolve(resultCategories); 24 } 25 ,function() { 26 deferred.resolve(resultCategories); 27 } 28 ); 29 } 30 return deferred.promise; 31 }; 32 33 factory.getCategory = function getCategory(refCat, light=false){ 34 var deferred = $q.defer(); 35 if(refCat === undefined || refCat === ""){ 36 deferred.resolve({}); 37 } else { 38 TbsWS.call('category/'+$rootScope.preferredLanguage+'/'+ refCat+'?light='+light,'public').then( 39 function(category){ 40 if($state.current.data.seoMap === undefined){ 41 $state.current.data.seoMap = []; 42 } 43 if(category.seo !== undefined && category.seo !== null && 44 (category.seo.urlRewrite === undefined || category.seo.urlRewrite === null || category.seo.urlRewrite === "")) { 45 let ob = factory.getHrefCategorie(category); 46 category.seo.urlRewrite = ob.url; 47 } 48 if (category.seo !== undefined && category.seo !== null && category.seo.urlRewrite !== undefined 49 && category.seo.urlRewrite !== null && category.seo.urlRewrite !== "") { 50 if (category.seo.urlRewrite.startsWith('/') === false) { 51 category.seo.urlRewrite = '/' + category.seo.urlRewrite; 52 } 53 } 54 if(category.seo !== undefined && category.seo !== null) { 55 $state.current.data.seoMap.push(category.seo); 56 } 57 deferred.resolve(category); 58 } 59 ,function(error) { 60 deferred.resolve({}); 61 } 62 ); 63 } 64 return deferred.promise; 65 }; 66 67 factory.getHrefCategorie = function getHrefCategorie( categorie ) { 68 let ob = TbsWS.getUrlHome(); 69 if(categorie!== undefined && categorie.refCategorie !== undefined){ 70 if(categorie.profil !== undefined && categorie.profil != null && categorie.profil != ""){ 71 ob.profil = categorie.profil; 72 } 73 if (categorie.page == true) { 74 ob.url = '/common/categories-list/'+categorie.refCategorie; 75 } else { 76 ob.url = '/common/categories/'+categorie.refCategorie; 77 } 78 } 79 return ob; 80 }; 81 82 function getParentCategorie(catarbo,refCategorieParent){ 83 for(let p in catarbo){ 84 let cat = catarbo[p]; 85 if(cat.refCategorie == refCategorieParent){ 86 return cat; 87 } 88 if(cat.categories !== undefined && cat.categories.length > 0){ 89 let parent = getParentCategorie(cat.categories,refCategorieParent); 90 if(parent !== null){ 91 return parent; 92 } 93 } 94 } 95 return null; 96 } 97 98 factory.getEnfantsCategories = function getEnfantsCategories(refCat){ 99 var deferred = $q.defer(); 100 101 TbsWS.call('categoriesenfantsbycategorie/' + $rootScope.preferredLanguage +'/' + refCat,'public').then( 102 function(categories){ 103 deferred.resolve(categories); 104 } 105 ,function(error) { 106 console.error(error); 107 deferred.resolve([]); 108 } 109 ); 110 return deferred.promise; 111 }; 112 113 factory.nbCategoriesEnfants = function nbCategoriesEnfants(refCat){ 114 var deferred = $q.defer(); 115 116 TbsWS.call('nbcategoriesenfantsbycategories/' + $rootScope.preferredLanguage +'/' + refCat,'public').then( 117 function(result){ 118 if (result && result.key === "nbcategoriesenfantsbycategories"){ 119 deferred.resolve(result.value); 120 } else { 121 deferred.resolve(0); 122 } 123 } 124 ,function(error) { 125 deferred.resolve(0); 126 } 127 ); 128 return deferred.promise; 129 }; 130 131 factory.getCategories = function getCategories(returnAll){ 132 var deferred = $q.defer(); 133 TbsWS.call('categories/'+ $rootScope.preferredLanguage + '/' + returnAll,'public').then( 134 function(categories){ 135 deferred.resolve(categories); 136 } 137 ,function(error) { 138 console.error(error); 139 deferred.resolve([]); 140 } 141 ); 142 return deferred.promise; 143 }; 144 145 factory.getCategoriesKeyValue = function getCategoriesKeyValue(){
146 console.log('getCategoriesKeyValue'); 147 var deferred = $q.defer(); 148 TbsWS.call('categorieskeyvalue/'+ $rootScope.preferredLanguage,'public').then( 149 function(categories){ 150 deferred.resolve(categories); 151 } 152 ,function(error) { 153 console.error(error); 154 deferred.resolve([]); 155 } 156 ); 157 return deferred.promise; 158 }; 159 160 factory.getCategoriesHome = function getCategoriesHome(){ 161 var deferred = $q.defer(); 162 TbsWS.call('categorieshome/'+ $rootScope.preferredLanguage,'public').then( 163 function(categories){ 164 deferred.resolve(categories); 165 } 166 ,function(error) { 167 console.error(error); 168 deferred.resolve([]); 169 } 170 ); 171 return deferred.promise; 172 }; 173 174 factory.getCategoriesAndPrepare = function getCategoriesAndPrepare(){ 175 var deferred = $q.defer(); 176 177 factory.getCategories().then( 178 function(categories){ 179 let catarbo = []; 180 for(let p in categories){ 181 let cat = categories[p]; 182 cat.strclasses = ''; 183 cat.categories = []; 184 cat.sortbyname = new Object(); 185 let parent = null; 186 if(cat.refCategorieParent !== null){ 187 parent = getParentCategorie(catarbo,cat.refCategorieParent); 188 } 189 if(parent === null){ 190 catarbo.push(cat); 191 } else { 192 parent.categories.push(cat); 193 } 194 } 195 deferred.resolve(catarbo); 196 } 197 ,function(error) { 198 console.error(error); 199 deferred.resolve([]); 200 } 201 ); 202 return deferred.promise; 203 }; 204 205 factory.getCategoriesHomeAndPrepare = function getCategoriesHomeAndPrepare(){ 206 var deferred = $q.defer(); 207 208 factory.getCategoriesHome().then( 209 function(categories){ 210 let catarbo = []; 211 for(let p in categories){ 212 let cat = categories[p]; 213 let parent = null; 214 cat.categories = []; 215 216 if(cat.refCategorieParent !== null){ 217 parent = getParentCategorie(catarbo,cat.refCategorieParent); 218 } 219 220 if(parent === null){ 221 catarbo.push(cat); 222 } else { 223 parent.categories.push(cat); 224 } 225 226 } 227 deferred.resolve(catarbo); 228 } 229 ,function(error) { 230 console.error(error); 231 deferred.resolve([]); 232 } 233 ); 234 return deferred.promise; 235 }; 236 237 factory.getFiltreParDateForm = function getFiltreParDateForm(cat, filter){ 238 239 var filterForm={}, 240 yearsObj=[], 241 monthsObj=[], 242 ob={}, 243 min=0, 244 i=0, 245 indexYear=-1, 246 indexMonth=-1; 247 248 filterForm.fields = []; 249 250 if(cat.filtreDateMin != null && cat.filtreDateMax != null && cat.filtreParDateActif == true){ 251 min=new Date(cat.filtreDateMin).getFullYear(); 252 i=new Date(cat.filtreDateMax).getFullYear(); 253 254 yearsObj.push({value:"all",label:"DICO_NO_FILTER"}); 255 256 while(i>=min){ 257 ob = {value:i,label:i}; 258 yearsObj.push(ob); 259 if(i == parseInt(filter.year)){ 260 indexYear = yearsObj.length-1; 261 } 262 i--; 263 } 264 265 monthsObj = [ {value:"all",label:"DICO_NO_FILTER"}, 266 {value:1,label:"DICO_JANVIER"}, 267 {value:2,label:"DICO_FEVRIER"}, 268 {value:3,label:"DICO_MARS"}, 269 {value:4,label:"DICO_AVRIL"}, 270 {value:5,label:"DICO_MAI"}, 271 {value:6,label:"DICO_JUIN"}, 272 {value:7,label:"DICO_JUILLET"}, 273 {value:8,label:"DICO_AOUT"}, 274 {value:9,label:"DICO_SEPTEMBRE"}, 275 {value:10,label:"DICO_OCTOBRE"}, 276 {value:11,label:"DICO_NOVEMBRE"}, 277 {value:12,label:"DICO_DECEMBRE"} 278 ]; 279 280 ob = {}; 281 formulaireManager.createSelect("years",ob,"DICO_YEAR",yearsObj,false, (filter.year == "all"?0:indexYear)); 282 filterForm.fields.push(ob); 283 284 ob = {}; 285 formulaireManager.createSelect("months",ob,"DICO_MONTH",monthsObj,false, (filter.month == "all"?0:parseInt(filter.month))); 286 filterForm.fields.push(ob); 287 } 288 289 return filterForm; 290 }; 291 292 function getCategorie(categories,refCategorie){ 293 for(let p in categories){
294 let cat = categories[p]; 295 if(cat.refCategorie == refCategorie){ 296 return cat; 297 } 298 } 299 return null; 300 } 301 302 factory.getToAscii = function getToAscii(chaine){ 303 let result = '0'; 304 if(chaine !== undefined && chaine != null){ 305 for(let i=0;i<chaine.length;i++){ 306 result += ''+chaine.charCodeAt(i); 307 } 308 } 309 return result; 310 }; 311 312 factory.buildCategoriesList = function buildCategoriesList(src) { 313 var deferred = $q.defer(); 314 TbsWS.getJson(src).then( 315 function(json){ 316 factory.getCategoriesAndPrepare().then( 317 function(categories){ 318 function inArray (myarray, comparer) { 319 for(var i=0; i < myarray.length; i++) { 320 if(comparer(myarray[i])) return true; 321 } 322 return false; 323 }; 324 function pushIfNotExist(myarray, element, comparer) { 325 if (!inArray(myarray, comparer)) { 326 myarray.push(element); 327 } 328 }; 329 330 const categorieslocal = []; 331 const categoriesbutton = []; 332 const allsorts = []; 333 for(let p=0;p<json.length;p++){ 334 const ascii = 'a'+factory.getToAscii(json[p].label); 335 if(json[p].categories !== undefined){ 336 if(json[p].categories.length == 0){ 337 let i = 0; 338 for(let c in categories){ 339 let cat = categories[c]; 340 cat.strclasses += ' '+ascii; 341 cat.sortbyname[ascii] = i+1; 342 pushIfNotExist(categorieslocal, cat,function(e) { 343 return e.refCategorie === cat.refCategorie; 344 }); 345 i++; 346 } 347 } else { 348 for(let i=0;i<json[p].categories.length;i++){ 349 let cat = getCategorie(categories,json[p].categories[i]); 350 if(cat !== null){ 351 cat.strclasses += ' '+ascii; 352 cat.sortbyname[ascii] = i+1; 353 pushIfNotExist(categorieslocal,cat,function(e) { 354 return e.refCategorie === cat.refCategorie; 355 }); 356 } 357 } 358 } 359 if (json[p].label !== "default"){ 360 let obj = {}; 361 obj.label = json[p].label; 362 obj.key = ascii; 363 categoriesbutton.push(obj); 364 } 365 allsorts.push(ascii); 366 } 367 } 368 369 let obj = {}; 370 obj.categories = categorieslocal; 371 obj.categoriesbutton = categoriesbutton; 372 obj.allsorts = allsorts; 373 deferred.resolve(obj); 374 } 375 ,function(error) { 376 deferred.reject(error); 377 } 378 ); 379 } 380 ,function(error) { 381 deferred.reject(error); 382 } 383 ); 384 return deferred.promise; 385 }; 386 387 return factory; 388 }]);
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.