import { Controller, Get, Patch, Body, Param, Query, UseGuards } from "@nestjs/common"; import { UsersService } from "./users.service"; import { JwtAuthGuard, RolesGuard, Roles } from "../auth/guards/auth.guard"; import { CurrentUser } from "../auth/decorators/current-user.decorator"; import { IsEnum, IsBoolean } from "class-validator"; class UpdateRoleDto { @IsEnum(["CLIENTE","OPERADOR_BODEGA","AGENTE_ADUANERO","ADMIN_EMPRESA","SUPER_ADMIN","SOPORTE"]) role!: string; } class SetActiveDto { @IsBoolean() isActive!: boolean; } @Controller("users") @UseGuards(JwtAuthGuard, RolesGuard) export class UsersController { constructor(private svc: UsersService) {} @Get() @Roles("ADMIN_EMPRESA", "SUPER_ADMIN") findAll(@CurrentUser() user: any, @Query("search") search?: string): Promise { return this.svc.findAll(user.tenantId, search); } @Get(":id") @Roles("ADMIN_EMPRESA", "SUPER_ADMIN") findOne(@Param("id") id: string): Promise { return this.svc.findOne(id); } @Patch(":id/role") @Roles("ADMIN_EMPRESA", "SUPER_ADMIN") updateRole(@Param("id") id: string, @Body() dto: UpdateRoleDto): Promise { return this.svc.updateRole(id, dto.role); } @Patch(":id/active") @Roles("ADMIN_EMPRESA", "SUPER_ADMIN") setActive(@Param("id") id: string, @Body() dto: SetActiveDto): Promise { return this.svc.setActive(id, dto.isActive); } }