diff --git a/src/modules/email/email.controller.ts b/src/modules/email/email.controller.ts index 44ab286ae..07f9240a3 100644 --- a/src/modules/email/email.controller.ts +++ b/src/modules/email/email.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Post, Get, Body, Res, Patch, Param, UseGuards } from '@nestjs/common'; +import { Controller, Post, Get, Body, Res, Patch, Param, UseGuards, Delete } from '@nestjs/common'; import { Response } from 'express'; import { EmailService } from './email.service'; import { UpdateTemplateDto, createTemplateDto, getTemplateDto } from './dto/email.dto'; @@ -21,7 +21,7 @@ export class EmailController { @ApiOperation({ summary: 'Store a new email template' }) @ApiResponse({ status: 201, description: 'Template created successfully', type: CreateTemplateResponseDto }) @ApiResponse({ status: 400, description: 'Invalid HTML format', type: ErrorResponseDto }) - @Post('store-template') + @Post('templates') async storeTemplate(@Body() body: createTemplateDto, @Res() res: Response): Promise { const response = await this.emailService.createTemplate(body); res.status(response.status_code).send(response); @@ -32,7 +32,7 @@ export class EmailController { @ApiResponse({ status: 400, description: 'Invalid HTML format', type: ErrorResponseDto }) @ApiResponse({ status: 404, description: 'Template not found', type: ErrorResponseDto }) @ApiParam({ name: 'templateName', required: true, description: 'The name of the template to update' }) - @Patch('update-template/:templateName') + @Patch('templates/:templateName') async updateTemplate( @Param('templateName') name: string, @Body() body: UpdateTemplateDto, @@ -46,24 +46,24 @@ export class EmailController { @ApiResponse({ status: 200, description: 'Template retrieved successfully', type: GetTemplateResponseDto }) @ApiResponse({ status: 404, description: 'Template not found', type: ErrorResponseDto }) @UseGuards(SuperAdminGuard) - @Post('get-template') - async getTemplate(@Body() body: getTemplateDto, @Res() res: Response): Promise { - const response = await this.emailService.getTemplate(body); + @Get('templates/:templateName') + async getTemplate(@Param('templateName') name: string, @Res() res: Response): Promise { + const response = await this.emailService.getTemplate({ templateName: name }); res.status(response.status_code).send(response); } @ApiOperation({ summary: 'Delete an email template' }) @ApiResponse({ status: 200, description: 'Template deleted successfully', type: DeleteTemplateResponseDto }) @ApiResponse({ status: 404, description: 'Template not found', type: ErrorResponseDto }) - @Post('delete-template') - async deleteTemplate(@Body() body: getTemplateDto, @Res() res: Response): Promise { - const response = await this.emailService.deleteTemplate(body); + @Delete('templates/:templateName') + async deleteTemplate(@Param('templateName') name: string, @Res() res: Response): Promise { + const response = await this.emailService.deleteTemplate({ templateName: name }); res.status(response.status_code).send(response); } @ApiOperation({ summary: 'Retrieve all email templates' }) @ApiResponse({ status: 200, description: 'Templates retrieved successfully', type: GetAllTemplatesResponseDto }) - @Get('get-all-templates') + @Get('templates') async getAllTemplates(@Res() res: Response): Promise { const response = await this.emailService.getAllTemplates(); res.status(response.status_code).send(response); diff --git a/src/modules/email/email.service.spec.ts b/src/modules/email/email.service.spec.ts index e0f1163d1..10df3334b 100644 --- a/src/modules/email/email.service.spec.ts +++ b/src/modules/email/email.service.spec.ts @@ -175,7 +175,7 @@ describe('EmailService', () => { expect(htmlValidator).toHaveBeenCalledWith({ data: compiledTemplate }); expect(fsWriteFileMock).toHaveBeenCalledWith( - `./src/modules/email/templates/${templateName}.hbs`, + `./src/modules/email/hng-templates/${templateName}.hbs`, compiledTemplate, 'utf-8' ); @@ -255,7 +255,7 @@ describe('EmailService', () => { const result = await service.deleteTemplate(templateInfo); expect(result).toEqual({ - status_code: HttpStatus.OK, + status_code: HttpStatus.NO_CONTENT, message: 'Template deleted successfully', }); }); diff --git a/src/modules/email/email.service.ts b/src/modules/email/email.service.ts index 9212f9cb2..99e2a7bdd 100644 --- a/src/modules/email/email.service.ts +++ b/src/modules/email/email.service.ts @@ -172,7 +172,7 @@ export class EmailService { ); } - const templatePath = `./src/modules/email/templates/${templateName}.hbs`; + const templatePath = `./src/modules/email/hng-templates/${templateName}.hbs`; if (!fs.existsSync(templatePath)) { throw new CustomHttpException(SYS_MSG.EMAIL_TEMPLATES.TEMPLATE_NOT_FOUND, HttpStatus.NOT_FOUND); @@ -211,7 +211,7 @@ export class EmailService { try { await deleteFile(`./src/modules/email/hng-templates/${templateInfo.templateName}.hbs`); return { - status_code: HttpStatus.OK, + status_code: HttpStatus.NO_CONTENT, message: 'Template deleted successfully', }; } catch (error) {