[SDC-29] catalog 1707 rebase commit.

Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1
Signed-off-by: Michael Lando <ml636r@att.com>
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 0000000..d480bf9
--- /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;
+    };
+}