aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service.ts
blob: afc099c1e8eb01ebff74ae4f0e344f0719279842 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import {Injectable} from "@angular/core";
import {ITreeNode} from "angular-tree-component/dist/defs/api";
import {FormGroup} from "@angular/forms";
import {VfModulePopupServiceBase} from "../vfModule/vfModule.popup.service";
import {upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
import {NgRedux} from "@angular-redux/store";
import {AppState} from "../../../../store/reducers";
import {ControlGeneratorUtil} from "../../../genericForm/formControlsServices/control.generator.util.service";
import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
import {IframeService} from "../../../../utils/iframe.service";
import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
import {AaiService} from "../../../../services/aaiService/aai.service";
import {BasicPopupService} from "../basic.popup.service";
import {FormControlModel} from "../../../../models/formControlModels/formControl.model";
import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
import {mergeObjectByPathAction} from "../../../../storeUtil/utils/general/general.actions";
import {VfModuleInstance} from "../../../../models/vfModuleInstance";
import {SharedControllersService} from "../../../genericForm/formControlsServices/sharedControlles/shared.controllers.service";

export enum UpgradeFormControlNames {
  RETAIN_VOLUME_GROUPS = 'retainVolumeGroups',
  RETAIN_ASSIGNMENTS = 'retainAssignments',
}

@Injectable()
export class VfModuleUpgradePopupService extends VfModulePopupServiceBase {
  constructor(protected _basicControlGenerator: ControlGeneratorUtil,
              protected _sharedControllersService : SharedControllersService,
              protected _vfModuleControlGenerator: VfModuleControlGenerator,
              protected _iframeService: IframeService,
              protected _defaultDataGeneratorService: DefaultDataGeneratorService,
              protected _aaiService: AaiService,
              protected _basicPopupService: BasicPopupService,
              protected _store: NgRedux<AppState>,
              protected _sharedTreeService: SharedTreeService) {
    super(_basicControlGenerator, _sharedControllersService, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService, _store, _sharedTreeService);
  }

  node: ITreeNode;

  getDynamicInputs = () => null;

  getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean): FormControlModel[]  {
    let result: FormControlModel[] =[
      this.getRetainAssignmentsControl(),
      this._sharedControllersService.getSDNCControl(null, true)
    ];

    const vfModuleInstance :VfModuleInstance = this._vfModuleControlGenerator.getVfModuleInstance(serviceId, vnfStoreKey, this.uuidData, isUpdateMode);

    let volumeGroupAllowed = this._store.getState().service.serviceHierarchy[serviceId].vfModules[this.uuidData['modelName']].volumeGroupAllowed;
    let vfModuleNotExistsOnModel = this._sharedTreeService.isVfModuleCustomizationIdNotExistsOnModel(this.uuidData['vfModule'], serviceId);
    if(volumeGroupAllowed|| vfModuleNotExistsOnModel){
      result.push(this.getRetainVolumeGroupsControl());
    }
    result = this._basicControlGenerator.concatSupplementaryFile(result, vfModuleInstance);
    return result;
  };

  getTitle = (): string => 'Upgrade Module';

  onSubmit(that, form: FormGroup) {
    const node = that.uuidData.vfModule;
    const serviceInstanceId: string = that.uuidData.serviceId;
    const vnfStoreKey = node.parent.data.vnfStoreKey;
    const modelName = node.data.modelName;
    const dynamicModelName = node.data.dynamicModelName;

    this.updateFormValueWithSupplementaryFile(form, that);

    this._store.dispatch(upgradeVFModule(modelName, vnfStoreKey, serviceInstanceId, dynamicModelName));
    this._store.dispatch(mergeObjectByPathAction(['serviceInstance', serviceInstanceId, 'vnfs', vnfStoreKey, 'vfModules', modelName, dynamicModelName], form.value));
    this._sharedTreeService.upgradeBottomUp(node, serviceInstanceId);

    this.postSubmitIframeMessage(that);
    this.onCancel(that, form);
  }

  getRetainVolumeGroupsControl = (): CheckboxFormControl => {
    return new CheckboxFormControl({
      type: FormControlType.CHECKBOX,
      controlName: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
      displayName: 'Retain Volume Groups',
      dataTestId: UpgradeFormControlNames.RETAIN_VOLUME_GROUPS,
      value: false,
      validations: []
    })
  };

  getRetainAssignmentsControl = (): CheckboxFormControl => {
    return new CheckboxFormControl({
      type: FormControlType.CHECKBOX,
      controlName: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
      displayName: 'Retain Assignments',
      dataTestId: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
      value: false,
      validations: []
    })
  };
}