946c5cab5fe3171072c3e9d16f035f551dc326c8
[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
15 @Injectable()
16 export class DrawingBoardHeaderService{
17
18   constructor(private route: ActivatedRoute, private store: NgRedux<AppState>, private errorMsgService: ErrorMsgService){}
19   generateOldViewEditPath(): string{
20     let query: string =
21       `subscriberId=${this.route.snapshot.queryParams['subscriberId']}&` +
22       `subscriberName=${this.route.snapshot.queryParams['subscriberName']}&` +
23       `serviceType=${this.route.snapshot.queryParams['serviceType']}&` +
24       `serviceInstanceId=${this.route.snapshot.queryParams['serviceInstanceId']}`;
25     return '../../serviceModels.htm#/instantiate?' + query;
26   }
27
28   deleteService(serviceModelId: string, isDeleted: boolean ) {
29     if(isDeleted){
30       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.Delete));
31       DrawingBoardTreeComponent.triggerDeleteActionService.next(serviceModelId);
32     } else{
33       this.store.dispatch(addServiceAction(serviceModelId, ServiceInstanceActions.None));
34       DrawingBoardTreeComponent.triggerUndoDeleteActionService.next(serviceModelId);
35     }
36   }
37
38   showAuditInfo(serviceModelId) : void {
39     let instance: ServiceInstance = this.store.getState().service.serviceInstance[serviceModelId];
40     let model =  new ServiceModel(this.store.getState().service.serviceHierarchy[serviceModelId]);
41     AuditInfoModalComponent.openInstanceAuditInfoModal.next({instanceId : serviceModelId , type : 'SERVICE', model : model , instance : instance, trackById: instance.trackById});
42   }
43
44
45   /*************************************************
46     should return true if deploy should be disabled
47    *************************************************/
48   deployShouldBeDisabled(serviceInstanceId: string, mode : string) : boolean {
49     const serviceInstance = this.store.getState().service.serviceInstance[serviceInstanceId];
50     if(!_.isNil(serviceInstance)){
51       const validationCounter = serviceInstance.validationCounter;
52       if (!_.isNil(this.errorMsgService.errorMsgObject)&& mode !== DrawingBoardModes.RETRY_EDIT) return true;
53       if(validationCounter > 0) return true;
54       if(serviceInstance.action !== ServiceInstanceActions.None) return false;
55       if(mode === DrawingBoardModes.RETRY_EDIT) return false;
56       return !serviceInstance.isDirty;
57     }
58     return true;
59   }
60
61   getModeButton(mode : string) : string {
62     switch (mode) {
63       case DrawingBoardModes.EDIT:
64         return 'UPDATE';
65       case DrawingBoardModes.RETRY_EDIT:
66         return 'REDEPLOY';
67       default: return 'DEPLOY';
68     }
69   }
70   getButtonText(mode : DrawingBoardModes) : string {
71     switch (mode) {
72       case DrawingBoardModes.EDIT:
73       case DrawingBoardModes.VIEW:
74         return 'EDIT';
75       case DrawingBoardModes.RETRY_EDIT:
76       case DrawingBoardModes.RETRY:
77         return 'REDEPLOY';
78     }
79   }
80
81   showEditService(mode: DrawingBoardModes, serviceModelId: string): boolean{
82     const serviceInstance = this.store.getState().service.serviceInstance;
83     return mode === DrawingBoardModes.CREATE || ((mode === DrawingBoardModes.RETRY_EDIT || mode === DrawingBoardModes.EDIT)&&
84       !_.isNil(serviceInstance) && !_.isNil(serviceInstance[serviceModelId])&& serviceInstance[serviceModelId].action === ServiceInstanceActions.Create);
85   }
86 }