c490816086d5114fd78162290c911747c257547c
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / vfModuleUpgrade / vfModule.upgrade.popuop.service.ts
1 import {Injectable} from "@angular/core";
2 import {ITreeNode} from "angular-tree-component/dist/defs/api";
3 import {FormGroup} from "@angular/forms";
4 import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
5 import {FormPopupDetails} from "../../../../models/formControlModels/formPopupDetails.model";
6 import {updateVFModuleField, upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
7 import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
8 import {NgRedux} from "@angular-redux/store";
9 import {AppState} from "../../../../store/reducers";
10 import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
11 import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
12 import {IframeService} from "../../../../utils/iframe.service";
13 import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
14 import {AaiService} from "../../../../services/aaiService/aai.service";
15 import {BasicPopupService} from "../basic.popup.service";
16 import {
17   FormControlModel
18 } from "../../../../models/formControlModels/formControl.model";
19 import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
20 import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
21
22 export enum UpgradeFormControlNames {
23   RETAIN_VOLUME_GROUPS = 'retainVolumeGroups',
24   RETAIN_ASSIGNMENTS = 'retainAssignments',
25 }
26
27 @Injectable()
28 export class VfModuleUpgradePopupService extends VfModulePopuopService {
29
30   constructor(protected _basicControlGenerator: BasicControlGenerator,
31               protected _vfModuleControlGenerator: VfModuleControlGenerator,
32               protected _iframeService: IframeService,
33               protected _defaultDataGeneratorService: DefaultDataGeneratorService,
34               protected _aaiService: AaiService,
35               protected _basicPopupService : BasicPopupService,
36               protected _store: NgRedux<AppState>,
37               private _sharedTreeService : SharedTreeService){
38     super(_basicControlGenerator, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService,_store);
39   }
40   node: ITreeNode;
41
42   getGenericFormPopupDetails(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
43     return super.getGenericFormPopupDetails(serviceId, vnfStoreKey, vfModuleStoreKey, node, uuidData, isUpdateMode);
44   }
45
46   getDynamicInputs = () => [];
47
48   getControls = () : FormControlModel[] => {
49     return this.getUpgradeFormControls()
50   };
51
52   getTitle = (): string => 'Upgrade Module';
53
54   onSubmit(that, form: FormGroup) {
55     const node = that.uuidData.vfModule;
56     const serviceInstanceId: string = that.uuidData.serviceId;
57
58     this._store.dispatch(upgradeVFModule(node.data.modelName,  node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName));
59     this._sharedTreeService.upgradeBottomUp(node, serviceInstanceId);
60
61     this.updateVFModuleField(UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,node, serviceInstanceId, form);
62     this.updateVFModuleField(UpgradeFormControlNames.RETAIN_ASSIGNMENTS,node, serviceInstanceId, form);
63
64     this.postSubmitIframeMessage(that);
65     this.onCancel(that, form);
66   }
67
68   private updateVFModuleField(fieldName: string, node, serviceInstanceId: string, form: FormGroup) {
69     this._store.dispatch(updateVFModuleField(node.data.modelName, node.parent.data.vnfStoreKey, serviceInstanceId, node.data.dynamicModelName, fieldName, form.controls[fieldName].value));
70   }
71
72
73   getRetainVolumeGroupsControl = (): CheckboxFormControl => {
74     return new CheckboxFormControl({
75       type: FormControlType.CHECKBOX,
76       controlName: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
77       displayName: 'Retain Volume Groups',
78       dataTestId: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
79       value: true,
80       validations: []
81     })
82   };
83
84   getRetainAssignmentsControl = (): CheckboxFormControl => {
85     return new CheckboxFormControl({
86       type: FormControlType.CHECKBOX,
87       controlName: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
88       displayName: 'Retain Assignments',
89       dataTestId: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
90       value: true,
91       validations: []
92     })
93   };
94
95   getUpgradeFormControls = (): FormControlModel[] => {
96     let result: FormControlModel[] = [];
97     result.push(this.getRetainVolumeGroupsControl());
98     result.push(this.getRetainAssignmentsControl());
99     return result;
100   }
101 }