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

/**
 * Shared query DTO for the by-supplier / by-agent endpoints.
 *
 *   search     — supplier name (by-supplier) or agent name (by-agent)
 *   date_from  — settlement.created_at >=
 *   date_to    — settlement.created_at <=
 *
 * Pagination + free-text search inherited from PaginationDto.
 */
export class SettlementAnalyticsQueryDto extends PaginationDto {
  @IsString()
  @IsOptional()
  @MaxLength(20)
  date_from?: string;

  @IsString()
  @IsOptional()
  @MaxLength(20)
  date_to?: string;
}

/**
 * By-service query — drops `search`, adds destination_id filter.
 * Service names are noisy (auto-generated for transport), so search
 * isn't useful here; destination scoping is more common.
 */
export class SettlementByServiceQueryDto extends PaginationDto {
  @IsUUID()
  @IsOptional()
  destination_id?: string;

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

  @IsString()
  @IsOptional()
  @MaxLength(20)
  date_to?: string;
}
