import {
    Body,
    Controller,
    Delete,
    Get,
    Param,
    ParseUUIDPipe,
    Patch,
    Post,
  } from '@nestjs/common';
  import { RolesService } from './roles.service';
  import { CreateRoleDto, UpdateRoleDto } from './dto/create-role.dto';
  import { RequirePermissions } from '../../common/decorators/permissions.decorator';

  @Controller('roles')
  export class RolesController {
    constructor(private readonly roles: RolesService) {}

    @Get('permissions')
    @RequirePermissions('roles.view')
    permissions() {
      return this.roles.listPermissions();
    }

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

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

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

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

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