diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index d4159ee..50abaff 100755 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -717,6 +717,7 @@ export const enum BlogMessage { IS_PINNED_SHOULD_BE_A_BOOLEAN = "وضعیت سنجاق بودن باید یک بولین باشد", SLUG_REQUIRED = "اسلاگ بلاگ الزامی است", SLUG_MAX_LENGTH = "حداکثر طول اسلاگ بلاگ باید ۲۵۵ کاراکتر باشد", + CATEGORY_HAS_BLOGS = "دسته بندی مورد نظر دارای بلاگ می‌باشد", } export const enum SliderMessage { diff --git a/src/modules/blogs/blogs.controller.ts b/src/modules/blogs/blogs.controller.ts index 0e71815..0e13fc9 100755 --- a/src/modules/blogs/blogs.controller.ts +++ b/src/modules/blogs/blogs.controller.ts @@ -189,8 +189,8 @@ export class BlogsController { @Delete("categories/:id") @AdminRoute() @PermissionsDec(PermissionEnum.BLOGS) - deleteCategory(@Param() paramDto: ParamDto) { - return this.blogsService.deleteCategory(paramDto.id); + deleteCategory(@Param() paramDto: ParamDto, @UserDec("id") userId: string) { + return this.blogsService.deleteCategory(paramDto.id, userId); } @ApiOperation({ summary: "toggle status of categories (admin route)" }) diff --git a/src/modules/blogs/entities/blog-category.entity.ts b/src/modules/blogs/entities/blog-category.entity.ts index 2b9bc9b..fd31c89 100755 --- a/src/modules/blogs/entities/blog-category.entity.ts +++ b/src/modules/blogs/entities/blog-category.entity.ts @@ -1,4 +1,4 @@ -import { Column, DeleteDateColumn, Entity, OneToMany } from "typeorm"; +import { Column, Entity, OneToMany } from "typeorm"; import { Blog } from "./blog.entity"; import { BaseEntity } from "../../../common/entities/base.entity"; @@ -19,7 +19,4 @@ export class BlogCategory extends BaseEntity { @OneToMany(() => Blog, (blog) => blog.category) blogs: Blog[]; - - @DeleteDateColumn() - deletedAt?: Date; } diff --git a/src/modules/blogs/providers/blogs.service.ts b/src/modules/blogs/providers/blogs.service.ts index 0d1645f..ad63915 100755 --- a/src/modules/blogs/providers/blogs.service.ts +++ b/src/modules/blogs/providers/blogs.service.ts @@ -55,11 +55,15 @@ export class BlogsService { } //*********************************** */ - async deleteCategory(id: string) { + async deleteCategory(id: string, userId: string) { + console.log(userId); const category = await this.blogCategoriesRepository.findOneBy({ id }); if (!category) throw new BadRequestException(BlogMessage.CATEGORY_NOT_FOUND); - await this.blogCategoriesRepository.delete({ id }); + const blogs = await this.blogsRepository.find({ where: { category: { id } }, take: 2 }); + if (blogs.length > 0) throw new BadRequestException(BlogMessage.CATEGORY_HAS_BLOGS); + + await this.blogCategoriesRepository.remove(category); return { message: CommonMessage.DELETED, }; @@ -106,7 +110,6 @@ export class BlogsService { const category = await this.findCategoryById(createBlogDto.categoryId); const slug = this.generateSlug(createBlogDto.slug); - console.log(slug); const blog = this.blogsRepository.create({ ...createBlogDto, diff --git a/src/modules/blogs/repositories/blog-categories.repository.ts b/src/modules/blogs/repositories/blog-categories.repository.ts index 07f2b55..26f9eb9 100755 --- a/src/modules/blogs/repositories/blog-categories.repository.ts +++ b/src/modules/blogs/repositories/blog-categories.repository.ts @@ -1,6 +1,6 @@ import { Injectable } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; -import { IsNull, Repository } from "typeorm"; +import { Repository } from "typeorm"; import { CategoryListSearchQueryDto } from "../../danak-services/DTO/category-search-query.dto"; import { PaginationUtils } from "../../utils/providers/pagination.utils"; @@ -15,13 +15,13 @@ export class BlogCategoriesRepository extends Repository { async findOneById(id: string): Promise { return this.findOne({ - where: { id, deletedAt: IsNull() }, + where: { id }, }); } async getCategoriesUserSide() { return this.find({ - where: { isActive: true, deletedAt: IsNull() }, + where: { isActive: true }, order: { createdAt: "DESC" }, }); } diff --git a/src/modules/danak-services/DTO/create-service.dto.ts b/src/modules/danak-services/DTO/create-service.dto.ts index b361ae5..c42cc26 100755 --- a/src/modules/danak-services/DTO/create-service.dto.ts +++ b/src/modules/danak-services/DTO/create-service.dto.ts @@ -98,8 +98,9 @@ export class CreateServiceDto { @ApiProperty({ description: "The images of the service", example: ["https://example.com/image1.png", "https://example.com/image2.png"] }) images: string[]; + @IsOptional() @IsNotEmpty({ message: ServiceMessage.COVER_URL_REQUIRED }) @IsUrl({ protocols: ["http", "https"], require_protocol: true }, { message: ServiceMessage.COVER_URL_SHOULD_BE_URL }) @ApiProperty({ description: "The cover url of the service", example: "https://example.com/cover.png" }) - coverUrl: string; + coverUrl?: string; }