|
- import { Component, OnInit } from '@angular/core';
-
- type State = 'VIEW INITIAL DETAILS'|'ENTER MORE DETAILS'|'ASSIGN COMMITTEE'|'REVIEW NON COMPLIANCE'|'CONCUR COMPLIANCE REVIEW'|'CLOSING REMARKS'|'PREPARE PRELIMINARY LETTER'|'RESPOND TO PRELIMINARY LETTER';
- type Role = 'Investigator'|'Hod'|'Panel'|'Customer';
-
- @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;
- isNonCompliant = false;
-
- isPanelConcurring = true;
- panelRemarks = '';
-
- state: State;
- stateHistory: Array<State> = [];
-
- loginRole: Role;
-
- canExecute: boolean;
- executingRole: Role;
-
-
- constructor() {
- const panelRemarks = localStorage.getItem('panelRemarks');
-
- if (panelRemarks) {
- this.panelRemarks = panelRemarks;
- }
-
- this.isNonCompliant = localStorage.getItem('isNonCompliant') === 'true';
-
- 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 if (loginEmail && loginEmail.toLocaleLowerCase().startsWith('customer')) {
- this.loginRole = 'Customer';
- } 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;
- case 'REVIEW NON COMPLIANCE':
- this.state = 'REVIEW NON COMPLIANCE';
- this.executingRole = 'Investigator';
- break;
- case 'CONCUR COMPLIANCE REVIEW':
- this.state = 'CONCUR COMPLIANCE REVIEW';
- this.executingRole = 'Panel';
- break;
- case 'CLOSING REMARKS':
- this.state = 'CLOSING REMARKS';
- this.executingRole = 'Investigator';
- break;
- case 'PREPARE PRELIMINARY LETTER':
- this.state = 'PREPARE PRELIMINARY LETTER';
- this.executingRole = 'Investigator';
- break;
- case 'RESPOND TO PRELIMINARY LETTER':
- this.state = 'RESPOND TO PRELIMINARY LETTER';
- this.executingRole = 'Customer';
- break;
- default:
- this.state = 'VIEW INITIAL DETAILS';
- this.executingRole = 'Investigator';
- }
-
- this.canExecute = this.loginRole === this.executingRole;
- }
-
- updateIsNonCompliant(isNonCompliant: boolean) {
- this.isNonCompliant = isNonCompliant;
- localStorage.setItem('isNonCompliant', String(isNonCompliant));
- }
-
- updatePanelRemarks(remarks: string) {
- this.panelRemarks = remarks;
- localStorage.setItem('panelRemarks', remarks);
- }
-
- 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;
- case 'ASSIGN COMMITTEE':
- this.state = 'REVIEW NON COMPLIANCE';
- this.executingRole = 'Investigator';
- break;
- case 'REVIEW NON COMPLIANCE':
- this.state = 'CONCUR COMPLIANCE REVIEW';
- this.executingRole = 'Panel';
- break;
- case 'CONCUR COMPLIANCE REVIEW':
- if (!this.isPanelConcurring) {
- this.state = 'REVIEW NON COMPLIANCE';
- } else {
- if (this.isNonCompliant) {
- this.state = 'PREPARE PRELIMINARY LETTER';
- } else {
- this.state = 'CLOSING REMARKS';
- }
- }
- this.executingRole = 'Investigator';
- break;
- case 'PREPARE PRELIMINARY LETTER':
- this.state = 'RESPOND TO PRELIMINARY LETTER';
- this.executingRole = 'Customer';
- break;
- }
-
- localStorage.setItem('state', this.state);
-
- this.canExecute = this.loginRole === this.executingRole;
- }
-
- goBack() {
- const state = this.stateHistory.pop();
-
- if (state) {
- this.state = state;
- }
-
- switch (this.state) {
- case 'ASSIGN COMMITTEE':
- this.executingRole = 'Hod';
- break;
- case 'CONCUR COMPLIANCE REVIEW':
- this.executingRole = 'Panel';
- break;
- default:
- this.executingRole = 'Investigator';
- }
-
- localStorage.setItem('state', this.state);
-
- this.canExecute = this.loginRole === this.executingRole;
- }
-
- ngOnInit(): void {
- }
-
- }
|