import { Injector } from '@angular/core';
import { AppConsts } from '@shared/AppConsts';
import { AppComponentBase } from '@shared/common/app-component-base';
import { TenantLoginInfoDto, EditionPaymentType, SubscriptionStartType } from '@shared/service-proxies/service-proxies';
import * as moment from 'moment';
import { ToggleOptions } from '@metronic/app/core/_base/layout/directives/toggle.directive';
export class ThemesLayoutBaseComponent extends AppComponentBase {
tenant: TenantLoginInfoDto = new TenantLoginInfoDto();
subscriptionStartType = SubscriptionStartType;
editionPaymentType: typeof EditionPaymentType = EditionPaymentType;
installationMode = true;
defaultLogo = AppConsts.appBaseUrl + '/assets/common/images/app-logo-on-' + this.currentTheme.baseSettings.menu.asideSkin + '.svg';
userMenuToggleOptions: ToggleOptions = {
target: 'body',
targetState: 'kt-header__topbar--mobile-on',
togglerState: 'kt-header-mobile__toolbar-topbar-toggler--active'
};
constructor(
injector: Injector
) {
super(injector);
}
subscriptionStatusBarVisible(): boolean {
return this.appSession.tenantId > 0 && (this.appSession.tenant.isInTrialPeriod || this.subscriptionIsExpiringSoon());
}
subscriptionIsExpiringSoon(): boolean {
if (this.appSession.tenant.subscriptionEndDateUtc) {
return moment().utc().add(AppConsts.subscriptionExpireNootifyDayCount, 'days') >= moment(this.appSession.tenant.subscriptionEndDateUtc);
}
return false;
}
getSubscriptionExpiringDayCount(): number {
if (!this.appSession.tenant.subscriptionEndDateUtc) {
return 0;
}
return Math.round(moment.utc(this.appSession.tenant.subscriptionEndDateUtc).diff(moment().utc(), 'days', true));
}
getTrialSubscriptionNotification(): string {
return this.l(
'TrialSubscriptionNotification',
`${this.appSession.tenant.edition.displayName}`,
`${this.l('ClickHere')}`
);
}
getExpireNotification(localizationKey: string): string {
return this.l(localizationKey, this.getSubscriptionExpiringDayCount());
}
}