import {
  Controller,
  Post,
  Body,
  Req,
  UseGuards,
  Param,
  ParseIntPipe,
} from "@nestjs/common"
import { PartyTypesService } from "./party-types.service"
import { CreatePartyTypeDto } from "./dto/create-party-type.dto"
import { UpsertPartyPaymentDto } from "./dto/upsert-party-payment.dto"
import { ApiBearerAuth, ApiTags } from "@nestjs/swagger"
import { AuthGuardMiddleware } from "src/middleware/auth-guard.middleware"

@Controller("party-types")
@ApiTags("Party Types")
@UseGuards(AuthGuardMiddleware)
@ApiBearerAuth("access-token")
export class PartyTypesController {
  constructor(private readonly partyTypesService: PartyTypesService) {}

  @Post()
  create(
    @Body() createPartyTypeDto: CreatePartyTypeDto,
    @Req() request: Request,
  ) {
    return this.partyTypesService.create(
      createPartyTypeDto,
      request.headers["authorization"],
    )
  }

  @Post("party-payments/:id")
  upsertPartyPayment(
    @Param("id", ParseIntPipe) partyId: number,
    @Body() upsertPartyPaymentDto: UpsertPartyPaymentDto,
    @Req() request: Request,
  ) {
    return this.partyTypesService.upsertPayment(
      partyId,
      upsertPartyPaymentDto,
      request.headers["authorization"],
    )
  }
}
