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: DrawingBoardModes.VIEW;
16 return this._http.get(url)
17 .map((result : DrawingBoardPermissions) => {
18 if(!result.isEditPermitted){
19 this.navigateToNewViewEdit(next.queryParams, viewMode);
25 this.navigateToNewViewEdit(next.queryParams, viewMode);
30 navigateToNewViewEdit(queryParams: any, mode: DrawingBoardModes): void{
31 this.store.dispatch(updateDrawingBoardStatus(mode));
32 const viewEditUrlTree = this.getNewViewEditUrlTree(queryParams, mode);
33 this._router.navigateByUrl(viewEditUrlTree);
34 window.parent.location.assign('../../serviceModels.htm#'+viewEditUrlTree.toString());
37 getNewViewEditUrlTree(queryParams: any, mode: DrawingBoardModes) {
38 return this._router.createUrlTree(
39 ['/servicePlanning/' + mode],
43 serviceModelId: queryParams['serviceModelId'],
44 serviceInstanceId: queryParams['serviceInstanceId'],
45 serviceType : queryParams['serviceType'],
46 subscriberId : queryParams['subscriberId'],
47 jobId : queryParams['jobId'],
53 export class DrawingBoardPermissions {
54 isEditPermitted : boolean