import {
    Body,
    Controller,
    Delete,
    Get,
    Param,
    ParseUUIDPipe,
    Patch,
    Post,
  } from '@nestjs/common';
  import { OfficesService } from './offices.service';
  import { CreateOfficeDto, UpdateOfficeDto } from './dto/create-office.dto';
  import { RequirePermissions } from '../../common/decorators/permissions.decorator';

  @Controller('offices')
  export class OfficesController {
    constructor(private readonly offices: OfficesService) {}

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

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

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

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

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