import { ApiProperty } from "@nestjs/swagger"
import {
  IsArray,
  IsEnum,
  IsNotEmpty,
  IsNumber,
  IsOptional,
  ValidateNested,
} from "class-validator"
import { Type } from "class-transformer"

class TripBabySeatItemDto {
  @ApiProperty({
    example: 1,
    required: false,
    description: "Existing baby seat ID (required for update or delete)",
  })
  @IsOptional()
  id?: number

  @ApiProperty({
    example: "forward",
    enum: ["forward", "backward"],
    required: false,
  })
  @IsOptional()
  @IsEnum(["forward", "backward"])
  direction?: "forward" | "backward"

  @ApiProperty({
    example: true,
    required: false,
    description: "Set to true to delete this baby seat entry",
  })
  @IsOptional()
  should_remove?: boolean

  addon_id: number
}

export class UpdateTripBabySeatDto {
  @ApiProperty({ example: 1, description: "Trip ID" })
  @IsNumber()
  @IsNotEmpty()
  trip_id: number

  @ApiProperty({
    type: [TripBabySeatItemDto],
    description: "List of baby seat updates (create/update/delete)",
  })
  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => TripBabySeatItemDto)
  baby_seats: TripBabySeatItemDto[]
}
