import { Body, Controller, Get, Param, Post, Req, UseGuards } from "@nestjs/common";
import { JwtAuthGuard } from "../../common/guards/jwt-auth.guard";
import { BookingsService } from "./bookings.service";
import { UpdateBookingStatusDto } from "./dto/update-booking-status.dto";
import { CancelBookingDto } from "./dto/cancel-booking.dto";

@Controller("bookings")
@UseGuards(JwtAuthGuard)
export class BookingsController {
  constructor(private readonly svc: BookingsService) {}

  @Get("me")
  me(@Req() req: any) {
    return this.svc.listMyBookings(req.user.userId);
  }

  @Get(":id")
  get(@Req() req: any, @Param("id") id: string) {
    return this.svc.getBookingForUser(req.user.userId, id);
  }

  @Post(":id/status")
  updateStatus(@Req() req: any, @Param("id") id: string, @Body() dto: UpdateBookingStatusDto) {
    return this.svc.updateStatus(req.user.userId, id, dto);
  }

  @Post(":id/cancel")
  cancel(@Req() req: any, @Param("id") id: string, @Body() dto: CancelBookingDto) {
    return this.svc.cancelBooking(req.user.userId, id, dto);
  }
}
