import { Body, Controller, Get, HttpCode, HttpStatus, Patch, Post } from "@nestjs/common"; import { ApiOperation, ApiTags } from "@nestjs/swagger"; import { CheckValidityDTO } from "./DTO/check-validity.dto"; import { UpdateProfileDto } from "./DTO/update-profile.dto"; import { CreateUserGroupDto } from "./DTO/user-group.dto"; import { User } from "./entities/user.entity"; import { RoleEnum } from "./enums/role.enum"; import { UsersService } from "./providers/users.service"; import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; import { Roles } from "../../common/decorators/roles.decorator"; import { UserDec } from "../../common/decorators/user.decorator"; @Controller("users") @ApiTags("users") export class UsersController { constructor(private usersService: UsersService) {} @AuthGuards() @ApiOperation({ summary: "Get user profile" }) @Get("me") getMe(@UserDec() user: User) { return this.usersService.getMe(user.id); } @AuthGuards() @ApiOperation({ summary: "Update user profile" }) @Patch("update-profile") updateProfile(@Body() updateProfileDto: UpdateProfileDto, @UserDec() user: User) { return this.usersService.updateProfile(user.id, updateProfileDto); } @AuthGuards() @ApiOperation({ summary: "Check validity of user field" }) @HttpCode(HttpStatus.OK) @Post("check-validity") checkValidity(@Body() checkValidityDto: CheckValidityDTO, @UserDec() user: User) { return this.usersService.checkValidity(checkValidityDto, user.id); } @AuthGuards() @Roles(RoleEnum.ADMIN) @ApiOperation({ summary: "Create user group" }) @HttpCode(HttpStatus.CREATED) @Post("user-group") createUserGroup(@Body() createDto: CreateUserGroupDto) { return this.usersService.createUserGroup(createDto); } @ApiOperation({ summary: "get all user group" }) @HttpCode(HttpStatus.OK) @Get("user-group") UserGroups() { return this.usersService.getUserGroup(); } }