import { IsOptional, IsString, IsDateString, IsUUID } from 'class-validator';
import { PaginationDto } from '../../../common/dto/pagination.dto';

/**
 * BookingListQueryDto — query params for GET /bookings.
 *
 * Extends PaginationDto (page, limit, search) with booking-specific
 * filters (status, destination, date range). The global validation
 * pipe's `forbidNonWhitelisted: true` rejects any param not declared
 * here, so all filters must be explicit properties.
 */
export class BookingListQueryDto extends PaginationDto {
  @IsOptional()
  @IsString()
  status?: string;

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

  /** Trip source (external agent / channel) on the linked query. */
  @IsOptional()
  @IsUUID()
  source_id?: string;

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

  @IsOptional()
  @IsDateString()
  date_to?: string;
}
