import {AssignmentStatus, Role} from './enums';

export interface AssignmentDTO {
    assignmentName: string; // 作业名称不能缺失
    description: string; // 作业描述不能缺失
    type:string, //作业类型不能缺失
    descriptionFile?: string; // 作业要求，Word/Pdf文件 (可选)
    attachments?: string[]; // 作业附件 (可选)
    startTime: string; // 起始时间不能缺失 (ISO 8601 日期时间字符串)
    endTime: string; // 结束时间不能缺失 (ISO 8601 日期时间字符串)
}

export interface AISpeakingAssignmentDTO {
    assignmentName: string; // 作业名称不能缺失
    description?: string; // 作业描述不能缺失
    descriptionFile?:string;
    type:string,//作业类型不能缺失
    startTime: string; // 起始时间不能缺失 (ISO 8601 日期时间字符串)
    endTime: string; // 结束时间不能缺失 (ISO 8601 日期时间字符串)
    minDuration:number;//最小时长
    minInteraction:number;//最小交流次数
    surveyLinks:string[],
    surveyDuration:number
}

export interface AssignmentQueryDTO {
    assignmentId?: number;
    teacherId?: number;
    courseId?: number;
    assignmentName?: string;
    status?: AssignmentStatus;
    type:string;
}

export interface EnrollDTO {
    studentId:number;
    courseId:number;
    enrollCode:string;
}

export interface CourseDTO {
    courseName: string; // 课程名不能缺失
    teacherIds: number[]; // 老师Id不能缺失
    courseImages?: string[]; // 可选
    targetGrade?: string; // 可选
    startTime: string; // 起始时间不能缺失 (ISO 8601 日期时间字符串)
    endTime: string; // 截止时间不能缺失 (ISO 8601 日期时间字符串)
    description: string; // 课程描述不能缺失
}

export interface CourseUpdateDTO {
    courseName: string; // 课程名不能缺失
    teacherIds: number[]; // 老师Id不能缺失
    courseImages?: string[]; // 可选
    targetGrade?: string; // 可选
    startTime: string; // 起始时间不能缺失 (ISO 8601 日期时间字符串)
    endTime: string; // 截止时间不能缺失 (ISO 8601 日期时间字符串)
    description: string; // 课程描述不能缺失
    // enrollCode: string; // 选课码不能缺失
}

export interface UserRegisterDTO {
    name: string; // 真实姓名不能缺失
    password: string; // 密码（加密存储）不能缺失
    officialEmail: string; // 南大官邮，xxx@smail.nju.edu.cn 不能缺失
    phone: string;
    verifyCode: string; // 验证码不能缺失
    officialNumber: string; // 南大学号、工号不能缺失
    role: Role; // 用户角色：学生、教师、管理员不能缺失
}

export interface UserUpdateDTO {
    userAvatar?: string;
    lastLoginTime?: string;
    englishName?: string;
    gender?: string;
    birthday?: string;
    phone?: string;
    contentEmail?: string;
}

export interface PasswordChangeDTO {
    password: string; 
    officialEmail: string; 
    verifyCode: string; 
}

// 新增：班级信息接口
export interface ClassDTO {
    classId: number;
    className: string;
    courseId: number;
    stuNumber: number;
    classTime: string;
    teacherId: number;
}

// 新增：学生作业状态接口
export interface StudentAssignmentStatusDTO {
    studentId: number;
    officialNumber: string;
    stuName: string;
    status: string; // "CORRECTED" | "NOT_SUBMITTED" | "SUBMITTED"
    score: number;
}