import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsOptional, IsString } from 'class-validator';

export class QueryJobsDto {
  @ApiProperty({
    required: false,
    enum: ['Remote', 'Hybrid', 'On-site'],
    description: 'Filter jobs by location type',
  })
  @IsEnum(['Remote', 'Hybrid', 'On-site'] as const)
  @IsOptional()
  locationType?: 'Remote' | 'Hybrid' | 'On-site';

  @ApiProperty({
    required: false,
    description: 'Filter jobs by department',
  })
  @IsString()
  @IsOptional()
  department?: string;

  @ApiProperty({
    required: false,
    description: 'Filter jobs by content section title',
  })
  @IsString()
  @IsOptional()
  sectionTitle?: string;

  @ApiProperty({
    required: false,
    description: 'Search keyword across all content sections',
  })
  @IsString()
  @IsOptional()
  keyword?: string;

  @ApiProperty({
    required: false,
    description: 'Sort jobs by field',
    enum: ['title', 'department', 'postedAt'],
    default: 'postedAt',
  })
  @IsEnum(['title', 'department', 'postedAt'] as const)
  @IsOptional()
  sortBy?: 'title' | 'department' | 'postedAt' = 'postedAt';

  @ApiProperty({
    required: false,
    description: 'Sort order',
    enum: ['asc', 'desc'],
    default: 'desc',
  })
  @IsEnum(['asc', 'desc'] as const)
  @IsOptional()
  sortOrder?: 'asc' | 'desc' = 'desc';

  @ApiProperty({
    required: false,
    description: 'Filter by active status',
    type: Boolean,
  })
  @IsOptional()
  isActive?: boolean;
}