5fcdc309394ee85bfc456959cc6a799d35968e7d
[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 {VfModulePopupServiceBase} from "../vfModule/vfModule.popup.service";
5 import {upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
6 import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
7 import {NgRedux} from "@angular-redux/store";
8 import {AppState} from "../../../../store/reducers";
9 import {ControlGeneratorUtil} from "../../../genericForm/formControlsServices/control.generator.util.service";
10 import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
11 import {IframeService} from "../../../../utils/iframe.service";
12 import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
13 import {AaiService} from "../../../../services/aaiService/aai.service";
14 import {BasicPopupService} from "../basic.popup.service";
15 import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
16 import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
17 import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
18 import {mergeObjectByPathAction} from "../../../../storeUtil/utils/general/general.actions";
19 import {VfModuleInstance} from "../../../../models/vfModuleInstance";
20 import {SharedControllersService} from "../../../genericForm/formControlsServices/sharedControlles/shared.controllers.service";
21
22 export enum UpgradeFormControlNames {
23   RETAIN_VOLUME_GROUPS = 'retainVolumeGroups',
24   RETAIN_ASSIGNMENTS = 'retainAssignments',
25 }
26
27 @Injectable()
28 export class VfModuleUpgradePopupService extends VfModulePopupServiceBase {
29   constructor(protected _basicControlGenerator: ControlGeneratorUtil,
30               protected _sharedControllersService : SharedControllersService,
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               protected _sharedTreeService: SharedTreeService) {
38     super(_basicControlGenerator, _sharedControllersService, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService, _store, _sharedTreeService);
39   }
40
41   node: ITreeNode;
42
43   getDynamicInputs = () => null;
44
45   getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean): FormControlModel[]  {
46     let result: FormControlModel[] =[
47       this.getRetainAssignmentsControl(),
48       this._sharedControllersService.getSDNCControl(null)
49     ];
50     const vfModuleInstance :VfModuleInstance = this._vfModuleControlGenerator.getVfModuleInstance(serviceId, vnfStoreKey, this.uuidData, isUpdateMode);
51
52     let volumeGroupAllowed = this._store.getState().service.serviceHierarchy[serviceId].vfModules[this.uuidData['modelName']].volumeGroupAllowed;
53     let vfModuleNotExistsOnModel = this._sharedTreeService.isVfModuleCustomizationIdNotExistsOnModel(this.uuidData['vfModule'], serviceId);
54     if(volumeGroupAllowed|| vfModuleNotExistsOnModel){
55       result.push(this.getRetainVolumeGroupsControl());
56     }
57     result = this._basicControlGenerator.concatSupplementaryFile(result, vfModuleInstance);
58     return result;
59   };
60
61   getTitle = (): string => 'Upgrade Module';
62
63   onSubmit(that, form: FormGroup) {
64     const node = that.uuidData.vfModule;
65     const serviceInstanceId: string = that.uuidData.serviceId;
66     const vnfStoreKey = node.parent.data.vnfStoreKey;
67     const modelName = node.data.modelName;
68     const dynamicModelName = node.data.dynamicModelName;
69
70     this.updateFormValueWithSupplementaryFile(form, that);
71
72     this._store.dispatch(upgradeVFModule(modelName, vnfStoreKey, serviceInstanceId, dynamicModelName));
73     this._store.dispatch(mergeObjectByPathAction(['serviceInstance', serviceInstanceId, 'vnfs', vnfStoreKey, 'vfModules', modelName, dynamicModelName], form.value));
74     this._sharedTreeService.upgradeBottomUp(node, serviceInstanceId);
75
76     this.postSubmitIframeMessage(that);
77     this.onCancel(that, form);
78   }
79
80   getRetainVolumeGroupsControl = (): CheckboxFormControl => {
81     return new CheckboxFormControl({
82       type: FormControlType.CHECKBOX,
83       controlName: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
84       displayName: 'Retain Volume Groups',
85       dataTestId: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
86       value: true,
87       validations: []
88     })
89   };
90
91   getRetainAssignmentsControl = (): CheckboxFormControl => {
92     return new CheckboxFormControl({
93       type: FormControlType.CHECKBOX,
94       controlName: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
95       displayName: 'Retain Assignments',
96       dataTestId: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
97       value: true,
98       validations: []
99     })
100   };
101 }