From a7e3172cb4076ce02b80f433ddc1f36c17dba40c Mon Sep 17 00:00:00 2001 From: Matin Date: Mon, 27 Jan 2025 14:21:59 +0330 Subject: [PATCH] chore: complete criticism module --- src/common/enums/message.enum.ts | 1 + .../criticisms/criticisms.controller.ts | 8 +++++++ .../criticisms/entities/criticism.entity.ts | 3 +++ .../providers/criticisms.service.ts | 23 +++++++++++++++++-- 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index 89fabb8..4ee232a 100644 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -131,4 +131,5 @@ export const enum CriticismMessage { TITLE_STRING = "عنوان انتقادات باید یک رشته باشد", CONTENT_IS_REQUIRED = "متن انتقادات مورد نیاز است", CONTENT_IS_STRING = "متن انتقادات باید رشته باشد", + NOT_FOUND = "انتقادی با این ایدی یافت نشد", } diff --git a/src/modules/criticisms/criticisms.controller.ts b/src/modules/criticisms/criticisms.controller.ts index e6033c2..a80de8a 100644 --- a/src/modules/criticisms/criticisms.controller.ts +++ b/src/modules/criticisms/criticisms.controller.ts @@ -27,6 +27,14 @@ export class CriticismController { return this.criticismService.findAll(); } + @AuthGuards() + @Roles(RoleEnum.ADMIN) + @ApiOperation({ summary: "Get one Criticism with id ===> login as admin" }) + @Get(":id") + fineOne(@Param() paramDto: ParamDto) { + return this.criticismService.findOneAndMarkAsRead(paramDto.id); + } + @AuthGuards() @Roles(RoleEnum.ADMIN) @ApiOperation({ summary: "Delete one Criticism with id ===> login as admin" }) diff --git a/src/modules/criticisms/entities/criticism.entity.ts b/src/modules/criticisms/entities/criticism.entity.ts index 33fb606..70672f5 100644 --- a/src/modules/criticisms/entities/criticism.entity.ts +++ b/src/modules/criticisms/entities/criticism.entity.ts @@ -14,6 +14,9 @@ export class Criticism extends BaseEntity { @Column({ type: "text", nullable: false }) content: string; + @Column({ type: "boolean", default: false }) + isRead: boolean; + @OneToMany(() => CriticismFile, (criticismFile) => criticismFile.criticism, { eager: true, cascade: true }) files: CriticismFile[]; } diff --git a/src/modules/criticisms/providers/criticisms.service.ts b/src/modules/criticisms/providers/criticisms.service.ts index 367615d..6ed55c8 100644 --- a/src/modules/criticisms/providers/criticisms.service.ts +++ b/src/modules/criticisms/providers/criticisms.service.ts @@ -1,6 +1,6 @@ import { BadRequestException, Injectable } from "@nestjs/common"; -import { CommonMessage } from "../../../common/enums/message.enum"; +import { CommonMessage, CriticismMessage } from "../../../common/enums/message.enum"; import { CreateCriticismDto } from "../DTO/create-criticism.dto"; import { CriticismRepository } from "../repositories/criticisms.repository"; @@ -23,10 +23,29 @@ export class CriticismsService { }; } + //##################################### ## + async findAll() { - return await this.criticismRepository.find({}); + const criticisms = await this.criticismRepository.find(); + return { + criticisms, + }; } + //##################################### ## + + async findOneAndMarkAsRead(id: string) { + const criticism = await this.criticismRepository.findOneBy({ id }); + if (!criticism) throw new BadRequestException(CriticismMessage.NOT_FOUND); + criticism.isRead = true; + await this.criticismRepository.save(criticism); + return { + criticism, + }; + } + + //##################################### ## + async delete(id: string) { const criticism = await this.criticismRepository.findOneBy({ id }); if (!criticism) throw new BadRequestException();