import { IsOptional, IsNumber, IsDateString, Min } from 'class-validator'; import { ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; export class AnalyticsQueryDto { @ApiPropertyOptional({ description: 'Course ID to filter by' }) @IsOptional() @IsNumber() @Type(() => Number) courseId?: number; @ApiPropertyOptional({ description: 'Start date (ISO format)' }) @IsOptional() @IsDateString() startDate?: string; @ApiPropertyOptional({ description: 'End date (ISO format)' }) @IsOptional() @IsDateString() endDate?: string; @ApiPropertyOptional({ description: 'Page number', default: 1 }) @IsOptional() @IsNumber() @Min(1) @Type(() => Number) page?: number = 1; @ApiPropertyOptional({ description: 'Items per page', default: 20 }) @IsOptional() @IsNumber() @Min(1) @Type(() => Number) limit?: number = 20; }