chore: complete criticism module

This commit is contained in:
Matin
2025-01-27 14:21:59 +03:30
parent 5bdf7baceb
commit a7e3172cb4
4 changed files with 33 additions and 2 deletions
+1
View File
@@ -131,4 +131,5 @@ export const enum CriticismMessage {
TITLE_STRING = "عنوان انتقادات باید یک رشته باشد", TITLE_STRING = "عنوان انتقادات باید یک رشته باشد",
CONTENT_IS_REQUIRED = "متن انتقادات مورد نیاز است", CONTENT_IS_REQUIRED = "متن انتقادات مورد نیاز است",
CONTENT_IS_STRING = "متن انتقادات باید رشته باشد", CONTENT_IS_STRING = "متن انتقادات باید رشته باشد",
NOT_FOUND = "انتقادی با این ایدی یافت نشد",
} }
@@ -27,6 +27,14 @@ export class CriticismController {
return this.criticismService.findAll(); 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() @AuthGuards()
@Roles(RoleEnum.ADMIN) @Roles(RoleEnum.ADMIN)
@ApiOperation({ summary: "Delete one Criticism with id ===> login as admin" }) @ApiOperation({ summary: "Delete one Criticism with id ===> login as admin" })
@@ -14,6 +14,9 @@ export class Criticism extends BaseEntity {
@Column({ type: "text", nullable: false }) @Column({ type: "text", nullable: false })
content: string; content: string;
@Column({ type: "boolean", default: false })
isRead: boolean;
@OneToMany(() => CriticismFile, (criticismFile) => criticismFile.criticism, { eager: true, cascade: true }) @OneToMany(() => CriticismFile, (criticismFile) => criticismFile.criticism, { eager: true, cascade: true })
files: CriticismFile[]; files: CriticismFile[];
} }
@@ -1,6 +1,6 @@
import { BadRequestException, Injectable } from "@nestjs/common"; 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 { CreateCriticismDto } from "../DTO/create-criticism.dto";
import { CriticismRepository } from "../repositories/criticisms.repository"; import { CriticismRepository } from "../repositories/criticisms.repository";
@@ -23,10 +23,29 @@ export class CriticismsService {
}; };
} }
//##################################### ##
async findAll() { 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) { async delete(id: string) {
const criticism = await this.criticismRepository.findOneBy({ id }); const criticism = await this.criticismRepository.findOneBy({ id });
if (!criticism) throw new BadRequestException(); if (!criticism) throw new BadRequestException();