blob: d486fb4fa594cf65cbf7ed92e4b8aad47b040ffe [file] [log] [blame]
import {Injectable} from "@angular/core";
import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from "@angular/router";
import {NgRedux} from "@angular-redux/store";
import {Observable, of} from "rxjs";
import {HttpClient} from "@angular/common/http";
import {AppState} from "../../../shared/store/reducers";
import {updateDrawingBoardStatus} from "../../../shared/storeUtil/utils/global/global.actions";
import {DrawingBoardModes} from "../../service-planning/drawing-board.modes";
@Injectable()
export class DrawingBoardGuard implements CanActivate {
constructor(private store: NgRedux<AppState>, private _http: HttpClient, private _router : Router) { }
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
let url : string = `../../roles/service_permissions?subscriberId=${next.queryParams['subscriberId']}&serviceType=${next.queryParams['serviceType']}`;
const viewMode = state.url.includes(DrawingBoardModes.RETRY_EDIT)? DrawingBoardModes.RETRY: DrawingBoardModes.VIEW;
return this._http.get(url)
.map((result : DrawingBoardPermissions) => {
if(!result.isEditPermitted){
this.navigateToNewViewEdit(next.queryParams, viewMode);
return false;
}else {
return true;
}
}).catch(err => {
this.navigateToNewViewEdit(next.queryParams, viewMode);
return of(false);
});
}
navigateToNewViewEdit(queryParams: any, mode: DrawingBoardModes): void{
this.store.dispatch(updateDrawingBoardStatus(mode));
const viewEditUrlTree = this.getNewViewEditUrlTree(queryParams, mode);
this._router.navigateByUrl(viewEditUrlTree);
window.parent.location.assign('../../serviceModels.htm#'+viewEditUrlTree.toString());
}
getNewViewEditUrlTree(queryParams: any, mode: DrawingBoardModes) {
return this._router.createUrlTree(
['/servicePlanning/' + mode],
{
queryParams:
{
serviceModelId: queryParams['serviceModelId'],
serviceInstanceId: queryParams['serviceInstanceId'],
serviceType : queryParams['serviceType'],
subscriberId : queryParams['subscriberId'],
jobId : queryParams['jobId'],
}
});
}
}
export class DrawingBoardPermissions {
isEditPermitted : boolean
}