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

class LocationDto {
  @IsOptional()
  @IsNumber()
  lat?: number;

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

  // boundary wall filters
  @IsOptional()
  @IsNumber()
  northEastLat?: number;

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

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

  @IsOptional()
  @IsNumber()
  southWestLng?: number;
}

export class GetTrainingCalloutDto {
  // search by username (created_by user name)
  @IsOptional()
  @IsString()
  userName?: string;

  // search by gym name
  @IsOptional()
  @IsString()
  gymName?: string;

  // search by location
  @IsOptional()
  @ValidateNested()
  @Type(() => LocationDto)
  location?: LocationDto;

  @IsOptional()
  @IsNumber()
  radius?: number;
}