import {
  Body,
  Controller,
  Delete,
  Get,
  Param,
  Patch,
  Post,
  Query,
  UseGuards,
} from "@nestjs/common"
import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"
import { ClientCompanyContactsService } from "./client-company-contacts.service"
import { CreateClientCompanyContactDto } from "../dto/create-client-company-contact.dto"
import { ClientCompanyContactFilterDto } from "../dto/filter-client-company-contact.dto"
import { UpdateClientCompanyContactDto } from "../dto/update-client-company-contact.dto"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"

@ApiTags("Client Company Contacts")
@ApiBearerAuth("access-token")
@Controller("client-company-contacts")
@UseGuards(AuthGuardMiddleware)
export class ClientCompanyContactsController {
  constructor(
    private readonly clientCompanyContactsService: ClientCompanyContactsService,
  ) {}

  @Post()
  create(@Body() createClientCompanyContactDto: CreateClientCompanyContactDto) {
    return this.clientCompanyContactsService.create(
      createClientCompanyContactDto,
    )
  }

  @Get()
  findAll(
    @Query() clientCompanyContactFilterDto: ClientCompanyContactFilterDto,
  ) {
    return this.clientCompanyContactsService.findAll(
      clientCompanyContactFilterDto,
    )
  }

  @Get(":id")
  findOne(@Param("id") id: string) {
    return this.clientCompanyContactsService.findOne(+id)
  }

  @Patch(":id")
  update(
    @Param("id") id: string,
    @Body() updateClientCompanyContactDto: UpdateClientCompanyContactDto,
  ) {
    return this.clientCompanyContactsService.update(
      +id,
      updateClientCompanyContactDto,
    )
  }

  @Delete(":id")
  remove(@Param("id") id: string) {
    return this.clientCompanyContactsService.remove(+id)
  }
}
