Other Pause and Resume Related Scenarios
[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
16 @Injectable()
17 export class DrawingBoardHeaderService{
18
19   constructor(private route: ActivatedRoute, private store: NgRedux<AppState>, private errorMsgService: ErrorMsgService){}
20   generateOldViewEditPath(): string{
21     let query: string =
22       `subscriberId=${this.route.snapshot.queryParams['subscriberId']}&` +
23       `subscriberName=${this.route.snapshot.queryParams['subscriberName']}&` +
24       `serviceType=${this.route.snapshot.queryParams['serviceType']}&` +
25       `serviceInstanceId=${this.route.snapshot.queryParams['serviceInstanceId']}`;
26     return '../../serviceModels.htm#/instantiate?' + query;
27   }
28
29   deleteService(serviceModelId: string, isDeleted: boolean ) {
30     if(isDeleted){
31       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Delete));
32       DrawingBoardTreeComponent.triggerDeleteActionService.next(serviceModelId);
33     } else{
34       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
35       DrawingBoardTreeComponent.triggerUndoDeleteActionService.next(serviceModelId);
36     }
37   }
38
39   upgradeService(serviceModelId: string, isUpgraded: boolean ) {
40     if(isUpgraded){
41       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Upgrade));
42     }
43     else{
44       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
45     }
46   }
47
48   showAuditInfo(serviceModelId) : void {
49     let instance: ServiceInstance = this.store.getState().service.serviceInstance[serviceModelId];
50     let model =  new ServiceModel(this.store.getState().service.serviceHierarchy[serviceModelId]);
51     AuditInfoModalComponent.openInstanceAuditInfoModal.next({instanceId : serviceModelId , type : 'SERVICE', model : model , instance : instance});
52   }
53
54   toggleResumeService(serviceModelId, isResume: boolean) : void {
55     const action: ServiceInstanceActions = isResume ? ServiceInstanceActions.Resume : ServiceInstanceActions.None;
56     this.store.dispatch(addServiceAction(serviceModelId, action));
57
58   }
59
60
61   /*************************************************
62     should return true if deploy should be disabled
63    *************************************************/
64   deployShouldBeDisabled(serviceInstanceId: string, mode : string) : boolean {
65     const serviceInstance = this.store.getState().service.serviceInstance[serviceInstanceId];
66     if(!_.isNil(serviceInstance)){
67       const validationCounter = serviceInstance.validationCounter;
68       if (!_.isNil(this.errorMsgService.errorMsgObject) && mode !== DrawingBoardModes.RETRY_EDIT) return true;
69       if(validationCounter > 0) return true;
70       if(serviceInstance.action !== ServiceInstanceActions.None) return false;
71       if(mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.RESUME) return false;
72       return !serviceInstance.isDirty;
73     }
74     return true;
75   }
76
77   getModeButton(mode : string) : string {
78     switch (mode) {
79       case DrawingBoardModes.EDIT:
80         return 'UPDATE';
81       case DrawingBoardModes.RETRY_EDIT:
82         return 'REDEPLOY';
83       case DrawingBoardModes.RESUME:
84         return 'RESUME';
85       default: return 'DEPLOY';
86     }
87   }
88   getButtonText(mode : DrawingBoardModes) : string {
89     switch (mode) {
90       case DrawingBoardModes.EDIT:
91       case DrawingBoardModes.VIEW:
92         return 'EDIT';
93       case DrawingBoardModes.RETRY_EDIT:
94       case DrawingBoardModes.RETRY:
95         return 'REDEPLOY';
96       case DrawingBoardModes.RESUME:
97         return 'RESUME';
98     }
99   }
100
101   showEditService(mode: DrawingBoardModes, serviceModelId: string): boolean{
102     const serviceInstance = this.store.getState().service.serviceInstance;
103     return mode === DrawingBoardModes.CREATE || mode === DrawingBoardModes.RECREATE || ((mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.EDIT)&&
104       !_.isNil(serviceInstance) && !_.isNil(serviceInstance[serviceModelId])&& serviceInstance[serviceModelId].action === ServiceInstanceActions.Create);
105   }
106
107   showResumeService(serviceModelId: string): boolean {
108     const serviceInstance: ServiceInstance = !_.isNil(this.store.getState().service.serviceInstance)? this.store.getState().service.serviceInstance[serviceModelId] : null;
109     if (serviceInstance)
110     {
111       return FeatureFlagsService.getFlagState(Features.FLAG_1908_RESUME_MACRO_SERVICE, this.store) &&
112         serviceInstance.vidNotions.instantiationType.toLowerCase() === "macro" &&
113         serviceInstance.subscriptionServiceType.toLowerCase() !== "transport" &&
114         serviceInstance.orchStatus &&
115         (serviceInstance.orchStatus.toLowerCase() === "assigned" ||
116           serviceInstance.orchStatus.toLowerCase() === "inventoried");
117     }
118     return false;
119   }
120 }