test: harden business boundary conditions
This commit is contained in:
@@ -1,43 +1,81 @@
|
||||
import { IsOptional, IsString, IsNotEmpty, IsInt, IsArray, IsDateString, IsEnum, ArrayNotEmpty, ValidateNested } from 'class-validator';
|
||||
import {
|
||||
IsOptional,
|
||||
IsString,
|
||||
IsNotEmpty,
|
||||
IsInt,
|
||||
IsArray,
|
||||
IsDateString,
|
||||
IsEnum,
|
||||
ArrayNotEmpty,
|
||||
ValidateNested,
|
||||
Min,
|
||||
} from 'class-validator';
|
||||
import { Type, Transform } from 'class-transformer';
|
||||
import { ClassType, ClassStatus, TeacherRoleType } from '../../entities';
|
||||
|
||||
export class ClassTeacherItemDto {
|
||||
@IsInt()
|
||||
userId: number;
|
||||
|
||||
@IsEnum(TeacherRoleType)
|
||||
roleType: string;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
subject?: string;
|
||||
}
|
||||
|
||||
export class CreateClassDto {
|
||||
@IsString() @IsNotEmpty()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
name: string;
|
||||
|
||||
@IsString() @IsNotEmpty()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
code: string;
|
||||
|
||||
|
||||
@IsEnum(ClassType) @IsString() @IsNotEmpty()
|
||||
@IsEnum(ClassType)
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
classType: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
startDate?: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
endDate?: string;
|
||||
|
||||
@IsEnum(ClassStatus) @IsOptional() @IsString()
|
||||
@IsEnum(ClassStatus)
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
status?: string;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
headTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
lifeTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
academicTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
@Min(0)
|
||||
maxStudents?: number;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
notes?: string;
|
||||
|
||||
@IsOptional() @IsArray()
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@IsInt({ each: true })
|
||||
studentIds?: number[];
|
||||
|
||||
@IsOptional()
|
||||
@@ -46,55 +84,73 @@ export class CreateClassDto {
|
||||
@Type(() => ImportUserItem)
|
||||
users?: ImportUserItem[];
|
||||
|
||||
@IsOptional() @IsArray()
|
||||
teachers?: Array<{ userId: number; roleType: string; subject?: string }>;
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => ClassTeacherItemDto)
|
||||
teachers?: ClassTeacherItemDto[];
|
||||
}
|
||||
|
||||
export class UpdateClassDto {
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
name?: string;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
code?: string;
|
||||
|
||||
|
||||
@IsEnum(ClassType) @IsOptional() @IsString()
|
||||
@IsEnum(ClassType)
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
classType?: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
startDate?: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
endDate?: string;
|
||||
|
||||
@IsEnum(ClassStatus) @IsOptional() @IsString()
|
||||
@IsEnum(ClassStatus)
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
status?: string;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
headTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
lifeTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
academicTeacherId?: number;
|
||||
|
||||
@IsOptional() @IsInt()
|
||||
@IsOptional()
|
||||
@IsInt()
|
||||
@Min(0)
|
||||
maxStudents?: number;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
export class QueryClassDto {
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
status?: string;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
classType?: string;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
keyword?: string;
|
||||
|
||||
@IsOptional()
|
||||
@@ -108,7 +164,8 @@ export class QueryClassDto {
|
||||
}
|
||||
|
||||
export class AddStudentsDto {
|
||||
@IsArray() @IsInt({ each: true })
|
||||
@IsArray()
|
||||
@IsInt({ each: true })
|
||||
studentIds: number[];
|
||||
}
|
||||
|
||||
@@ -119,23 +176,28 @@ export class AddTeacherDto {
|
||||
@IsEnum(TeacherRoleType)
|
||||
roleType: string;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
subject?: string;
|
||||
}
|
||||
|
||||
export class QueryClassScheduleDto {
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
startDate?: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
endDate?: string;
|
||||
}
|
||||
|
||||
export class QueryClassAttendanceSummaryDto {
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
startDate?: string;
|
||||
|
||||
@IsOptional() @IsDateString()
|
||||
@IsOptional()
|
||||
@IsDateString()
|
||||
endDate?: string;
|
||||
}
|
||||
export class BatchImportStudentsDto {
|
||||
@@ -147,12 +209,15 @@ export class BatchImportStudentsDto {
|
||||
}
|
||||
|
||||
export class ImportUserItem {
|
||||
@IsString() @IsNotEmpty()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
dingUserId: string;
|
||||
|
||||
@IsString() @IsNotEmpty()
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
name: string;
|
||||
|
||||
@IsOptional() @IsString()
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
mobile?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user