New Angular UI from 1806
[vid.git] / vid-webpack-master / src / app / shared / services / defaultDataServiceGenerator / default.data.generator.service.ts
1 import { Injectable } from '@angular/core';
2 import * as _ from 'lodash';
3 import { createVFModuleInstance, updateVNFInstance } from '../../../service.actions';
4 import { NgRedux } from '@angular-redux/store';
5 import { AppState } from '../../../store/reducers';
6
7 @Injectable()
8 export class DefaultDataGeneratorService {
9   static controlsFieldsStatus = {};
10
11   constructor(private store: NgRedux<AppState>) { }
12
13   updateReduxOnFirstSet(serviceId: string, formServiceValues: any): void {
14     const serviceHierarchy = this.store.getState().service.serviceHierarchy[serviceId];
15     if (serviceHierarchy && !_.isEmpty(serviceHierarchy.vnfs)) {
16       for (let vnfUUID in serviceHierarchy.vnfs) {
17         for (let vnfModuleUUID in serviceHierarchy.vnfs[vnfUUID].vfModules) {
18           if (serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].properties.minCountInstances > 0) {
19
20             let vfModule = this.generateVFModule(serviceHierarchy, vnfUUID, vnfModuleUUID);
21             this.updateVNFInstanceRedux(
22               serviceHierarchy.vnfs[vnfUUID].modelName,
23               serviceId,
24               serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].properties.initialCount,
25               vfModule,
26               this.generateVNFData(serviceHierarchy, vnfUUID, vnfModuleUUID, formServiceValues),
27               vnfModuleUUID
28             );
29           }
30         }
31       }
32     }
33   }
34
35   updateVNFInstanceRedux(vnfModelName: string, serviceId: string, numberOfVfModules: number, vfModuleData: any, vnfData: any, vfModuleName : string): void {
36     if (numberOfVfModules > 0) {
37       this.store.dispatch(updateVNFInstance(vnfData, vnfData.modelInfo.modelCustomizationName, serviceId));
38       for (let i = 0; i < numberOfVfModules; i++) {
39         this.store.dispatch(createVFModuleInstance(vfModuleData, vfModuleName, serviceId));
40       }
41     }
42   }
43
44
45   generateVFModule(serviceHierarchy: any, vnfUUID: string, vnfModuleUUID: string) {
46     return {
47       'sdncPreReload': null,
48       'modelInfo': {
49         'modelType': 'VFmodule',
50         'modelInvariantId': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].invariantUuid,
51         'modelVersionId': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].uuid,
52         'modelName': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].name,
53         'modelVersion': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].version,
54         'modelCustomizationId': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].customizationUuid,
55         'modelCustomizationName': serviceHierarchy.vnfs[vnfUUID].vfModules[vnfModuleUUID].modelCustomizationName
56       },
57       'instanceParams': [
58         {}
59       ]
60     };
61   }
62
63   generateVNFData(serviceHierarchy: any, vnfName: string, vnfUUID: string, formValues: any) {
64     return {
65       'productFamilyId': formValues.productFamilyId,
66       'lcpCloudRegionId': null,
67       'tenantId': null,
68       'lineOfBusiness': null,
69       'platformName': null,
70       'modelInfo': {
71         'modelType': 'VF',
72         'modelInvariantId': serviceHierarchy.vnfs[vnfName].invariantUuid,
73         'modelVersionId': formValues.modelInfo.modelVersionId,
74         'modelName': serviceHierarchy.vnfs[vnfName].name,
75         'modelVersion': serviceHierarchy.vnfs[vnfName].version,
76         'modelCustomizationId': serviceHierarchy.vnfs[vnfName].modelCustomizationId,
77         'modelCustomizationName': serviceHierarchy.vnfs[vnfName].modelCustomizationName
78       },
79       'isUserProvidedNaming': null
80     }
81   }
82 }