import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  UseGuards,
  Query,
} from "@nestjs/common"
import { MeetAndGreetPricingService } from "./meet-greet-pricing.service"
import { CreateMeetAndGreetPricingDto } from "../dto/create-meet-greet-pricing.dto"
import { UpdateMeetAndGreetPricingDto } from "../dto/update-meet-greet-pricing.dto"
import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"
import { MeetAndGreetPricingFilterDto } from "../dto/filter-meet-greet-pricing.dto"

@ApiTags("Meet & Greet Pricing")
@UseGuards(AuthGuardMiddleware)
@ApiBearerAuth("access-token")
@Controller("meet-greet-pricing")
export class MeetAndGreetPricingController {
  constructor(
    private readonly meetAndGreetPricingService: MeetAndGreetPricingService,
  ) {}

  @Post()
  create(@Body() createMeetAndGreetPricingDto: CreateMeetAndGreetPricingDto) {
    return this.meetAndGreetPricingService.create(createMeetAndGreetPricingDto)
  }

  @Get("/plan/:id")
  findAll(
    @Param("id") id: string,
    @Query() meetAndGreetPricingFilterDto: MeetAndGreetPricingFilterDto,
  ) {
    return this.meetAndGreetPricingService.findAll(
      +id,
      meetAndGreetPricingFilterDto,
    )
  }

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

  @Patch(":id")
  update(
    @Param("id") id: string,
    @Body() updateMeetAndGreetPricingDto: UpdateMeetAndGreetPricingDto,
  ) {
    return this.meetAndGreetPricingService.update(
      +id,
      updateMeetAndGreetPricingDto,
    )
  }

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