import { Component, OnInit } from '@angular/core'; type State = 'VIEW INITIAL DETAILS'|'ENTER MORE DETAILS'|'ASSIGN COMMITTEE'; type Role = 'Investigator'|'Hod'|'Panel'; @Component({ selector: 'app-investigate-business-entities-and-individuals', templateUrl: './investigate-business-entities-and-individuals.component.html', styleUrls: ['./investigate-business-entities-and-individuals.component.scss'] }) export class InvestigateBusinessEntitiesAndIndividualsComponent implements OnInit { hasEnoughData = false; state: State; stateHistory: Array = []; loginRole: Role; canExecute: boolean; executingRole: Role; constructor() { const loginEmail = localStorage.getItem('loginEmail'); if (loginEmail && loginEmail.toLocaleLowerCase().startsWith('hod')) { this.loginRole = 'Hod'; } else if (loginEmail && loginEmail.toLocaleLowerCase().startsWith('panel')) { this.loginRole = 'Panel'; } else { this.loginRole = 'Investigator'; } const savedState = localStorage.getItem('state'); switch (savedState) { case 'ENTER MORE DETAILS': this.state = 'ENTER MORE DETAILS'; this.executingRole = 'Investigator'; break; case 'ASSIGN COMMITTEE': this.state = 'ASSIGN COMMITTEE'; this.executingRole = 'Hod'; break; default: this.state = 'VIEW INITIAL DETAILS'; this.executingRole = 'Investigator'; } this.canExecute = this.loginRole === this.executingRole; } proceed() { this.stateHistory.push(this.state); switch (this.state) { case 'VIEW INITIAL DETAILS': if (this.hasEnoughData) { this.state = 'ASSIGN COMMITTEE'; this.executingRole = 'Hod'; } else { this.state = 'ENTER MORE DETAILS'; this.executingRole = 'Investigator'; } break; case 'ENTER MORE DETAILS': this.state = 'ASSIGN COMMITTEE'; this.executingRole = 'Hod'; break; } localStorage.setItem('state', this.state); this.canExecute = this.loginRole === this.executingRole; } goBack() { const state = this.stateHistory.pop(); if (state) { this.state = state; } } ngOnInit(): void { } }