Files
cbsnexora/src/app/shared/footer/footer.component.ts
T

150 lines
4.7 KiB
TypeScript

/** Angular Imports */
import { Component, Input, OnDestroy, OnInit, inject } from '@angular/core';
import { Alert } from 'app/core/alert/alert.model';
import { AlertService } from 'app/core/alert/alert.service';
import { AuthenticationService } from 'app/core/authentication/authentication.service';
import { Dates } from 'app/core/utils/dates';
import { SettingsService } from 'app/settings/settings.service';
import { SystemService } from 'app/system/system.service';
import { VersionService } from 'app/system/version.service';
/** Environment Configuration */
import { environment } from '../../../environments/environment';
import { Subscription } from 'rxjs';
import { NgClass, DatePipe } from '@angular/common';
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
/**
* Footer component.
*/
@Component({
selector: 'mifosx-footer',
templateUrl: './footer.component.html',
styleUrls: ['./footer.component.scss'],
imports: [
...STANDALONE_SHARED_IMPORTS,
NgClass,
DatePipe
]
})
export class FooterComponent implements OnInit, OnDestroy {
private systemService = inject(SystemService);
private settingsService = inject(SettingsService);
private authenticationService = inject(AuthenticationService);
private alertService = inject(AlertService);
private dateUtils = inject(Dates);
private versionService = inject(VersionService);
@Input() styleClass: string = '';
@Input() variant: 'default' | 'compact' = 'default';
/** Mifos X version. */
versions: any = {
mifos: environment.version,
fineract: {
version: '',
hash: ''
}
};
/** Mifos X hash */
hash: string = environment.hash;
server = '';
/** Business Date */
businessDate: Date = null;
/** Tenant name */
tenant: string;
isBusinessDateEnabled = false;
isBusinessDateDefined = false;
/** Subscription to alerts. */
alert$: Subscription;
timer: any;
displayBackEndInfo = true;
constructor() {
this.displayBackEndInfo = environment.displayBackEndInfo === 'true';
}
ngOnInit() {
if (this.displayBackEndInfo) {
this.alert$ = this.alertService.alertEvent.subscribe((alertEvent: Alert) => {
const alertType = alertEvent.type;
if (alertType === SettingsService.businessDateType + ' Set Config') {
this.isBusinessDateEnabled = alertEvent.message === 'enabled' ? true : false;
this.isBusinessDateDefined = false;
if (this.isBusinessDateEnabled) {
this.setBusinessDate();
}
} else if (alertType === SettingsService.businessDateType + ' Set') {
if (this.isBusinessDateEnabled) {
this.setBusinessDate();
}
} else if (alertType === 'Authentication Start') {
this.timer = setTimeout(() => {
this.getConfigurations();
}, 60000);
}
});
this.getConfigurations();
this.server = this.settingsService.server;
this.tenant = this.tenantIdentifier();
this.versionService.getBackendInfo().subscribe((data: any) => {
if (data.git && data.git.build && data.git.build.version) {
const buildVersion: string = data.git.build.version.split('-');
this.versions.fineract.version = buildVersion[0];
this.versions.fineract.hash = buildVersion[1];
}
});
}
}
tenantIdentifier() {
if (!this.settingsService.tenantIdentifier || this.settingsService.tenantIdentifier === '') {
return 'default';
}
return this.settingsService.tenantIdentifier;
}
ngOnDestroy() {
if (this.displayBackEndInfo) {
clearTimeout(this.timer);
}
}
/**
* Get the Configuration for Business Date
*/
getConfigurations(): void {
if (this.authenticationService.isAuthenticated()) {
this.systemService
.getConfigurationByName(SettingsService.businessDateConfigName)
.subscribe((configurationData: any) => {
this.isBusinessDateEnabled = configurationData.enabled;
this.settingsService.setBusinessDateConfig(configurationData.enabled);
if (this.isBusinessDateEnabled) {
this.setBusinessDate();
this.timer = setTimeout(() => {
this.getConfigurations();
}, 60000);
}
});
} else {
clearTimeout(this.timer);
}
}
/**
* Get the Business Date data
*/
setBusinessDate(): void {
this.systemService.getBusinessDate(SettingsService.businessDateType).subscribe((data: any) => {
this.businessDate = new Date(data.date);
this.settingsService.setBusinessDate(
this.dateUtils.formatDate(this.businessDate, SettingsService.businessDateFormat)
);
this.isBusinessDateDefined = true;
});
}
}