Show "retain VG" for vfModule that is allowed or that is an "alien"
[vid.git] / vid-webpack-master / src / app / shared / components / genericFormPopup / genericFormServices / vfModuleUpgrade / vfModule.upgrade.popuop.service.ts
index ff3f23f..eddfee0 100644 (file)
 import {Injectable} from "@angular/core";
 import {ITreeNode} from "angular-tree-component/dist/defs/api";
 import {FormGroup} from "@angular/forms";
-import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
-import {FormPopupDetails} from "../../../../models/formControlModels/formPopupDetails.model";
-import {updateVFModuleField, upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
+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 {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+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 {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 VfModulePopuopService {
-  constructor(protected _basicControlGenerator: BasicControlGenerator,
+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 _basicPopupService: BasicPopupService,
               protected _store: NgRedux<AppState>,
-              private _sharedTreeService : SharedTreeService){
-    super(_basicControlGenerator, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService,_store);
+              private _sharedTreeService: SharedTreeService) {
+    super(_basicControlGenerator, _sharedControllersService, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService, _store);
   }
-  node: ITreeNode;
 
-  getGenericFormPopupDetails(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
-    return super.getGenericFormPopupDetails(serviceId, vnfStoreKey, vfModuleStoreKey, node, uuidData, isUpdateMode);
-  }
+  node: ITreeNode;
 
-  getDynamicInputs = () => [];
+  getDynamicInputs = () => null;
 
-  getControls = () : FormControlModel[] => {
-    return [
-      new CheckboxFormControl({
-        type: FormControlType.CHECKBOX,
-        controlName: 'retainAssignments',
-        displayName: 'Retain Assignments',
-        dataTestId: 'retainAssignments',
-        value: true,
-        validations: []
-      })
+  getControls(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, isUpdateMode: boolean): FormControlModel[]  {
+    let result: FormControlModel[] =[
+      this.getRetainAssignmentsControl(),
+      this._sharedControllersService.getSDNCControl(null)
     ];
-  };
+    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(node.data.modelName,  node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName));
+    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._store.dispatch(updateVFModuleField(node.data.modelName,  node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName, 'retainAssignments', form.controls['retainAssignments'].value));
 
     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: true,
+      validations: []
+    })
+  };
+
+  getRetainAssignmentsControl = (): CheckboxFormControl => {
+    return new CheckboxFormControl({
+      type: FormControlType.CHECKBOX,
+      controlName: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
+      displayName: 'Retain Assignments',
+      dataTestId: UpgradeFormControlNames.RETAIN_ASSIGNMENTS,
+      value: true,
+      validations: []
+    })
+  };
 }