401 lines
11 KiB
TypeScript
401 lines
11 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Post,
|
|
HttpStatus,
|
|
HttpCode,
|
|
Get,
|
|
Put,
|
|
Query,
|
|
Patch,
|
|
Param,
|
|
UseGuards,
|
|
} from '@nestjs/common';
|
|
import {
|
|
ApiTags,
|
|
ApiOkResponse,
|
|
ApiBody,
|
|
ApiOperation,
|
|
ApiBearerAuth,
|
|
} from '@nestjs/swagger';
|
|
import {
|
|
BlogCatDto,
|
|
CreateBlogCatDto,
|
|
UpdateBlogCatDto,
|
|
StatusBlogCatDto,
|
|
BlogCatListDto,
|
|
getParentListBlogCatDto,
|
|
} from '../../..//DTO/blogCategory.dto';
|
|
|
|
import {
|
|
PostDto,
|
|
CreatePostDto,
|
|
UpdatePostDto,
|
|
PostStatusDto,
|
|
ListPostDto,
|
|
FilterListPostDto,
|
|
ChangeSortPostDto,
|
|
} from '../../../DTO/blogPost.dto';
|
|
|
|
// import { DeletePostMediaDto } from '../../../DTO/postMedia.dto';
|
|
import {
|
|
StatusPostCommentDto,
|
|
ListPostCommentDto,
|
|
PostCommentDto,
|
|
CreatePostCommentDto,
|
|
FilterListPostCommentDto,
|
|
PostCommentInfoDto,
|
|
} from '../../../DTO/blogPostComment.dto';
|
|
import { BlogService } from './blog.service';
|
|
import { Roles } from '../../../decorators/role.decorators';
|
|
import { Role } from '../../../common/eNums/role.enum';
|
|
import { AuthGuard } from '../../../auth/auth.guard';
|
|
import { CurrentUser } from '../../../decorators/currentUser.decorator';
|
|
|
|
@ApiTags('admin blog')
|
|
@Controller('admins/blog')
|
|
export class BlogController {
|
|
constructor(private readonly blogService: BlogService) {}
|
|
// create new post **************************************************************************
|
|
@ApiOperation({ summary: ' ساخت پست برای بلاگ ' })
|
|
@ApiOkResponse({
|
|
description: 'PostDto info',
|
|
type: [PostDto],
|
|
})
|
|
@ApiBody({
|
|
type: CreatePostDto,
|
|
description: 'create new post',
|
|
})
|
|
@Post('post')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async createPost(
|
|
@CurrentUser() user,
|
|
@Body() createPostDto: CreatePostDto,
|
|
): Promise<boolean> {
|
|
try {
|
|
await this.blogService.createPost(createPostDto, user);
|
|
return true;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// update post ******************************************************************************
|
|
@HttpCode(HttpStatus.OK)
|
|
@ApiOperation({ summary: ' بروز رسانی پست ' })
|
|
@ApiOkResponse({
|
|
description: 'update post',
|
|
type: Boolean,
|
|
})
|
|
@ApiBody({
|
|
type: UpdatePostDto,
|
|
description: 'update post DTO',
|
|
})
|
|
@Put('post')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async updatePost(
|
|
@CurrentUser() user,
|
|
@Body() updatePostDto: UpdatePostDto,
|
|
): Promise<any> {
|
|
try {
|
|
await this.blogService.updatePost(updatePostDto, user);
|
|
return { status: true };
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// change status of post ********************************************************************
|
|
@ApiOperation({ summary: 'تغییر وضعیت پست بلاگ' })
|
|
@ApiOkResponse({
|
|
description: 'api status',
|
|
type: Boolean,
|
|
})
|
|
@ApiBody({
|
|
type: PostStatusDto,
|
|
description: 'change Status of post',
|
|
})
|
|
@Patch('post')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async changeStatusPost(@Body() postStatusDto: PostStatusDto): Promise<any> {
|
|
try {
|
|
await this.blogService.changeStatusPost(postStatusDto);
|
|
return { status: true };
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// Filter / list post ***********************************************************************
|
|
@ApiOperation({ summary: ' فیلتر و لیست پست های بلاگ' })
|
|
@HttpCode(HttpStatus.OK)
|
|
@ApiOkResponse({
|
|
description: 'posts list',
|
|
type: [ListPostDto],
|
|
})
|
|
@Get('post')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async ListPosts(
|
|
@Query() filterListPostDto: FilterListPostDto,
|
|
): Promise<ListPostDto[]> {
|
|
const blogService = await this.blogService.listPosts(filterListPostDto);
|
|
return blogService;
|
|
}
|
|
// get detail post by id *****************************************************************************
|
|
@ApiOperation({ summary: 'جزییات کامل پست بلاگ' })
|
|
@ApiOkResponse({
|
|
description: 'post detail info',
|
|
type: PostDto,
|
|
})
|
|
@Get('post/:postId')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async postDetail(
|
|
@Param('postId')
|
|
postId: string,
|
|
): Promise<PostDto> {
|
|
try {
|
|
const postDetail = await this.blogService.postDetail(postId);
|
|
return postDetail;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
// change sort post ************************************************************************
|
|
@ApiOperation({ summary: 'تغییر ترتیب پست' })
|
|
@HttpCode(HttpStatus.OK)
|
|
@ApiOkResponse({
|
|
description: 'change sort post',
|
|
type: [ListPostDto],
|
|
})
|
|
@ApiBody({
|
|
type: ChangeSortPostDto,
|
|
description: 'change sort post',
|
|
})
|
|
@Put('post/sort')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async changeSortPost(
|
|
@Body() changeSortPostDto: ChangeSortPostDto,
|
|
): Promise<boolean> {
|
|
try {
|
|
await this.blogService.changeSortPost(changeSortPostDto);
|
|
return true;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// create new blogCat ***********************************************************************
|
|
@ApiOperation({ summary: ' ساخت دسته بندی بلاگ ' })
|
|
@ApiOkResponse({
|
|
description: 'blog Category Dto info',
|
|
type: [BlogCatDto],
|
|
})
|
|
@ApiBody({
|
|
type: CreateBlogCatDto,
|
|
description: 'create new blog category',
|
|
})
|
|
@Post('category')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async createCategory(
|
|
@Body() createBlogCatDto: CreateBlogCatDto,
|
|
): Promise<BlogCatDto> {
|
|
try {
|
|
const category = await this.blogService.createCategory(createBlogCatDto);
|
|
return category;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// list blogCat ***********************************************************************
|
|
@ApiOperation({ summary: ' لیست دسته بندی های بلاگ ' })
|
|
@HttpCode(HttpStatus.OK)
|
|
@ApiOkResponse({
|
|
description: 'blog category list',
|
|
type: [BlogCatListDto],
|
|
})
|
|
@Get('category')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async blogCatList(
|
|
@Query() getParentForListDto: getParentListBlogCatDto,
|
|
): Promise<BlogCatListDto[]> {
|
|
try {
|
|
const categories = await this.blogService.blogCatList(
|
|
getParentForListDto,
|
|
);
|
|
return categories;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// update blogCat **********************************************************************
|
|
@ApiOperation({ summary: ' بروز رسانی دسته بندی بلاگ ' })
|
|
@HttpCode(HttpStatus.OK)
|
|
@ApiOkResponse({
|
|
description: 'update blog category',
|
|
type: Boolean,
|
|
})
|
|
@ApiBody({
|
|
type: UpdateBlogCatDto,
|
|
description: 'update blog category',
|
|
})
|
|
@Put('category')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async updateBlogCategory(
|
|
@Body() updateBlogCategory: UpdateBlogCatDto,
|
|
): Promise<any> {
|
|
try {
|
|
await this.blogService.updateBlogCategory(updateBlogCategory);
|
|
return { status: true };
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
//change status of blog Category **********************************************************************
|
|
@ApiOperation({ summary: ' وضعیت دسته بندی بلاگ ' })
|
|
@ApiOkResponse({
|
|
description: 'api status',
|
|
type: Boolean,
|
|
})
|
|
@ApiBody({
|
|
type: StatusBlogCatDto,
|
|
description: 'change Status of blog category',
|
|
})
|
|
@Patch('category')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async changeStatusCategory(
|
|
@Body() statusBlogCatDto: StatusBlogCatDto,
|
|
): Promise<any> {
|
|
try {
|
|
await this.blogService.changeStatusCategory(statusBlogCatDto);
|
|
return { status: true };
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// Filter/ list post comment ********************************************************************
|
|
@ApiOperation({ summary: ' لیست پست ها به همراه فیلتر ' })
|
|
@ApiOkResponse({
|
|
description: 'postComments List',
|
|
type: [ListPostCommentDto],
|
|
})
|
|
@HttpCode(HttpStatus.OK)
|
|
@Get('postComment')
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async listPostComment(
|
|
@Query() filterListPostCommentDto: FilterListPostCommentDto,
|
|
): Promise<ListPostCommentDto[]> {
|
|
const list = await this.blogService.listPostComments(
|
|
filterListPostCommentDto,
|
|
);
|
|
return list;
|
|
}
|
|
//get post comment detail by id ****************************************************************
|
|
@ApiOperation({ summary: 'detail PostComment' })
|
|
@ApiOkResponse({
|
|
description: 'post comment detail info',
|
|
type: PostCommentInfoDto,
|
|
})
|
|
@HttpCode(HttpStatus.OK)
|
|
@Get('postComment/:id')
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async postCommentDetail(
|
|
@Param('id')
|
|
id: string,
|
|
): Promise<PostCommentInfoDto> {
|
|
try {
|
|
const postCommentDetail = await this.blogService.postCommentDetail(id);
|
|
return postCommentDetail;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// changeStatus postComment *********************************************************************
|
|
@ApiOperation({ summary: 'change status PostComment' })
|
|
@ApiOkResponse({
|
|
description: 'api status',
|
|
type: Boolean,
|
|
})
|
|
@ApiBody({
|
|
type: StatusPostCommentDto,
|
|
description: 'change status of postComment',
|
|
})
|
|
@Patch('postComment')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async changeStatusPostComment(
|
|
@Body() statusPostCommentDto: StatusPostCommentDto,
|
|
): Promise<any> {
|
|
try {
|
|
await this.blogService.changeStatusPostComment(statusPostCommentDto);
|
|
return { status: true };
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
// reply post comment *****************************************************
|
|
@ApiOperation({ summary: 'reply PostComment' })
|
|
@ApiOkResponse({
|
|
description: 'PostComment Dto',
|
|
type: [PostCommentDto],
|
|
})
|
|
@ApiBody({
|
|
type: CreatePostCommentDto,
|
|
description: 'reply post comment',
|
|
})
|
|
@Post('postComment/reply/:id')
|
|
@HttpCode(HttpStatus.OK)
|
|
@UseGuards(AuthGuard)
|
|
@Roles(Role.Admin)
|
|
@ApiBearerAuth()
|
|
async replyPostComment(
|
|
@CurrentUser() user,
|
|
@Body() createPostCommentDto: CreatePostCommentDto,
|
|
@Param('id')
|
|
id: string,
|
|
): Promise<PostCommentDto> {
|
|
try {
|
|
const result = await this.blogService.replyPostComment(
|
|
createPostCommentDto,
|
|
id,
|
|
user,
|
|
);
|
|
return result;
|
|
} catch (err) {
|
|
throw err;
|
|
}
|
|
}
|
|
}
|