File

apps/recallassess/recallassess-api/src/api/admin/email-template/email-template.service.ts

Extends

BNestBaseModuleService

Index

Methods

Constructor

constructor(prisma: BNestPrismaService, systemLogService: SystemLogService)
Parameters :
Name Type Optional
prisma BNestPrismaService No
systemLogService SystemLogService No

Methods

Async add
add(data: any)
Parameters :
Name Type Optional
data any No
Returns : Promise<any>
Async delete
delete(id: number)
Parameters :
Name Type Optional
id number No
Returns : Promise<any>
Async save
save(id: number, data: any)
Parameters :
Name Type Optional
id number No
data any No
Returns : Promise<any>
import { SystemLogService } from "@api/shared/services";
import { BNestBaseModuleService } from "@bish-nest/core/data/module-service/base-module.service";
import { BNestPrismaService } from "@bish-nest/core/services";
import { Injectable, NotFoundException } from "@nestjs/common";
import { SystemLogEntityType } from "@prisma/client";

@Injectable()
export class EmailTemplateService extends BNestBaseModuleService {
  constructor(
    protected prisma: BNestPrismaService,
    private readonly systemLogService: SystemLogService,
  ) {
    super();
  }

  async add(data: any): Promise<any> {
    const addResponse = await super.add(data);
    const emailTemplate = addResponse.data;

    await this.systemLogService.logInsert(
      SystemLogEntityType.EMAIL_TEMPLATE,
      emailTemplate.id,
      emailTemplate as Record<string, unknown>,
    );

    return addResponse;
  }

  async save(id: number, data: any): Promise<any> {
    const oldEmailTemplate = await this.prisma.client.emailTemplate.findUnique({
      where: { id },
    });

    if (!oldEmailTemplate) {
      throw new NotFoundException(`Email template with ID ${id} not found`);
    }

    const saveResponse = await super.save(id, data);
    const updatedEmailTemplate = saveResponse.data;

    const changedFields = SystemLogService.calculateChangedFields(
      oldEmailTemplate as Record<string, unknown>,
      updatedEmailTemplate as Record<string, unknown>,
    );

    await this.systemLogService.logUpdate(
      SystemLogEntityType.EMAIL_TEMPLATE,
      id,
      oldEmailTemplate as Record<string, unknown>,
      updatedEmailTemplate as Record<string, unknown>,
      changedFields,
    );

    return saveResponse;
  }

  async delete(id: number): Promise<any> {
    const emailTemplate = await this.prisma.client.emailTemplate.findUnique({
      where: { id },
    });

    if (!emailTemplate) {
      throw new NotFoundException(`Email template with ID ${id} not found`);
    }

    const deleteResponse = await super.delete(id);

    await this.systemLogService.logDelete(
      SystemLogEntityType.EMAIL_TEMPLATE,
      id,
      emailTemplate as Record<string, unknown>,
    );

    return deleteResponse;
  }
}

results matching ""

    No results matching ""