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';
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";
17 export enum FormControlNames {
18 INSTANCE_NAME = 'instanceName',
19 PRODUCT_FAMILY_ID = 'productFamilyId',
20 LCPCLOUD_REGION_ID = 'lcpCloudRegionId',
21 ROLLBACK_ON_FAILURE = 'rollbackOnFailure'
26 export class NetworkControlGenerator {
27 aaiService: AaiService;
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;
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]);
44 return networkInstance;
48 getMacroFormControls(serviceId: string, networkStoreKey: string, networkName: string, isUpdateMode: boolean): FormControlModel[] {
49 networkStoreKey = _.isNil(networkStoreKey) ? networkName : networkStoreKey;
51 if (_.isNil(serviceId) || _.isNil(networkStoreKey) || _.isNil(networkName)) {
52 this._logService.error('should provide serviceId, networkName, networkStoreKey', serviceId);
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;
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']));
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);
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;
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));
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);