import { IsNotEmpty, IsOptional, IsString, IsUUID, IsNumber, IsArray, IsDateString, IsEnum, MaxLength, Min, ArrayMinSize } from 'class-validator';
import { QueryStage } from '../../../entities/query.entity';

export class CreateQueryDto {
  @IsUUID() @IsNotEmpty()
  source_id: string;

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

  @IsArray() @ArrayMinSize(1, { message: 'At least one sales team member is required' })
  @IsUUID(undefined, { each: true })
  sales_team: string[];

  @IsArray() @IsOptional()
  @IsString({ each: true })
  source_tags?: string[];

  @IsArray() @IsOptional()
  @IsString({ each: true })
  remark_tags?: string[];

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

  @IsDateString() @IsNotEmpty()
  start_date: string;

  @IsDateString() @IsNotEmpty()
  end_date: string;

  @IsNumber() @IsNotEmpty() @Min(1)
  adults: number;

  @IsArray() @IsOptional()
  @IsNumber({}, { each: true })
  children_ages?: number[];

  @IsNumber() @IsOptional()
  infants?: number;

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

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

  @IsString() @IsNotEmpty() @MaxLength(20)
  guest_mobile: string;

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

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

  @IsEnum(QueryStage) @IsOptional()
  stage?: QueryStage;
}
