users.admin.controller.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. @ApiTags('users.admin')
  25. @Controller('/admin/users')
  26. @ApiBearerAuth()
  27. @HasRoles(Role.Admin)
  28. export class UsersAdminController {
  29. constructor(private readonly usersService: UsersService) {}
  30. @Post()
  31. public async list(@Body() page: PageRequest<Users>) {
  32. return await this.usersService.findAll(page)
  33. }
  34. @Get('/get')
  35. public async get(@Req() req) {
  36. const user = await this.usersService.findById(req.user.userId)
  37. return user
  38. }
  39. @Put('/:userId')
  40. public async updateUser(@Param('userId') userId: string, @Body() userUpdateDto: UserUpdateDto) {
  41. try {
  42. await this.usersService.updateUser(userId, userUpdateDto)
  43. return {
  44. message: 'User Updated successfully!',
  45. status: HttpStatus.OK
  46. }
  47. } catch (err) {
  48. throw new BadRequestException(err, 'Error: User not updated!')
  49. }
  50. }
  51. @Delete('/:userId')
  52. public async deleteUser(@Param('userId') userId: string): Promise<void> {
  53. await this.usersService.deleteUser(userId)
  54. }
  55. }