import { IsNotEmpty, IsOptional, IsString, IsBoolean, IsUUID, IsIn, IsNumber, MaxLength, Min } from 'class-validator';

export class CreateTransportServiceDto {
  @IsUUID() @IsNotEmpty()
  destination_id: string;

  @IsString() @IsNotEmpty() @MaxLength(50)
  short_code: string;

  @IsString() @IsNotEmpty() @IsIn(['PICKUP', 'DROPOFF', 'ONE_WAY', 'TWO_WAY'])
  category: string;

  @IsString() @IsNotEmpty() @MaxLength(100)
  from_city: string;

  @IsString() @IsOptional() @MaxLength(500)
  from_address?: string;

  @IsString() @IsOptional() @MaxLength(20)
  from_gps_latitude?: string;

  @IsString() @IsOptional() @MaxLength(20)
  from_gps_longitude?: string;

  @IsString() @IsNotEmpty() @MaxLength(100)
  to_city: string;

  @IsString() @IsOptional() @MaxLength(500)
  to_address?: string;

  @IsString() @IsOptional() @MaxLength(20)
  to_gps_latitude?: string;

  @IsString() @IsOptional() @MaxLength(20)
  to_gps_longitude?: string;

  @IsString() @IsOptional() @MaxLength(100)
  return_from_city?: string;

  @IsString() @IsOptional() @MaxLength(500)
  return_from_address?: string;

  @IsString() @IsOptional() @MaxLength(20)
  return_from_gps_latitude?: string;

  @IsString() @IsOptional() @MaxLength(20)
  return_from_gps_longitude?: string;

  @IsString() @IsOptional() @MaxLength(100)
  return_to_city?: string;

  @IsString() @IsOptional() @MaxLength(500)
  return_to_address?: string;

  @IsString() @IsOptional() @MaxLength(20)
  return_to_gps_latitude?: string;

  @IsString() @IsOptional() @MaxLength(20)
  return_to_gps_longitude?: string;

  @IsNumber() @IsOptional() @Min(0)
  distance_km?: number;

  @IsNumber() @IsOptional() @Min(0)
  duration_mins?: number;

  @IsString() @IsOptional()
  description?: string;

  @IsBoolean() @IsOptional()
  is_active?: boolean;
}
