import { Transform } from "class-transformer"
import { IsInt, IsOptional, IsString } from "class-validator"

export class UpdateCustomerDto {
  @IsOptional()
  @IsString()
  customer_name?: string

  @IsOptional()
  @IsString()
  customer_type?: string

  @IsOptional()
  date_of_birth?: string

  @IsOptional()
  @IsInt()
  pricing_city_id?: number

  @IsOptional()
  @IsString()
  gender?: string

  @IsOptional()
  @IsString()
  primary_address?: string

  @IsOptional()
  @IsString()
  secondary_address?: string

  @IsOptional()
  @IsString()
  zip_code?: string

  @IsOptional()
  visa_start_date?: string

  @IsOptional()
  visa_end_date?: string

  @IsOptional()
  @IsString()
  country_code: string

  @IsOptional()
  @IsString()
  phone_number?: string

  @IsOptional()
  @IsString()
  @Transform(({ value }) => (value === "" ? undefined : value))
  email?: string

  @IsOptional()
  place_id?: string

  @IsOptional()
  tags?: any[]

  @IsOptional()
  @IsString()
  reference_number?: string

  @IsOptional()
  @IsString()
  prn_number?: string

  @IsOptional()
  @IsString()
  episode?: string

  @IsOptional()
  @IsString()
  log_issue_at?: string

  @IsOptional()
  @IsString()
  log_expire_at?: string

  @IsOptional()
  @IsString()
  letter_of_guarantee?: string

  @IsOptional()
  is_medical_tourist?: string

  @IsOptional()
  @IsString()
  department?: string

  @IsOptional()
  @IsString()
  job_title?: string

  @IsOptional()
  @IsString()
  status?: string

  @IsOptional()
  @IsInt()
  current_step?: number

  @IsOptional()
  @IsInt()
  client_company_id?: number

  @IsOptional()
  @IsInt()
  client_contact_id?: number

  @IsOptional()
  @IsInt()
  city_id?: number

  @IsOptional()
  @IsInt()
  state_id?: number

  @IsOptional()
  @IsInt()
  dispatcher_id?: number

  @IsOptional()
  @IsInt()
  country_id?: number

  @IsOptional()
  @IsInt()
  hospital_id?: number

  @IsOptional()
  @IsInt()
  vehicle_type_id?: number

  @IsOptional()
  latitude?: number

  @IsOptional()
  longitude?: number

  @IsOptional()
  profile_photo?: string
}
