users.admin.controller.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {
  2. Controller,
  3. Put,
  4. Get,
  5. Body,
  6. Param,
  7. HttpStatus,
  8. NotFoundException,
  9. Delete,
  10. BadRequestException,
  11. Req,
  12. Post
  13. } from '@nestjs/common'
  14. import { UsersService } from './users.service'
  15. import { UserProfileDto } from './dto/user-profile.dto'
  16. import { UserUpdateDto } from './dto/user-update.dto'
  17. import { IUsers } from './interfaces/users.interface'
  18. import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'
  19. import { HasRoles } from '../auth/roles.decorator'
  20. import { Role } from '../model/role.enum'
  21. import { IPaginationOptions } from 'nestjs-typeorm-paginate'
  22. import { PageRequest } from 'src/common/dto/page-request'
  23. import { Users } from './entities/users.entity'
  24. import { UserCreateDto } from './dto/user-create.dto'
  25. @ApiTags('users.admin')
  26. @Controller('/admin/users')
  27. @ApiBearerAuth()
  28. @HasRoles(Role.Admin)
  29. export class UsersAdminController {
  30. constructor(private readonly usersService: UsersService) {}
  31. @Post()
  32. public async list(@Body() page: PageRequest<Users>) {
  33. return await this.usersService.findAll(page)
  34. }
  35. @Put()
  36. public async create(@Body() user: UserCreateDto) {
  37. return await this.usersService.create(user)
  38. }
  39. @Get('/get')
  40. public async get(@Req() req) {
  41. const user = await this.usersService.findById(req.user.userId)
  42. return user
  43. }
  44. @Put('/:userId')
  45. public async updateUser(@Param('userId') userId: string, @Body() userUpdateDto: UserUpdateDto) {
  46. try {
  47. await this.usersService.updateUser(Number(userId), userUpdateDto)
  48. return {
  49. message: 'User Updated successfully!',
  50. status: HttpStatus.OK
  51. }
  52. } catch (err) {
  53. throw new BadRequestException(err, 'Error: User not updated!')
  54. }
  55. }
  56. @Delete('/:userId')
  57. public async deleteUser(@Param('userId') userId: number): Promise<void> {
  58. await this.usersService.deleteUser(userId)
  59. }
  60. }