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";
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);
27 this.navigateToNewViewEdit(next.queryParams, viewMode);
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());
39 getNewViewEditUrlTree(queryParams: any, mode: DrawingBoardModes) {
40 return this._router.createUrlTree(
41 ['/servicePlanning/' + mode],
45 serviceModelId: queryParams['serviceModelId'],
46 serviceInstanceId: queryParams['serviceInstanceId'],
47 serviceType : queryParams['serviceType'],
48 subscriberId : queryParams['subscriberId'],
49 jobId : queryParams['jobId'],
55 export class DrawingBoardPermissions {
56 isEditPermitted : boolean