import { ApiProperty } from "@nestjs/swagger"
import { IsDateString, IsOptional, IsString } from "class-validator"

export class CreateTripRequestByCustomerDto {
  customer_id: number

  @ApiProperty({
    example: "2023-08-15 09:00:00",
    description: "Pickup date time in YYYY-MM-DD HH:mm:ss format",
    required: true,
  })
  @IsDateString()
  pickup_datetime: string

  @ApiProperty({
    example: "123 Main Street, City Center",
    description: "Full address or landmark for pickup",
    required: true,
  })
  @IsString()
  pick_up_location: string

  @ApiProperty({
    example: "Airport Terminal 1",
    description: "Full address or landmark for drop-off",
    required: true,
  })
  @IsString()
  drop_off_location: string

  @ApiProperty({
    example: "2 suitcases and 1 backpack",
    description: "Optional luggage information",
    required: false,
  })
  @IsOptional()
  @IsString()
  luggage_information?: string

  @ApiProperty({
    example: "23.0225",
    description: "Latitude for pickup location",
    required: true,
  })
  @IsString()
  pickup_location_lan: string

  @ApiProperty({
    example: "72.5714",
    description: "Longitude for pickup location",
    required: true,
  })
  @IsString()
  pickup_location_long: string

  @ApiProperty({
    example: "23.0500",
    description: "Latitude for drop-off location",
    required: true,
  })
  @IsString()
  dropoff_location_lan: string

  @ApiProperty({
    example: "72.6000",
    description: "Longitude for drop-off location",
    required: true,
  })
  @IsString()
  dropoff_location_long: string

  @ApiProperty({
    example: "Customer prefers back seat.",
    description: "Any extra instructions or preferences",
    required: false,
  })
  @IsOptional()
  @IsString()
  additional_notes?: string

  @ApiProperty({
    example: "Call dispatch before leaving",
    description: "Note from dispatcher to driver",
    required: false,
  })
  @IsOptional()
  @IsString()
  dispatch_note?: string

  @ApiProperty({
    example: "ChIJN1t_tDeuEmsRUsoyG83frY4",
    description: "Pickup location place id (e.g., Google Place ID)",
    required: false,
  })
  @IsOptional()
  @IsString()
  pickup_place_id?: string

  @ApiProperty({
    example: "ChIJP3Sa8ziYEmsRUKgyFmh9AQM",
    description: "Dropoff location place id (e.g., Google Place ID)",
    required: false,
  })
  @IsOptional()
  @IsString()
  dropoff_place_id?: string
}
