5d4d16567a9fce4b386b7035187ceda6fd541030
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / basic.popup.service.ts
1 import {Injectable} from "@angular/core";
2 import {Subscriber} from "../../../models/subscriber";
3 import {NetworkModel} from "../../../models/networkModel";
4 import {AppState} from "../../../store/reducers";
5 import {NgRedux} from "@angular-redux/store";
6 import {FormControlModel} from "../../../models/formControlModels/formControl.model";
7 import {DefaultDataGeneratorService} from "../../../services/defaultDataServiceGenerator/default.data.generator.service";
8 import {BasicControlGenerator} from "../../genericForm/formControlsServices/basic.control.generator";
9 import * as _ from 'lodash';
10 import {VfModule} from "../../../models/vfModule";
11 import {VNFModel} from "../../../models/vnfModel";
12 import {VnfGroupModel} from "../../../models/vnfGroupModel";
13
14 @Injectable()
15 export class BasicPopupService {
16   constructor(private _store: NgRedux<AppState>,
17               private _defaultDataGeneratorService : DefaultDataGeneratorService,
18               private _basicControlGenerator : BasicControlGenerator){}
19
20   extractSubscriberNameBySubscriberId(subsriberId: string) {
21     let result: string = null;
22     let filteredArray: any = _.filter(this._store.getState().service.subscribers, function (o: Subscriber) {
23       return o.id === subsriberId
24     });
25     if (filteredArray.length > 0) {
26       result = filteredArray[0].name;
27     }
28     return result;
29   }
30
31   getModelFromResponse(result: any, modelType: string, modelName: string) {
32     let rawModel = result[modelType][modelName];
33     if (!rawModel) return;
34     switch (modelType){
35       case 'vnfs' : {
36         return new VNFModel(rawModel);
37       }
38       case 'vfModules' : {
39         return new VfModule(rawModel);
40       }
41       case 'networks' : {
42         return new NetworkModel(rawModel);
43       }
44       case 'vnfGroups' : {
45         return new VnfGroupModel(rawModel);
46       }
47     }
48   }
49
50   getDynamicInputs(serviceId : string, modelName : string, storeKey : string, type : string) : FormControlModel[]{
51     let dynamic = this._defaultDataGeneratorService.getArbitraryInputs(this._store.getState().service.serviceHierarchy[serviceId][type][modelName].inputs);
52       return this._basicControlGenerator.getDynamicInputsByType(dynamic, serviceId, storeKey, type );
53   }
54 }