1 import {Injectable} from "@angular/core";
2 import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router} from "@angular/router";
3 import {NgRedux} from "@angular-redux/store";
4 import {Observable} 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 import {of} from "rxjs";
12 export class DrawingBoardGuard implements CanActivate {
13 constructor(private store: NgRedux<AppState>, private _http: HttpClient, private _router : Router) { }
14 canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
15 let url : string = `/vid/roles/service_permissions?subscriberId=${next.queryParams['subscriberId']}&serviceType=${next.queryParams['serviceType']}`;
16 const viewMode = state.url.includes(DrawingBoardModes.RETRY_EDIT)? DrawingBoardModes.RETRY: DrawingBoardModes.VIEW;
17 return this._http.get(url)
18 .map((result : DrawingBoardPermissions) => {
19 if(!result.isEditPermitted){
20 this.navigateToNewViewEdit(next.queryParams, viewMode);
26 this.navigateToNewViewEdit(next.queryParams, viewMode);
31 navigateToNewViewEdit(queryParams: any, mode: DrawingBoardModes): void{
32 this.store.dispatch(updateDrawingBoardStatus(mode));
33 const viewEditUrlTree = this.getNewViewEditUrlTree(queryParams, mode);
34 this._router.navigateByUrl(viewEditUrlTree);
35 window.parent.location.assign('../../serviceModels.htm#'+viewEditUrlTree.toString());
38 getNewViewEditUrlTree(queryParams: any, mode: DrawingBoardModes) {
39 return this._router.createUrlTree(
40 ['/servicePlanning/' + mode],
44 serviceModelId: queryParams['serviceModelId'],
45 serviceInstanceId: queryParams['serviceInstanceId'],
46 serviceType : queryParams['serviceType'],
47 subscriberId : queryParams['subscriberId'],
48 jobId : queryParams['jobId'],
54 export class DrawingBoardPermissions {
55 isEditPermitted : boolean