Other Pause and Resume Related Scenarios
[vid.git] / vid-webpack-master / src / app / drawingBoard / guards / servicePlanningGuard / drawingBoardGuard.ts
1 import {Injectable} from "@angular/core";
2 import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router";
3 import {NgRedux} from "@angular-redux/store";
4 import {Observable, of} from "rxjs";
5 import {HttpClient} from "@angular/common/http";
6 import {AppState} from "../../../shared/store/reducers";
7 import {updateDrawingBoardStatus} from "../../../shared/storeUtil/utils/global/global.actions";
8 import {DrawingBoardModes} from "../../service-planning/drawing-board.modes";
9
10 @Injectable()
11 export class DrawingBoardGuard implements CanActivate {
12   constructor(private store: NgRedux<AppState>, private _http: HttpClient, private _router : Router) { }
13   canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
14       let url : string = `../../roles/service_permissions?subscriberId=${next.queryParams['subscriberId']}&serviceType=${next.queryParams['serviceType']}`;
15     const viewMode = state.url.includes(DrawingBoardModes.RETRY_EDIT)? DrawingBoardModes.RETRY:
16                       state.url.includes(DrawingBoardModes.RESUME)? DrawingBoardModes.RESUME:
17                         DrawingBoardModes.VIEW;
18       return this._http.get(url)
19         .map((result : DrawingBoardPermissions) => {
20           if(!result.isEditPermitted){
21             this.navigateToNewViewEdit(next.queryParams, viewMode);
22             return false;
23           }else {
24             return true;
25           }
26         }).catch(err => {
27           this.navigateToNewViewEdit(next.queryParams, viewMode);
28           return of(false);
29         });
30   }
31
32   navigateToNewViewEdit(queryParams: any, mode: DrawingBoardModes): void{
33     this.store.dispatch(updateDrawingBoardStatus(mode));
34     const viewEditUrlTree = this.getNewViewEditUrlTree(queryParams, mode);
35     this._router.navigateByUrl(viewEditUrlTree);
36     window.parent.location.assign('../../serviceModels.htm#'+viewEditUrlTree.toString());
37   }
38
39   getNewViewEditUrlTree(queryParams: any, mode: DrawingBoardModes) {
40     return this._router.createUrlTree(
41       ['/servicePlanning/' +  mode],
42       {
43         queryParams:
44           {
45             serviceModelId: queryParams['serviceModelId'],
46             serviceInstanceId: queryParams['serviceInstanceId'],
47             serviceType : queryParams['serviceType'],
48             subscriberId : queryParams['subscriberId'],
49             jobId : queryParams['jobId'],
50           }
51       });
52   }
53 }
54
55 export class DrawingBoardPermissions {
56   isEditPermitted : boolean
57 }