Skip to content
Snippets Groups Projects
Commit cbbec5ce authored by Hugo Leonardo's avatar Hugo Leonardo
Browse files

Bloqueando relatóro 03 com base no perfil admin

parent 7a7c4ec7
No related branches found
No related tags found
1 merge request!1v1
......@@ -38,8 +38,13 @@
<li>
<a class="dropdown-item cursor-pointer" (click)="startSimulation(planning)">{{planningText}}</a>
</li>
<li>
<li [class.disabled]="!financingSimulationIsEnable">
<ng-container *ngIf="financingSimulationIsEnable; else elseTemplate">
<a class="dropdown-item cursor-pointer" (click)="startSimulation(financing)">{{financingText}}</a>
</ng-container>
<ng-template #elseTemplate>
<a>{{financingText}}&nbsp;&nbsp;<sup>Em construção...</sup></a>
</ng-template>
</li>
</ul>
</li>
......@@ -83,8 +88,13 @@
<li>
<a class="cursor-pointer" (click)="startSimulation(planning)">{{planningText}}</a>
</li>
<li>
<li [class.disabled]="!financingSimulationIsEnable">
<ng-container *ngIf="financingSimulationIsEnable; else elseTemplate">
<a class="cursor-pointer" (click)="startSimulation(financing)">{{financingText}}</a>
</ng-container>
<ng-template #elseTemplate>
<a>{{financingText}}&nbsp;&nbsp;<sup>Em construção...</sup></a>
</ng-template>
</li>
</ul>
</div>
......
......@@ -7,6 +7,7 @@ import { SessionService } from './shared/services/session/session.service';
import { UtilitiesService } from './shared/services/utilities/utilities.service';
import { SimulationType } from './simulator/simulator/entities/enums/simulation-type.enum';
import { SimulatorService } from './simulator/simulator/services/simulator.service';
import { AuthService } from './shared/services/auth/auth.service';
@Component({
selector: 'app-root',
......@@ -20,6 +21,7 @@ export class AppComponent extends BaseUnsubscribe implements OnInit {
isQualityPage: boolean;
showFooter: boolean;
isInverseColor: boolean = false;
financingSimulationIsEnable: boolean = false;
readonly caq: SimulationType = SimulationType.caq;
readonly caqText: string = UtilitiesService.caqText;
......@@ -31,7 +33,12 @@ export class AppComponent extends BaseUnsubscribe implements OnInit {
@ViewChild('navbarMenuToggle', { static: false }) navbarMenuToggle: ElementRef;
@ViewChild('navbarContent', { static: false }) navbarContent: ElementRef;
constructor(private router: Router, private sessionService: SessionService, private utilitiesService: UtilitiesService, private simulatorService: SimulatorService) {
constructor(
private router: Router,
private sessionService: SessionService,
private utilitiesService: UtilitiesService,
private simulatorService: SimulatorService,
private authService: AuthService) {
super();
// Clear 'has error' flag.
......@@ -40,6 +47,18 @@ export class AppComponent extends BaseUnsubscribe implements OnInit {
ngOnInit(): void {
this.listenRouteEvents();
this.verifyFinancingSimulationIsEnable();
this.authService.userLoggedObserver.pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsLoggedIn => {
if (userIsLoggedIn) {
this.verifyFinancingSimulationIsEnable();
} else {
this.financingSimulationIsEnable = false;
}
});
}
startSimulation(simulationType: SimulationType): void {
......@@ -63,4 +82,10 @@ export class AppComponent extends BaseUnsubscribe implements OnInit {
});
}
private verifyFinancingSimulationIsEnable(): void {
this.authService.userIsAdmin().pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsAdmin => this.financingSimulationIsEnable = userIsAdmin);
}
}
......@@ -33,7 +33,7 @@
Acesse o Custo-aluno Qualidade (CAQ) de cada etapa/modalidade
</div>
<div class="type-start">
<button class="btn btn-primary" (click)="startSimulation(1)">Acessar</button>
<button class="btn btn-primary" (click)="startSimulation(caq)">Acessar</button>
</div>
</div>
<div class="simulation-type-container planning">
......@@ -44,7 +44,7 @@
Calcule o orçamento necessário para financiar a educação na sua localidade
</div>
<div class="type-start">
<button class="btn btn-primary" (click)="startSimulation(2)">Simular</button>
<button class="btn btn-primary" (click)="startSimulation(planning)">Simular</button>
</div>
</div>
<div class="simulation-type-container financing">
......@@ -55,7 +55,12 @@
Consulte valores para um fundo de manutenção a partir do CAQ
</div>
<div class="type-start">
<button class="btn btn-primary" (click)="startSimulation(3)">Consultar</button>
<ng-container *ngIf="financingSimulationIsEnable; else elseTemplate">
<button class="btn btn-primary" (click)="startSimulation(financing)">Consultar</button>
</ng-container>
<ng-template #elseTemplate>
<button class="btn btn-primary" disabled="disabled">Em construção...</button>
</ng-template>
</div>
</div>
</div>
......
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { takeUntil, map } from 'rxjs/operators';
import { SimulationType } from '../simulator/simulator/entities/enums/simulation-type.enum';
import { SimulatorService } from '../simulator/simulator/services/simulator.service';
import { AuthService } from '../shared/services/auth/auth.service';
import { BaseUnsubscribe } from '../shared/entities/base/base-unsubscribe';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
export class HomeComponent extends BaseUnsubscribe implements OnInit {
constructor(private simulatorService: SimulatorService) { }
financingSimulationIsEnable: boolean = false;
readonly caq: SimulationType = SimulationType.caq;
readonly planning: SimulationType = SimulationType.planning;
readonly financing: SimulationType = SimulationType.financing;
constructor(private simulatorService: SimulatorService, private authService: AuthService) {
super();
}
ngOnInit(): void {
this.verifyFinancingSimulationIsEnable();
this.authService.userLoggedObserver.pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsLoggedIn => {
if (userIsLoggedIn) {
this.verifyFinancingSimulationIsEnable();
} else {
this.financingSimulationIsEnable = false;
}
});
}
startSimulation(simulationType: SimulationType): void {
this.simulatorService.startSimulation(simulationType);
}
private verifyFinancingSimulationIsEnable(): void {
this.authService.userIsAdmin().pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsAdmin => this.financingSimulationIsEnable = userIsAdmin);
}
}
import { TestBed, async, inject } from '@angular/core/testing';
import { FinancingSimulationIsEnableGuard } from './financing-simulation-is-enable.guard';
describe('FinancingSimulationIsEnableGuard', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [FinancingSimulationIsEnableGuard]
});
});
it('should ...', inject([FinancingSimulationIsEnableGuard], (guard: FinancingSimulationIsEnableGuard) => {
expect(guard).toBeTruthy();
}));
});
import { Injectable } from '@angular/core';
import { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { AuthService } from '../../services/auth/auth.service';
@Injectable({
providedIn: 'root'
})
export class FinancingSimulationIsEnableGuard implements CanActivate, CanActivateChild {
constructor(private authService: AuthService) { }
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return this.canActivateThis(state);
}
canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return this.canActivateThis(state);
}
private canActivateThis(state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
return this.authService.userIsAdmin().pipe(
map(userIsAdmin => userIsAdmin));
}
}
......@@ -6,11 +6,12 @@ import { CaqReportComponent } from './caq-report/caq-report.component';
import { BudgetForecastReportComponent } from './budget-forecast-report/budget-forecast-report.component';
import { FinancingFundsReportComponent } from './financing-funds-report/financing-funds-report.component';
import { ItemCostExpenseReportComponent } from './item-cost-expense-report/item-cost-expense-report.component';
import { FinancingSimulationIsEnableGuard } from '../../shared/guards/auth/financing-simulation-is-enable.guard';
const routes: Routes = [
{ path: 'caqreport', component: CaqReportComponent, canDeactivate: [HasErrorGuard, HasRequiredDataGuard] },
{ path: 'budgetforecastreport', component: BudgetForecastReportComponent, canDeactivate: [HasErrorGuard, HasRequiredDataGuard] },
{ path: 'financingfundsreport', component: FinancingFundsReportComponent, canDeactivate: [HasErrorGuard, HasRequiredDataGuard] },
{ path: 'financingfundsreport', component: FinancingFundsReportComponent, canDeactivate: [HasErrorGuard, HasRequiredDataGuard], canActivate: [FinancingSimulationIsEnableGuard] },
{ path: 'itemcostexpensereport', component: ItemCostExpenseReportComponent, canDeactivate: [HasErrorGuard, HasRequiredDataGuard] },
];
......
......@@ -6,7 +6,10 @@ import { BaseUnsubscribe } from '../../../shared/entities/base/base-unsubscribe'
import { SimulatorService } from '../../simulator/services/simulator.service';
import { Functionality } from '../../../shared/entities/functionality/functionality';
import { FunctionalityRoute } from '../../../shared/entities/functionality/functionality-route';
import { SimulationType } from '../../simulator/entities/enums/simulation-type.enum';
import { SessionService } from '../../../shared/services/session/session.service';
import { UtilitiesService } from '../../../shared/services/utilities/utilities.service';
import { AuthService } from '../../../shared/services/auth/auth.service';
@Component({
selector: 'app-results',
......@@ -18,7 +21,7 @@ export class ResultsComponent extends BaseUnsubscribe implements OnInit {
homeRoute: Array<string> = [FunctionalityRoute.homeRoute];
isItemCostExpenseReport: boolean;
constructor(private router: Router, private simulatorService: SimulatorService) {
constructor(private router: Router, private simulatorService: SimulatorService, private sessionService: SessionService, private authService: AuthService) {
super();
this.router.events.pipe(
......@@ -27,11 +30,20 @@ export class ResultsComponent extends BaseUnsubscribe implements OnInit {
.subscribe((event: NavigationEnd) => {
this.isItemCostExpenseReport = event.url.indexOf('itemcostexpensereport') > 0;
if (event.url.indexOf(Functionality.caqReport.key) !== -1 ||
event.url.indexOf(Functionality.budgetForecastReport.key) !== -1 ||
event.url.indexOf(Functionality.financingFundsReport.key) !== -1 ||
event.url.endsWith(FunctionalityRoute.resultsRoute)) {
this.simulatorService.navigateToResultSimulation();
const simulationType: SimulationType = this.sessionService.getItem(UtilitiesService.simulationTypeSessionKey);
if (simulationType === SimulationType.financing) {
this.authService.userIsAdmin().pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsAdmin => {
if (userIsAdmin) {
this.navigateToResultSimulation(event.url);
} else {
this.router.navigate([FunctionalityRoute.homeRoute]);
}
});
} else {
this.navigateToResultSimulation(event.url);
}
});
}
......@@ -39,4 +51,13 @@ export class ResultsComponent extends BaseUnsubscribe implements OnInit {
ngOnInit() {
}
private navigateToResultSimulation(url: string): void {
if (url.indexOf(Functionality.caqReport.key) !== -1 ||
url.indexOf(Functionality.budgetForecastReport.key) !== -1 ||
url.indexOf(Functionality.financingFundsReport.key) !== -1 ||
url.endsWith(FunctionalityRoute.resultsRoute)) {
this.simulatorService.navigateToResultSimulation();
}
}
}
......@@ -8,6 +8,7 @@ import { SimulationType } from '../../../simulator/entities/enums/simulation-typ
import { SessionService } from '../../../../shared/services/session/session.service';
import { FunctionalityRoute } from '../../../../shared/entities/functionality/functionality-route';
import { UtilitiesService } from '../../../../shared/services/utilities/utilities.service';
import { AuthService } from '../../../../shared/services/auth/auth.service';
@Component({
selector: 'app-processing-simulation',
......@@ -16,7 +17,7 @@ import { UtilitiesService } from '../../../../shared/services/utilities/utilitie
})
export class ProcessingSimulationComponent extends BaseUnsubscribe implements OnInit {
constructor(private router: Router, private simulatorService: SimulatorService, private sessionService: SessionService) {
constructor(private router: Router, private simulatorService: SimulatorService, private sessionService: SessionService, private authService: AuthService) {
super();
}
......@@ -27,6 +28,23 @@ export class ProcessingSimulationComponent extends BaseUnsubscribe implements On
processSimulation(): void {
const simulationType: SimulationType = this.sessionService.getItem(UtilitiesService.simulationTypeSessionKey);
if (simulationType === SimulationType.financing) {
this.authService.userIsAdmin().pipe(
takeUntil(this.unsubscribe))
.subscribe(userIsAdmin => {
if (userIsAdmin) {
this.initializeSimulation(simulationType);
} else {
this.router.navigate([FunctionalityRoute.homeRoute]);
}
});
} else {
this.initializeSimulation(simulationType);
}
}
private initializeSimulation(simulationType: SimulationType): void {
this.simulatorService.initializeSimulation(simulationType).pipe(
takeUntil(this.unsubscribe))
.subscribe(result => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment