import {
  IsNotEmpty,
  IsOptional,
  IsString,
  IsBoolean,
  IsUUID,
  IsEnum,
  IsEmail,
  MaxLength,
  IsDateString,
} from 'class-validator';
import { DriverStatus } from '../../../entities/driver.entity';

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

  @IsUUID()
  @IsNotEmpty()
  supplier_id: string;

  @IsString()
  @IsNotEmpty()
  @MaxLength(255)
  name: string;

  // Phone is optional — ops often doesn't have a driver's number
  // (ad-hoc pool drivers, placeholder rows). Supplier phone is the
  // fallback for contact purposes.
  @IsString()
  @IsOptional()
  @MaxLength(20)
  phone?: string | null;

  @IsEmail()
  @IsOptional()
  email?: string;

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

  // License no is optional — placeholder / pool drivers often have
  // no license on file at assignment time.
  @IsString()
  @IsOptional()
  @MaxLength(50)
  license_no?: string | null;

  @IsDateString()
  @IsOptional()
  license_expiry?: string;

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

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

  @IsString()
  @IsOptional()
  @MaxLength(255)
  operational_hours?: string;

  @IsEnum(DriverStatus)
  @IsOptional()
  status?: DriverStatus;

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

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