import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  UseGuards,
  Req,
  Query,
} from "@nestjs/common"
import { HospitalContactsService } from "./hospital-contacts.service"
import { CreateHospitalContactDto } from "../dto/create-hospital-contact.dto"
import { UpdateHospitalContactDto } from "../dto/update-hospital-contact.dto"
import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"
import { HospitalContactFilterDto } from "../dto/filter-hospital-contact.dto"

@Controller("hospital-contacts")
@ApiTags("Hospitals Contacts")
@UseGuards(AuthGuardMiddleware)
@ApiBearerAuth("access-token")
export class HospitalContactsController {
  constructor(
    private readonly hospitalContactsService: HospitalContactsService,
  ) {}

  @Post()
  create(@Body() createHospitalContactDto: CreateHospitalContactDto) {
    return this.hospitalContactsService.create(createHospitalContactDto)
  }

  @Get()
  findAll(
    @Req() request: any,
    @Query() hospitalContactFilterDto: HospitalContactFilterDto,
  ) {
    return this.hospitalContactsService.findAll(hospitalContactFilterDto)
  }

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

  @Patch(":id")
  update(
    @Param("id") id: string,
    @Body() updateHospitalContactDto: UpdateHospitalContactDto,
  ) {
    return this.hospitalContactsService.update(+id, updateHospitalContactDto)
  }

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