import { ApiProperty } from '@nestjs/swagger';
import { IsInt, IsOptional, IsString, Min } from 'class-validator';
import { Type } from 'class-transformer';

export class FilterFormSectionDto {
  @ApiProperty({ description: 'Program ID to filter by', required: false, example: 123 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  programId?: number;

  @ApiProperty({ description: 'Parent section ID to filter by (null for root sections)', required: false, example: 5 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  parentSectionId?: number | null;

  @ApiProperty({ description: 'Template form section ID to filter by', required: false, example: 10 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  templateFormSectionId?: number;

  @ApiProperty({ description: 'Search text to filter by section name', required: false, example: 'Personal' })
  @IsOptional()
  @IsString()
  searchText?: string;

  @ApiProperty({ description: 'Number of records per page', required: false, default: 10, example: 10 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  limit?: number = 10;

  @ApiProperty({ description: 'Offset for pagination', required: false, default: 0, example: 0 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(0)
  offset?: number = 0;
}
