diff options
Diffstat (limited to 'catalog-ui/src/app/services/entity-service.ts')
-rw-r--r-- | catalog-ui/src/app/services/entity-service.ts | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/catalog-ui/src/app/services/entity-service.ts b/catalog-ui/src/app/services/entity-service.ts new file mode 100644 index 0000000000..d480bf9104 --- /dev/null +++ b/catalog-ui/src/app/services/entity-service.ts @@ -0,0 +1,94 @@ +'use strict'; +import {Product, Service, IApi, IAppConfigurtaion, Resource, Component} from "../models"; +import {SharingService} from "./sharing-service"; +import {ComponentFactory} from "../utils/component-factory"; +import {CacheService} from "./cache-service"; + +interface IEntityService { + getAllComponents():ng.IPromise<Array<Component>>; +} + +interface IComponentsArray { + services:Array<Service>; + resources:Array<Resource>; + products:Array<Product>; +} + +export class EntityService implements IEntityService { + static '$inject' = ['$http', '$q', 'sdcConfig', 'Sdc.Services.SharingService', 'ComponentFactory', 'Sdc.Services.CacheService']; + private api:IApi; + + constructor(private $http:ng.IHttpService, + private $q:ng.IQService, + private sdcConfig:IAppConfigurtaion, + private sharingService:SharingService, + private ComponentFactory:ComponentFactory, + private cacheService:CacheService) { + this.api = sdcConfig.api; + } + + getCatalog = ():ng.IPromise<Array<Component>> => { + let defer = this.$q.defer<Array<Component>>(); + this.$http.get(this.api.root + this.api.GET_catalog) + .then((response:any) => { + let followedResponse: IComponentsArray = response.data; + let componentsList:Array<Component> = new Array(); + + followedResponse.services.forEach((serviceResponse:Service) => { + let component:Service = this.ComponentFactory.createService(serviceResponse); // new Service(serviceResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + + followedResponse.resources.forEach((resourceResponse:Resource) => { + let component:Resource = this.ComponentFactory.createResource(resourceResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + + followedResponse.products.forEach((productResponse:Product) => { + + let component:Product = this.ComponentFactory.createProduct(productResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + + this.cacheService.set('breadcrumbsComponents', componentsList); + defer.resolve(componentsList); + },(responce) => { + defer.reject(responce); + }); + return defer.promise; + }; + + getAllComponents = ():ng.IPromise<Array<Component>> => { + let defer = this.$q.defer<Array<Component>>(); + this.$http.get(this.api.root + this.api.GET_element) + .then((response:any) => { + let componentResponse:IComponentsArray = response.data; + let componentsList:Array<Component> = []; + + componentResponse.services && componentResponse.services.forEach((serviceResponse:Service) => { + let component:Service = this.ComponentFactory.createService(serviceResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + + componentResponse.resources && componentResponse.resources.forEach((resourceResponse:Resource) => { + let component:Resource = this.ComponentFactory.createResource(resourceResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + + componentResponse.products && componentResponse.products.forEach((productsResponse:Product) => { + let component:Product = this.ComponentFactory.createProduct(productsResponse); + componentsList.push(component); + this.sharingService.addUuidValue(component.uniqueId, component.uuid); + }); + this.cacheService.set('breadcrumbsComponents', componentsList); + defer.resolve(componentsList); + }); + + return defer.promise; + }; +} |