import { Controller, Put, Get, Body, Param, HttpStatus, NotFoundException, Delete, BadRequestException, Req, Post } from '@nestjs/common' import { UsersService } from './users.service' import { UserProfileDto } from './dto/user-profile.dto' import { UserUpdateDto } from './dto/user-update.dto' import { IUsers } from './interfaces/users.interface' import { ApiBearerAuth, ApiTags } from '@nestjs/swagger' import { HasRoles } from '../auth/roles.decorator' import { Role } from '../model/role.enum' import { IPaginationOptions } from 'nestjs-typeorm-paginate' import { PageRequest } from 'src/common/dto/page-request' import { Users } from './entities/users.entity' @ApiTags('users.admin') @Controller('/admin/users') @ApiBearerAuth() @HasRoles(Role.Admin) export class UsersAdminController { constructor(private readonly usersService: UsersService) {} @Post() public async list(@Body() page: PageRequest) { return await this.usersService.findAll(page) } @Get('/get') public async get(@Req() req) { const user = await this.usersService.findById(req.user.userId) return user } @Put('/:userId') public async updateUser(@Param('userId') userId: string, @Body() userUpdateDto: UserUpdateDto) { try { await this.usersService.updateUser(userId, userUpdateDto) return { message: 'User Updated successfully!', status: HttpStatus.OK } } catch (err) { throw new BadRequestException(err, 'Error: User not updated!') } } @Delete('/:userId') public async deleteUser(@Param('userId') userId: string): Promise { await this.usersService.deleteUser(userId) } }