From b1a41235d734a50382f36a1e60efafd42a307fd8 Mon Sep 17 00:00:00 2001 From: mahyargdz Date: Sat, 12 Apr 2025 16:30:10 +0330 Subject: [PATCH] update: add toggle status of blog --- .../blogs/controllers/blogs.controller.ts | 17 +++++++++++++ src/modules/blogs/providers/blogs.service.ts | 25 +++++++++++++------ 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/modules/blogs/controllers/blogs.controller.ts b/src/modules/blogs/controllers/blogs.controller.ts index ff5a68b..86bb8c4 100644 --- a/src/modules/blogs/controllers/blogs.controller.ts +++ b/src/modules/blogs/controllers/blogs.controller.ts @@ -61,12 +61,29 @@ export class BlogsController { return this.blogsService.getMostVisitedBlogs(); } + @ApiOperation({ summary: "toggle status of blogs (admin route)" }) + @PermissionsDec(PermissionEnum.BLOGS) + @HttpCode(HttpStatus.OK) + @Post(":id/toggle-status") + toggleBlogStatus(@Param() paramDto: ParamDto) { + return this.blogsService.toggleBlogStatus(paramDto.id); + } + @ApiOperation({ summary: "Get most pinned blogs" }) @SkipAuth() @Get("pinned") getPinnedBlogs() { return this.blogsService.getPinnedBlogs(); } + + @ApiOperation({ summary: "Toggle pinned status of a blog (admin route)" }) + @AdminRoute() + @PermissionsDec(PermissionEnum.BLOGS) + @Post(":id/toggle-pinned") + togglePinnedStatus(@Param() paramDto: ParamDto) { + return this.blogsService.togglePinnedStatus(paramDto.id); + } + @ApiOperation({ summary: "Create a new blog (admin route)" }) @Post() @AdminRoute() diff --git a/src/modules/blogs/providers/blogs.service.ts b/src/modules/blogs/providers/blogs.service.ts index 6f8a2b0..59c7c05 100644 --- a/src/modules/blogs/providers/blogs.service.ts +++ b/src/modules/blogs/providers/blogs.service.ts @@ -244,13 +244,6 @@ export class BlogsService { return category; } - //*********************************** */ - private async findBlogById(id: string) { - const blog = await this.blogsRepository.findOneById(id); - if (!blog) throw new BadRequestException(BlogMessage.BLOG_NOT_FOUND); - return blog; - } - async incrementViewCount(id: string) { const blog = await this.findBlogById(id); blog.viewCount += 1; @@ -267,6 +260,7 @@ export class BlogsService { const blogs = await this.blogsRepository.getPinnedBlogs(); return { blogs }; } + //*********************************** */ async togglePinnedStatus(id: string) { const blog = await this.findBlogById(id); @@ -274,4 +268,21 @@ export class BlogsService { await this.blogsRepository.save(blog); return { message: CommonMessage.UPDATE_SUCCESS, blog }; } + //*********************************** */ + + async toggleBlogStatus(id: string) { + const blog = await this.findBlogById(id); + blog.isActive = !blog.isActive; + + // + await this.blogsRepository.save(blog); + return { message: CommonMessage.UPDATE_SUCCESS, blog }; + } + + //*********************************** */ + private async findBlogById(id: string) { + const blog = await this.blogsRepository.findOneById(id); + if (!blog) throw new BadRequestException(BlogMessage.BLOG_NOT_FOUND); + return blog; + } }