Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt-odlux / odlux / apps / inventoryApp / src / services / inventoryService.ts
1 /**
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt odlux
4  * =================================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 import { Result } from '../../../../framework/src/models/elasticSearch';
19 import { requestRest } from '../../../../framework/src/services/restService';
20
21 import { InventoryTreeNode, InventoryType } from '../models/inventory';
22 import { InventoryDeviceListType } from '../models/inventoryDeviceListType';
23
24 /**
25  * Represents a web api accessor service for all maintenence entries related actions.
26  */
27 class InventoryService {
28   public async getInventoryTree(mountId: string, searchTerm: string = ''): Promise<InventoryTreeNode | null> {
29     //return await getTree(searchTerm);
30     const path = `/tree/read-inventoryequipment-tree/${mountId}`;
31     const body = {
32       'query': searchTerm,
33     };
34     const inventoryTree = await requestRest<InventoryTreeNode>(path, { method: 'POST', body: JSON.stringify(body) });
35     return inventoryTree && inventoryTree || null;
36   }
37
38   public async getInventoryEntry(id: string): Promise<InventoryType | undefined> {
39     const path = '/rests/operations/data-provider:read-inventory-list';
40     const body = {
41       'data-provider:input': {
42         'filter': [
43           { property: 'id', filtervalue: id },
44         ],
45         'sortorder': [],
46         'pagination': {
47           'size': 1,
48           'page': 1,
49         },
50       },
51     };
52     const inventoryTreeElement = await requestRest<{
53       'data-provider:output': {
54         'pagination': {
55           'size': number;
56           'page': number;
57           'total': number;
58         };
59         'data': InventoryType[];
60       };
61     }>(path, { method: 'POST', body: JSON.stringify(body) });
62
63     return inventoryTreeElement && inventoryTreeElement['data-provider:output'] && inventoryTreeElement['data-provider:output'].pagination && inventoryTreeElement['data-provider:output'].pagination.total >= 1 &&
64       inventoryTreeElement['data-provider:output'].data && inventoryTreeElement['data-provider:output'].data[0] || undefined;
65     // return await getElement(id);
66   }
67
68   /**
69    * Gets all nodes from the inventory device list.
70    */
71   public async getInventoryDeviceList(): Promise<(InventoryDeviceListType)[] | null> {
72     const path = '/rests/operations/data-provider:read-inventory-device-list';
73     const query = {
74       'data-provider:input': {
75         'filter': [],
76         'sortorder': [],
77         'pagination': {
78           'size': 20,
79           'page': 1,
80         },
81       },
82     };
83
84     const result = await requestRest<Result<any>>(path, { method: 'POST', body: JSON.stringify(query) });
85     return result && result['data-provider:output'] && result['data-provider:output'].data && result['data-provider:output'].data.map(ne => ({
86       nodeId: ne,
87     })) || null;
88   }
89
90 }
91
92 export const inventoryService = new InventoryService();