removing retain assignments checkbox from upgade vfModule screen
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / pnf / pnf.popup.service.ts
1 import {Injectable} from '@angular/core';
2 import {GenericPopupInterface} from "../generic-popup.interface";
3 import {ITreeNode} from "angular-tree-component/dist/defs/api";
4 import {FormPopupDetails, PopupType} from "../../../../models/formControlModels/formPopupDetails.model";
5 import {FormGroup} from "@angular/forms";
6 import {ModelInformationItem} from "../../../model-information/model-information.component";
7 import {ServiceModel} from "../../../../models/serviceModel";
8 import {Subject} from "rxjs/Subject";
9 import {ControlGeneratorUtil} from "../../../genericForm/formControlsServices/control.generator.util.service";
10 import {IframeService} from "../../../../utils/iframe.service";
11 import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
12 import {AaiService} from "../../../../services/aaiService/aai.service";
13 import {BasicPopupService} from "../basic.popup.service";
14 import {NgRedux} from "@angular-redux/store";
15 import {AppState} from "../../../../store/reducers";
16 import {Subscriber} from "../../../../models/subscriber";
17 import {Constants} from "../../../../utils/constants";
18 import {PnfInstance} from "../../../../models/pnfInstance";
19 import * as _ from 'lodash';
20
21 @Injectable()
22 export class PnfPopupService implements GenericPopupInterface{
23   dynamicInputs: any;
24   instance: any;
25   model:any;
26   serviceModel:ServiceModel;
27   modelInformations: ModelInformationItem[] = [];
28   uuidData: Object;
29   closeDialogEvent: Subject<any> = new Subject<any>();
30   isUpdateMode: boolean;
31
32   constructor(
33     private _basicControlGenerator: ControlGeneratorUtil,
34     private _iframeService: IframeService,
35     private _defaultDataGeneratorService: DefaultDataGeneratorService,
36     private _aaiService: AaiService,
37     private _basicPopupService: BasicPopupService,
38     private _store: NgRedux<AppState>) {
39   }
40
41   getGenericFormPopupDetails(serviceId: string, modelName: string, pnfStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
42     this.uuidData = uuidData;
43     this.isUpdateMode = isUpdateMode;
44     this.instance = this.getInstance(serviceId, modelName, pnfStoreKey);
45     this.getModelInformation(serviceId, modelName);
46
47     return new FormPopupDetails(this,
48       PopupType.PNF_MACRO,
49       uuidData,
50       this.getTitle(isUpdateMode),
51       this.getSubLeftTitle(),
52       this.getSubRightTitle(),
53       this.getControls(serviceId, modelName, pnfStoreKey),
54       this._basicPopupService.getDynamicInputs(serviceId, modelName, pnfStoreKey, 'pnfs'),
55       this.modelInformations,
56       (that, form: FormGroup) => {that.onSubmit(that, form);},
57       (that: any, form: FormGroup) => {that.onCancel(that, form); }
58       )
59   }
60
61   getControls(serviceId: string, modelName: string, pnfStoreKey: string){
62     return [];
63   }
64
65   getInstance(serviceId: string, modelName: string, pnfStoreKey: string): any {
66     if(_.isNil(pnfStoreKey)){
67       return new PnfInstance();
68     }
69     return this._store.getState().service.serviceInstance[serviceId].pnfs[pnfStoreKey];
70   }
71
72   getModelInformation(serviceId: string, modelName: string): void {
73     this._aaiService.getServiceModelById(serviceId).subscribe((result: any) => {
74       this.serviceModel = new ServiceModel(result);
75       this.model = this._basicPopupService.getModelFromResponse(result, 'pnfs', modelName);
76       const serviceInstance = this._store.getState().service.serviceInstance[serviceId];
77       this.modelInformations = [
78         new ModelInformationItem("Subscriber Name", "subscriberName", [this.extractSubscriberNameBySubscriberId(serviceInstance.globalSubscriberId, this._store)], "", true),
79         new ModelInformationItem("Service Name", "serviceModelName", [this.serviceModel.name], "", true),
80         new ModelInformationItem("Service Instance Name", "serviceName", [serviceInstance.instanceName], "", false),
81         new ModelInformationItem("Model Name", "modelName", [this.model.name], "", true),
82         new ModelInformationItem("Model version", "modelVersion", [this.model.version], "", true),
83         new ModelInformationItem("Description", "description", [this.model.description]),
84         new ModelInformationItem("Category", "category", [this.model.category]),
85         new ModelInformationItem("Sub Category", "subCategory", [this.model.subCategory]),
86         new ModelInformationItem("UUID", "uuid", [this.model.uuid], Constants.ServicePopup.TOOLTIP_UUID, true),
87         new ModelInformationItem("Invariant UUID", "invariantUuid", [this.model.invariantUuid], Constants.ServicePopup.TOOLTIP_INVARIANT_UUID, true),
88         new ModelInformationItem("Service type", "serviceType", [this.serviceModel.serviceType]),
89         new ModelInformationItem("Service role", "serviceRole", [this.serviceModel.serviceRole]),
90         new ModelInformationItem("Minimum to instantiate", "min", [!_.isNil(this.model.min) ? this.model.min.toString() : '0'], "", false),
91         this._basicPopupService.createMaximumToInstantiateModelInformationItem(this.model)
92         ];
93     })
94   }
95
96   getSubLeftTitle(): string {
97     return "PNF MODEL: " + this._store.getState().service.serviceHierarchy[this.uuidData['serviceId']].pnfs[this.uuidData['modelName']].name;
98   }
99
100   getSubRightTitle(): string {
101     return "PNF Instance Details";
102   }
103
104   storePNF = (that, formValues: any): void => {};
105
106   getTitle(isUpdateMode: boolean): string {
107     return isUpdateMode  ? "Edit PNF instance": "Set a new PNF" ;
108   }
109
110   onCancel(that, form): void {
111     form.reset();
112     that._iframeService.removeClassCloseModal('content');
113     this.closeDialogEvent.next(that);
114   }
115
116   onSubmit(that, form: FormGroup, ...args): void {
117     form.value['instanceParams'] = form.value['instanceParams'] && [form.value['instanceParams']];
118     that.storePNF(that, form.value);
119     window.parent.postMessage( {
120       eventId: 'submitIframe',
121       data: {
122         serviceModelId: that.uuidData.serviceId
123       }
124     }, "*");
125     that.onCancel(that, form);
126   }
127
128   extractSubscriberNameBySubscriberId(subscriberId: string, store: NgRedux<AppState>) {
129     let result: string = null;
130     let filteredArray: any = _.filter(store.getState().service.subscribers, function (o: Subscriber) {
131       return o.id === subscriberId
132     });
133     if (filteredArray.length > 0) {
134       result = filteredArray[0].name;
135     }
136     return result;
137   }
138
139 }