Create wt-odlux directory
[ccsdk/features.git] / sdnr / wt / odlux / apps / inventoryApp / src / services / inventoryService.ts
index d43d298..4014fcf 100644 (file)
  * the License.
  * ============LICENSE_END==========================================================================
  */
+import { Result } from '../../../../framework/src/models/elasticSearch';
 import { requestRest } from '../../../../framework/src/services/restService';
-import { convertPropertyNames, replaceHyphen } from '../../../../framework/src/utilities/yangHelper';
 
 import { InventoryTreeNode, InventoryType } from '../models/inventory';
-import { getTree, getElement } from '../fakeData';
+import { InventoryDeviceListType } from '../models/inventoryDeviceListType';
 
 /**
  * Represents a web api accessor service for all maintenence entries related actions.
  */
 class InventoryService {
-  public async getInventoryTree(mountId: string, searchTerm: string = ""): Promise<InventoryTreeNode | null> {
+  public async getInventoryTree(mountId: string, searchTerm: string = ''): Promise<InventoryTreeNode | null> {
     //return await getTree(searchTerm);
     const path = `/tree/read-inventoryequipment-tree/${mountId}`;
     const body = {
-      "query": searchTerm
+      'query': searchTerm,
     };
-    const inventoryTree = await requestRest<InventoryTreeNode>(path, { method: "POST" , body: JSON.stringify(body)});
-    return inventoryTree && convertPropertyNames(inventoryTree, replaceHyphen) || null;
+    const inventoryTree = await requestRest<InventoryTreeNode>(path, { method: 'POST', body: JSON.stringify(body) });
+    return inventoryTree && inventoryTree || null;
   }
 
   public async getInventoryEntry(id: string): Promise<InventoryType | undefined> {
-    const path = `/rests/operations/data-provider:read-inventory-list`;
+    const path = '/rests/operations/data-provider:read-inventory-list';
     const body = {
-      "data-provider:input": {
-        "filter": [
-          { property: "id", filtervalue: id },
+      'data-provider:input': {
+        'filter': [
+          { property: 'id', filtervalue: id },
         ],
-        "sortorder": [],
-        "pagination": {
-          "size": 1,
-          "page": 1
-        }
-      }
+        'sortorder': [],
+        'pagination': {
+          'size': 1,
+          'page': 1,
+        },
+      },
     };
     const inventoryTreeElement = await requestRest<{
-      output: {
-        "pagination": {
-          "size": number,
-          "page": number,
-          "total": number
+      'data-provider:output': {
+        'pagination': {
+          'size': number;
+          'page': number;
+          'total': number;
+        };
+        'data': InventoryType[];
+      };
+    }>(path, { method: 'POST', body: JSON.stringify(body) });
+
+    return inventoryTreeElement && inventoryTreeElement['data-provider:output'] && inventoryTreeElement['data-provider:output'].pagination && inventoryTreeElement['data-provider:output'].pagination.total >= 1 &&
+      inventoryTreeElement['data-provider:output'].data && inventoryTreeElement['data-provider:output'].data[0] || undefined;
+    // return await getElement(id);
+  }
+
+  /**
+   * Gets all nodes from the inventory device list.
+   */
+  public async getInventoryDeviceList(): Promise<(InventoryDeviceListType)[] | null> {
+    const path = '/rests/operations/data-provider:read-inventory-device-list';
+    const query = {
+      'data-provider:input': {
+        'filter': [],
+        'sortorder': [],
+        'pagination': {
+          'size': 20,
+          'page': 1,
         },
-        "data": InventoryType[]
-      }
-    }>(path, { method: "POST", body: JSON.stringify(body) });
+      },
+    };
 
-    return inventoryTreeElement && inventoryTreeElement.output && inventoryTreeElement.output.pagination && inventoryTreeElement.output.pagination.total >= 1 &&
-      inventoryTreeElement.output.data && convertPropertyNames(inventoryTreeElement.output.data[0], replaceHyphen) || undefined;
-   // return await getElement(id);
+    const result = await requestRest<Result<any>>(path, { method: 'POST', body: JSON.stringify(query) });
+    return result && result['data-provider:output'] && result['data-provider:output'].data && result['data-provider:output'].data.map(ne => ({
+      nodeId: ne,
+    })) || null;
   }
 
 }