fe6a2580dca76b7bd90f133607e3f92d8e189ed1
[vid.git] / vid-webpack-master / src / app / shared / components / genericForm / formControlsServices / networkGenerator / network.control.generator.ts
1 import {Injectable} from "@angular/core";
2 import {GenericFormService} from "../../generic-form.service";
3 import {AaiService} from "../../../../services/aaiService/aai.service";
4 import {NgRedux} from "@angular-redux/store";
5 import {HttpClient} from "@angular/common/http";
6 import {ControlGeneratorUtil} from "../control.generator.util.service";
7 import * as _ from 'lodash';
8
9 import {FormControlModel,} from "../../../../models/formControlModels/formControl.model";
10 import {LogService} from "../../../../utils/log/log.service";
11 import {AppState} from "../../../../store/reducers";
12 import {NetworkInstance} from "../../../../models/networkInstance";
13 import {NetworkModel} from "../../../../models/networkModel";
14 import {SharedControllersService} from "../sharedControlles/shared.controllers.service";
15
16
17 export enum FormControlNames {
18   INSTANCE_NAME = 'instanceName',
19   PRODUCT_FAMILY_ID = 'productFamilyId',
20   LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
21   ROLLBACK_ON_FAILURE = 'rollbackOnFailure'
22 }
23
24
25 @Injectable()
26 export class NetworkControlGenerator {
27   aaiService: AaiService;
28
29   constructor(private genericFormService: GenericFormService,
30               private _basicControlGenerator: ControlGeneratorUtil,
31               private _sharedControllersService: SharedControllersService,
32               private store: NgRedux<AppState>,
33               private http: HttpClient,
34               private _aaiService: AaiService,
35               private _logService: LogService) {
36     this.aaiService = _aaiService;
37   }
38
39   getNetworkInstance = (serviceId: string, networkName: string, isUpdateMode: boolean): NetworkInstance => {
40     let networkInstance: NetworkInstance = null;
41     if (isUpdateMode && this.store.getState().service.serviceInstance[serviceId] && _.has(this.store.getState().service.serviceInstance[serviceId].networks, networkName)) {
42       networkInstance = Object.assign({}, this.store.getState().service.serviceInstance[serviceId].networks[networkName]);
43     }
44     return networkInstance;
45   };
46
47
48   getMacroFormControls(serviceId: string, networkStoreKey: string, networkName: string, isUpdateMode: boolean): FormControlModel[] {
49     networkStoreKey = _.isNil(networkStoreKey) ? networkName : networkStoreKey;
50
51     if (_.isNil(serviceId) || _.isNil(networkStoreKey) || _.isNil(networkName)) {
52       this._logService.error('should provide serviceId, networkName, networkStoreKey', serviceId);
53       return [];
54     }
55     const networkInstance = this._basicControlGenerator.retrieveInstanceIfUpdateMode(this.store, this.getNetworkInstance(serviceId, networkStoreKey, isUpdateMode));
56     const networkModel = new NetworkModel(this.store.getState().service.serviceHierarchy[serviceId].networks[networkName]);
57     let result: FormControlModel[] = [];
58     const flags = this.store.getState().global.flags;
59
60     if (!_.isNil(networkModel)) {
61       result.push(this.getInstanceName(networkInstance, serviceId, networkName, networkModel.isEcompGeneratedNaming));
62       result.push(this._sharedControllersService.getProductFamilyControl(networkInstance, result, false));
63       result.push(this._sharedControllersService.getLcpRegionControl(serviceId, networkInstance, result));
64       result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
65       result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
66       result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
67       result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
68     }
69     return result;
70
71   }
72
73   getAlaCarteFormControls(serviceId: string, networkStoreKey: string, networkName: string, isUpdateMode: boolean): FormControlModel[] {
74     networkStoreKey = _.isNil(networkStoreKey) ? networkName : networkStoreKey;
75     if (_.isNil(serviceId) || _.isNil(networkStoreKey) || _.isNil(networkName)) {
76       this._logService.error('should provide serviceId, networkName, networkStoreKey', serviceId);
77       return [];
78     }
79
80     let result: FormControlModel[] = [];
81     const networkInstance = this._basicControlGenerator.retrieveInstanceIfUpdateMode(this.store, this.getNetworkInstance(serviceId, networkStoreKey, isUpdateMode));
82     const networkModel = new NetworkModel(this.store.getState().service.serviceHierarchy[serviceId].networks[networkName]);
83     const flags = this.store.getState().global.flags;
84
85     if (!_.isNil(networkModel)) {
86       result.push(this.getInstanceName(networkInstance, serviceId, networkName, networkModel.isEcompGeneratedNaming));
87       result.push(this._sharedControllersService.getProductFamilyControl(networkInstance, result, false));
88       result.push(this._sharedControllersService.getLcpRegionControl(serviceId, networkInstance, result));
89       result.push(this._sharedControllersService.getLegacyRegion(networkInstance));
90       result.push(this._sharedControllersService.getTenantControl(serviceId, networkInstance));
91       result.push(this._sharedControllersService.getPlatformMultiselectControl(networkInstance, result, flags['FLAG_2006_NETWORK_PLATFORM_MULTI_SELECT']));
92       result.push(this._sharedControllersService.getMultiSelectLineOfBusinessControl(networkInstance, flags['FLAG_2006_NETWORK_LOB_MULTI_SELECT']));
93       result.push(this._sharedControllersService.getRollbackOnFailureControl(networkInstance));
94     }
95     return result;
96   }
97
98
99   getInstanceName(instance: any, serviceId: string, networkName: string, isEcompGeneratedNaming: boolean): FormControlModel {
100     const networkModel: NetworkModel = this.store.getState().service.serviceHierarchy[serviceId].networks[networkName];
101     return this._sharedControllersService.getInstanceNameController(instance, serviceId, isEcompGeneratedNaming, networkModel);
102   }
103 }