Audit screen fix
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / drawing-board-header / drawing-board-header.service.ts
1 import {Injectable} from "@angular/core";
2 import {ActivatedRoute} from "@angular/router";
3 import {addServiceAction} from "../../../shared/storeUtil/utils/service/service.actions";
4 import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
5 import {AppState} from "../../../shared/store/reducers";
6 import {DrawingBoardTreeComponent} from "../drawing-board-tree/drawing-board-tree.component";
7 import {AuditInfoModalComponent} from "../../../shared/components/auditInfoModal/auditInfoModal.component";
8 import {ServiceModel} from "../../../shared/models/serviceModel";
9 import {NgRedux} from "@angular-redux/store";
10 import * as _ from 'lodash';
11 import {ErrorMsgService} from "../../../shared/components/error-msg/error-msg.service";
12 import {DrawingBoardModes} from "../drawing-board.modes";
13 import {ServiceInstance} from "../../../shared/models/serviceInstance";
14 import {FeatureFlagsService, Features} from "../../../shared/services/featureFlag/feature-flags.service";
15 import {ServiceInfoModel} from "../../../shared/server/serviceInfo/serviceInfo.model";
16
17 @Injectable()
18 export class DrawingBoardHeaderService{
19
20   constructor(private route: ActivatedRoute, private store: NgRedux<AppState>, private errorMsgService: ErrorMsgService){}
21   generateOldViewEditPath(): string{
22     let query: string =
23       `subscriberId=${this.route.snapshot.queryParams['subscriberId']}&` +
24       `subscriberName=${this.route.snapshot.queryParams['subscriberName']}&` +
25       `serviceType=${this.route.snapshot.queryParams['serviceType']}&` +
26       `serviceInstanceId=${this.route.snapshot.queryParams['serviceInstanceId']}`;
27     return '../../serviceModels.htm#/instantiate?' + query;
28   }
29
30   deleteService(serviceModelId: string, isDeleted: boolean ) {
31     if(isDeleted){
32       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Delete));
33       DrawingBoardTreeComponent.triggerDeleteActionService.next(serviceModelId);
34     } else{
35       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
36       DrawingBoardTreeComponent.triggerUndoDeleteActionService.next(serviceModelId);
37     }
38   }
39
40   upgradeService(serviceModelId: string, isUpgraded: boolean ) {
41     if(isUpgraded){
42       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Upgrade));
43     }
44     else{
45       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
46     }
47   }
48
49   showAuditInfo(serviceModelId) : void {
50     let instance: ServiceInstance = this.store.getState().service.serviceInstance[serviceModelId];
51     let model =  new ServiceModel(this.store.getState().service.serviceHierarchy[serviceModelId]);
52     let serviceInfoModel: ServiceInfoModel = this.store.getState().service.serviceInfoModel;
53     if(serviceInfoModel == null || serviceInfoModel == undefined){
54       console.log("serviceInfoModel is null or undefined");
55       let serviceInfoModelNew : any = {
56         serviceInstanceId : instance.instanceId,
57         serviceInstanceName: instance.instanceName,
58         serviceModelVersion: instance.modelInfo.modelVersion,
59         serviceModelName: instance.modelInfo.modelName,
60         aLaCarte: true
61       };
62       console.log("New service Info Model : ", serviceInfoModelNew);
63       AuditInfoModalComponent.openModal.next(serviceInfoModelNew);
64     // AuditInfoModalComponent.openInstanceAuditInfoModal.next({instanceId : serviceModelId , type : 'SERVICE', model : model , instance : instance});
65     } else {
66       console.log("ServiceInfoModel is not null: ", serviceInfoModel);
67       AuditInfoModalComponent.openModal.next(serviceInfoModel);
68     }
69   }
70
71   toggleResumeService(serviceModelId, isResume: boolean) : void {
72     const action: ServiceInstanceActions = isResume ? ServiceInstanceActions.Resume : ServiceInstanceActions.None;
73     this.store.dispatch(addServiceAction(serviceModelId, action));
74
75   }
76
77
78   /*************************************************
79     should return true if deploy should be disabled
80    *************************************************/
81   deployShouldBeDisabled(serviceInstanceId: string, mode : string) : boolean {
82     const serviceInstance = this.store.getState().service.serviceInstance[serviceInstanceId];
83     if(!_.isNil(serviceInstance)){
84       const validationCounter = serviceInstance.validationCounter;
85       if (!_.isNil(this.errorMsgService.errorMsgObject) && mode !== DrawingBoardModes.RETRY_EDIT) return true;
86       if(validationCounter > 0) return true;
87       if(serviceInstance.action !== ServiceInstanceActions.None) return false;
88       if(mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.RESUME) return false;
89       return !serviceInstance.isDirty;
90     }
91     return true;
92   }
93
94   getModeButton(mode : string) : string {
95     switch (mode) {
96       case DrawingBoardModes.EDIT:
97         return 'UPDATE';
98       case DrawingBoardModes.RETRY_EDIT:
99         return 'REDEPLOY';
100       case DrawingBoardModes.RESUME:
101         return 'RESUME';
102       default: return 'DEPLOY';
103     }
104   }
105   getButtonText(mode : DrawingBoardModes) : string {
106     switch (mode) {
107       case DrawingBoardModes.EDIT:
108       case DrawingBoardModes.VIEW:
109         return 'EDIT';
110       case DrawingBoardModes.RETRY_EDIT:
111       case DrawingBoardModes.RETRY:
112         return 'REDEPLOY';
113       case DrawingBoardModes.RESUME:
114         return 'RESUME';
115     }
116   }
117
118   showEditService(mode: DrawingBoardModes, serviceModelId: string): boolean{
119     const serviceInstance = this.store.getState().service.serviceInstance;
120     return mode === DrawingBoardModes.CREATE || mode === DrawingBoardModes.RECREATE || ((mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.EDIT)&&
121       !_.isNil(serviceInstance) && !_.isNil(serviceInstance[serviceModelId])&& serviceInstance[serviceModelId].action === ServiceInstanceActions.Create);
122   }
123
124   showResumeService(serviceModelId: string): boolean {
125     const serviceInstance: ServiceInstance = !_.isNil(this.store.getState().service.serviceInstance)? this.store.getState().service.serviceInstance[serviceModelId] : null;
126     if (serviceInstance)
127     {
128       return FeatureFlagsService.getFlagState(Features.FLAG_1908_RESUME_MACRO_SERVICE, this.store) &&
129         serviceInstance.vidNotions.instantiationType.toLowerCase() === "macro" &&
130         serviceInstance.subscriptionServiceType.toLowerCase() !== "transport" &&
131         serviceInstance.orchStatus &&
132         (serviceInstance.orchStatus.toLowerCase() === "assigned" ||
133           serviceInstance.orchStatus.toLowerCase() === "inventoried");
134     }
135     return false;
136   }
137 }