File

apps/recallassess/recallassess-api/src/common/init.service.ts

Index

Properties
Methods

Constructor

constructor(bnestCfgService: BNestCfgService, valuelistConfig: BNestValuelistConfig, userConfig: BNestUserConfig, companyConfig: CompanyConfig, participantConfig: ParticipantConfig, courseConfig: CourseConfig, courseModuleConfig: CourseModuleConfig, courseModulePageConfig: CourseModulePageConfig, packageConfig: PackageConfig, contactEnquiryConfig: ContactEnquiryConfig, assessmentConfig: AssessmentConfig, knowledgeReviewConfig: KnowledgeReviewConfig, knowledgeReviewQuestionConfig: KnowledgeReviewQuestionConfig, emailTemplateConfig: BNestEmailTemplateConfig, emailLogConfig: BNestEmailLogConfig, reportLogConfig: ReportLogConfig, systemLogConfig: SystemLogConfig, systemSettingConfig: SystemSettingConfig, subscriptionConfig: SubscriptionConfig, invoiceConfig: InvoiceConfig, promoCodeConfig: PromoCodeConfig, testimonialConfig: TestimonialConfig, participantGroupConfig: ParticipantGroupConfig, learningGroupConfig: LearningGroupConfig, logger: BNestAppLogger)
Parameters :
Name Type Optional
bnestCfgService BNestCfgService No
valuelistConfig BNestValuelistConfig No
userConfig BNestUserConfig No
companyConfig CompanyConfig No
participantConfig ParticipantConfig No
courseConfig CourseConfig No
courseModuleConfig CourseModuleConfig No
courseModulePageConfig CourseModulePageConfig No
packageConfig PackageConfig No
contactEnquiryConfig ContactEnquiryConfig No
assessmentConfig AssessmentConfig No
knowledgeReviewConfig KnowledgeReviewConfig No
knowledgeReviewQuestionConfig KnowledgeReviewQuestionConfig No
emailTemplateConfig BNestEmailTemplateConfig No
emailLogConfig BNestEmailLogConfig No
reportLogConfig ReportLogConfig No
systemLogConfig SystemLogConfig No
systemSettingConfig SystemSettingConfig No
subscriptionConfig SubscriptionConfig No
invoiceConfig InvoiceConfig No
promoCodeConfig PromoCodeConfig No
testimonialConfig TestimonialConfig No
participantGroupConfig ParticipantGroupConfig No
learningGroupConfig LearningGroupConfig No
logger BNestAppLogger No

Methods

Async init
init()
Returns : Promise<void>
Async onModuleInit
onModuleInit()
Returns : any

Properties

Private initialized
Type : unknown
Default value : false
Private moduleConfigTypes
Type : ModuleConfigBase[]
Default value : []
import { reportConfigs } from "@api/admin/report/report-configs/report-configs";
import { BNestEmailTemplateConfig, BNestUserConfig, BNestValuelistConfig } from "@bish-nest/core";
import { ModuleConfigBase } from "@bish-nest/core/app-config/module-config-base.class";
import { BNestCfgService } from "@bish-nest/core/config";
import { BNestInitInterface } from "@bish-nest/core/interfaces";
import { BNestAppLogger } from "@bish-nest/core/services";
import { BNestEmailLogConfig } from "@bish-nest/email-log";
import { Injectable, OnModuleInit } from "@nestjs/common";
import { EmailTemplateType } from "@prisma/client";
import { AssessmentConfig } from "../api/admin/assessment/config/assessment-config.service";
import { CompanyConfig } from "../api/admin/company/config/company-config.service";
import { CourseConfig } from "../api/admin/course/config/course-config.service";
import { CourseModuleConfig } from "../api/admin/course-module/config/course-module-config.service";
import { CourseModulePageConfig } from "../api/admin/course-module-page/config/course-module-page-config.service";
import { InvoiceConfig } from "../api/admin/invoice/config/invoice-config.service";
import { KnowledgeReviewConfig } from "../api/admin/knowledge-review/config/knowledge-review-config.service";
import { KnowledgeReviewQuestionConfig } from "../api/admin/knowledge-review/config/knowledge-review-question-config.service";
import { LearningGroupConfig } from "../api/admin/learning-group/config/learning-group-config.service";
import { PackageConfig } from "../api/admin/package/config/package-config.service";
import { ParticipantConfig } from "../api/admin/participant/config/participant-config.service";
import { ParticipantGroupConfig } from "../api/admin/participant-group/config/participant-group-config.service";
import { PromoCodeConfig } from "../api/admin/promo-code/config/promo-code-config.service";
import { ReportLogConfig } from "../api/admin/report-log/config/report-log-config.service";
import { SubscriptionConfig } from "../api/admin/subscription/config/subscription-config.service";
import { SystemLogConfig } from "../api/admin/system-log/config/system-log-config.service";
import { SystemSettingConfig } from "../api/admin/system-setting/config/system-setting-config.service";
import { TestimonialConfig } from "../api/admin/testimonial/config/testimonial-config.service";
import { ContactEnquiryConfig } from "../api/admin/contact-enquiry/config/contact-enquiry-config.service";
import { getEmailSkeleton } from "../templates/email/email-skeleton.template";

@Injectable()
export class InitService implements OnModuleInit, BNestInitInterface {
  private moduleConfigTypes: ModuleConfigBase[] = [];
  private initialized = false;

  constructor(
    private bnestCfgService: BNestCfgService,
    private valuelistConfig: BNestValuelistConfig,
    private userConfig: BNestUserConfig,
    private companyConfig: CompanyConfig,
    private participantConfig: ParticipantConfig,
    private courseConfig: CourseConfig,
    private courseModuleConfig: CourseModuleConfig,
    private courseModulePageConfig: CourseModulePageConfig,
    private packageConfig: PackageConfig,
    private contactEnquiryConfig: ContactEnquiryConfig,
    private assessmentConfig: AssessmentConfig,
    private knowledgeReviewConfig: KnowledgeReviewConfig,
    private knowledgeReviewQuestionConfig: KnowledgeReviewQuestionConfig,
    private emailTemplateConfig: BNestEmailTemplateConfig,
    private emailLogConfig: BNestEmailLogConfig,
    private reportLogConfig: ReportLogConfig,
    private systemLogConfig: SystemLogConfig,
    private systemSettingConfig: SystemSettingConfig,
    private subscriptionConfig: SubscriptionConfig,
    private invoiceConfig: InvoiceConfig,
    private promoCodeConfig: PromoCodeConfig,
    private testimonialConfig: TestimonialConfig,
    private participantGroupConfig: ParticipantGroupConfig,
    private learningGroupConfig: LearningGroupConfig,
    private readonly logger: BNestAppLogger,
  ) {}

  async onModuleInit() {
    await this.init();
  }

  async init(): Promise<void> {
    if (this.initialized) {
      this.logger.log("InitService: init skipped (already initialized)");
      return;
    }
    this.logger.log("InitService: initialization start");

    // Email template admin module: align validators / column config with this app's Prisma enum
    this.bnestCfgService.setEmailTemplateTypeValues(Object.values(EmailTemplateType) as string[]);

    // Set up the module config types array (only those available in RecallAssess API)
    this.moduleConfigTypes = [
      this.valuelistConfig,
      this.userConfig,
      this.companyConfig,
      this.participantConfig,
      this.courseConfig,
      this.courseModuleConfig,
      this.courseModulePageConfig,
      this.packageConfig,
      this.contactEnquiryConfig,
      this.assessmentConfig,
      this.knowledgeReviewConfig,
      this.knowledgeReviewQuestionConfig,
      this.emailTemplateConfig,
      this.emailLogConfig,
      this.reportLogConfig,
      this.systemLogConfig,
      this.systemSettingConfig,
      this.subscriptionConfig,
      this.invoiceConfig,
      this.promoCodeConfig,
      this.participantGroupConfig,
      this.learningGroupConfig,
      this.testimonialConfig,
    ];

    // First set the module config types
    this.bnestCfgService.setModuleConfigTypes(this.moduleConfigTypes);

    // Then set all the module configs
    this.bnestCfgService.setModulesConfig();

    // Set all the report configs
    this.bnestCfgService.setReportsConfig(reportConfigs);

    // Set RecallAssess email skeleton template
    this.bnestCfgService.setEmailSkeleton(getEmailSkeleton);

    this.bnestCfgService.validate();
    this.initialized = true;
    this.logger.log("InitService: initialization complete");
  }
}

results matching ""

    No results matching ""