import { IsBoolean, IsIn, IsNumber, IsOptional, IsString, IsUUID, ValidateNested } from "class-validator";
import { Type } from "class-transformer";

class LocationDto {
  @IsNumber() lat!: number;
  @IsNumber() lng!: number;
  @IsOptional() @IsString() addressText?: string;
}

export class CreateBookingRequestDto {
  @IsIn(["BROADCAST", "FAVOURITE_DIRECT"])
  requestType!: "BROADCAST" | "FAVOURITE_DIRECT";

  @IsUUID() categoryId!: string;
  @IsOptional() @IsUUID() serviceId?: string;

  @IsBoolean() isAsap!: boolean;
  @IsOptional() @IsString() desiredTime?: string;

  @IsIn(["AT_HOME", "IN_SALON"])
  serviceMode!: "AT_HOME" | "IN_SALON";

  @ValidateNested()
  @Type(() => LocationDto)
  location!: LocationDto;

  @IsOptional() @IsNumber() budgetMin?: number;
  @IsOptional() @IsNumber() budgetMax?: number;
  @IsOptional() @IsString() notes?: string;
}
