eduverse-backend / src /modules /tasks /dto /create-task.dto.ts
tarekdx3's picture
Sprint 3 Done and TESTED
e67d35c
Raw
History Blame Contribute Delete
1.47 kB
import { IsString, IsOptional, IsEnum, IsNumber, IsDateString } from 'class-validator';
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { TaskType, TaskPriority } from '../entities/student-task.entity';
export class CreateTaskDto {
@ApiProperty({ description: 'Task title', example: 'Complete Assignment 1' })
@IsString()
title: string;
@ApiPropertyOptional({ description: 'Task description', example: 'Finish all exercises in chapter 3' })
@IsOptional()
@IsString()
description?: string;
@ApiProperty({ description: 'Task type', enum: TaskType, example: TaskType.ASSIGNMENT })
@IsEnum(TaskType)
taskType: TaskType;
@ApiPropertyOptional({ description: 'Linked assignment ID', example: 1 })
@IsOptional()
@IsNumber()
@Type(() => Number)
assignmentId?: number;
@ApiPropertyOptional({ description: 'Linked quiz ID', example: 1 })
@IsOptional()
@IsNumber()
@Type(() => Number)
quizId?: number;
@ApiPropertyOptional({ description: 'Linked lab ID', example: 1 })
@IsOptional()
@IsNumber()
@Type(() => Number)
labId?: number;
@ApiPropertyOptional({ description: 'Due date (ISO 8601)', example: '2025-03-15T23:59:00Z' })
@IsOptional()
@IsDateString()
dueDate?: string;
@ApiPropertyOptional({ description: 'Task priority', enum: TaskPriority, example: TaskPriority.MEDIUM })
@IsOptional()
@IsEnum(TaskPriority)
priority?: TaskPriority;
}