import { IsNotEmpty, IsOptional, IsNumber, IsString } from "class-validator"
import { ApiProperty } from "@nestjs/swagger"
import { validationMessage } from "src/utils/helpers"
import { messageKey } from "src/constants/message-keys"

export class TripPricingDto {
  @ApiProperty({ example: 10, description: "ID of the trip" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "trip_id",
    }),
  })
  @IsNumber()
  trip_id: number

  @ApiProperty({ example: 1, description: "ID of the vehicle type" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "vehicle_type_id",
    }),
  })
  @IsNumber()
  vehicle_type_id: number

  @ApiProperty({ example: 2, description: "ID of the trip type" })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "trip_type_id",
    }),
  })
  @IsNumber()
  trip_type_id: number

  @ApiProperty({
    example: "150.00",
    description: "Base price for the vehicle type",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "vehicle_type_price",
    }),
  })
  @IsString()
  vehicle_type_price: string

  @ApiProperty({
    example: "150.00",
    description: "total price for the vehicle type",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "vehicle_total_price",
    }),
  })
  @IsString()
  vehicle_total_price: string

  @ApiProperty({
    example: 3,
    required: false,
    description: "ID of meet and greet add-on (optional)",
  })
  @IsOptional()
  @IsNumber()
  meet_greet_id?: number

  @ApiProperty({
    example: "50.00",
    required: false,
    description: "Price for meet and greet add-on (optional)",
  })
  @IsOptional()
  @IsString()
  meet_greet_price?: string
}
