import {
    Body,
    Controller,
    Delete,
    Get,
    Param,
    ParseUUIDPipe,
    Patch,
    Post,
  } from '@nestjs/common';
  import { UsersService } from './users.service';
  import { CreateUserDto, UpdateUserDto } from './dto/create-user.dto';
  import { RequirePermissions } from '../../common/decorators/permissions.decorator';

  @Controller('users')
  export class UsersController {
    constructor(private readonly users: UsersService) {}

    @Get()
    @RequirePermissions('users.view')
    list() {
      return this.users.list();
    }

    @Get(':id')
    @RequirePermissions('users.view')
    one(@Param('id', new ParseUUIDPipe()) id: string) {
      return this.users.getOne(id);
    }

    @Post()
    @RequirePermissions('users.create')
    create(@Body() dto: CreateUserDto) {
      return this.users.create(dto);
    }

    @Patch(':id')
    @RequirePermissions('users.update')
    update(
      @Param('id', new ParseUUIDPipe()) id: string,
      @Body() dto: UpdateUserDto,
    ) {
      return this.users.update(id, dto);
    }

    @Delete(':id')
    @RequirePermissions('users.delete')
    remove(@Param('id', new ParseUUIDPipe()) id: string) {
      return this.users.remove(id);
    }
  }
  