Moved modelHelpers service in the DataSources module

Change-Id: Ife4239d8f0ca0ec12ed7db17c337deb6e06e80fe
diff --git a/src/app/datasources/helpers/store.helpers.ts b/src/app/datasources/helpers/store.helpers.ts
index 1a2b0ab..99662da 100644
--- a/src/app/datasources/helpers/store.helpers.ts
+++ b/src/app/datasources/helpers/store.helpers.ts
@@ -1,12 +1,22 @@
 import {BehaviorSubject} from 'rxjs';
 import * as _ from 'lodash';
 import {IWSEvent} from '../websocket/global';
+import {IXosModelHelpersService} from './model.helpers';
+import {IXosResourceService} from '../rest/model.rest';
 
 export interface IStoreHelpersService {
   updateCollection(event: IWSEvent, subject: BehaviorSubject<any>): BehaviorSubject<any>;
 }
 
 export class StoreHelpers {
+  static $inject = ['ModelHelpers', 'ModelRest'];
+
+  constructor (
+    private modelHelpers: IXosModelHelpersService,
+    private modelRest: IXosResourceService
+  ) {
+  }
+
   public updateCollection(event: IWSEvent, subject: BehaviorSubject<any>): BehaviorSubject<any> {
     const collection: any[] = subject.value;
     const index: number = _.findIndex(collection, (i) => {
@@ -15,17 +25,23 @@
     });
     const exist: boolean = index > -1;
     const isDeleted: boolean = _.includes(event.msg.changed_fields, 'deleted');
-       // remove
+
+    // generate a resource for the model
+    const endpoint = this.modelHelpers.urlFromCoreModel(event.model);
+    const resource = this.modelRest.getResource(endpoint);
+    const model = new resource(event.msg.object);
+
+    // remove
     if (exist && isDeleted) {
        _.remove(collection, {id: event.msg.object.id});
      }
     // Replace item at index using native splice
     else if (exist && !isDeleted) {
-       collection.splice(index, 1, event.msg.object);
+       collection.splice(index, 1, model);
      }
     // if the element is not deleted add it
     else if (!exist && !isDeleted) {
-      collection.push(event.msg.object);
+      collection.push(model);
      }
 
     subject.next(collection);