重构项目结构,移除Assignment相关功能,优化Submission模块
Some checks failed
TechAct / explore-gitea-actions (push) Failing after 12s

This commit is contained in:
SpecialX
2025-10-09 18:57:28 +08:00
parent 403b34a098
commit ac900159ba
289 changed files with 11948 additions and 20150 deletions

View File

@@ -81,7 +81,7 @@ namespace TechHelper.Server.Services
orderBy: s => s.OrderByDescending(s => s.SubmissionTime),
predicate: s => !s.IsDeleted,
include: i => i.Include(s => s.Student)
.Include(s => s.Assignment));
.Include(s => s.Exam));
var submissionDtos = _mapper.Map<List<SubmissionDto>>(pagedSubmissions.Items);
@@ -109,10 +109,10 @@ namespace TechHelper.Server.Services
predicate: sd => sd.StudentId == userId && sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i
.Include(s => s.AssignmentQuestion)
.Include(s => s.ExamQuestion)
.ThenInclude(aq => aq.Question));
var errorQuestions = errorSDs.Items.Select(sd => sd.AssignmentQuestion.Question)
var errorQuestions = errorSDs.Items.Select(sd => sd.ExamQuestion.Question)
.Where(q => q != null)
.DistinctBy(q => q.Id)
.ToList();
@@ -132,18 +132,18 @@ namespace TechHelper.Server.Services
try
{
var errorSDs = await _submissionDetailRepository.GetPagedListAsync(
predicate: sd => sd.Submission.AssignmentId == assignmentId &&
predicate: sd => sd.Submission.ExamId == assignmentId &&
sd.StudentId == userId &&
sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i
.Include(s => s.AssignmentQuestion)
.Include(s => s.ExamQuestion)
.ThenInclude(aq => aq.Question));
// 对错题按类型进行分组计数
var errorTypeDistribution = errorSDs.Items
.Where(sd => sd.AssignmentQuestion?.Question != null)
.GroupBy(sd => sd.AssignmentQuestion.Question.Type)
.Where(sd => sd.ExamQuestion?.Question != null)
.GroupBy(sd => sd.ExamQuestion.Question.Type)
.Select(g => new
{
QuestionType = g.Key.ToString(),
@@ -164,7 +164,7 @@ namespace TechHelper.Server.Services
try
{
var submissionDetails = await _submissionDetailRepository.GetPagedListAsync(
predicate: sd => sd.Submission.AssignmentId == assignmentId &&
predicate: sd => sd.Submission.ExamId == assignmentId &&
sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i.Include(sd => sd.Student));
@@ -194,15 +194,15 @@ namespace TechHelper.Server.Services
try
{
var errorSDs = await _submissionDetailRepository.GetPagedListAsync(
predicate: sd => sd.Submission.AssignmentId == assignmentId &&
predicate: sd => sd.Submission.ExamId == assignmentId &&
sd.StudentId == userId &&
sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i
.Include(s => s.AssignmentQuestion)
.Include(s => s.ExamQuestion)
.ThenInclude(aq => aq.Question));
var errorQuestions = errorSDs.Items.Select(sd => sd.AssignmentQuestion.Question)
var errorQuestions = errorSDs.Items.Select(sd => sd.ExamQuestion.Question)
.Where(q => q != null)
.DistinctBy(q => q.Id)
.ToList();
@@ -221,17 +221,17 @@ namespace TechHelper.Server.Services
try
{
var errorSDs = await _submissionDetailRepository.GetPagedListAsync(
predicate: sd => sd.Submission.AssignmentId == assignmentId &&
predicate: sd => sd.Submission.ExamId == assignmentId &&
sd.StudentId == userId &&
sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i
.Include(s => s.AssignmentQuestion)
.Include(s => s.ExamQuestion)
.ThenInclude(aq => aq.Question));
var errorTypeDistribution = errorSDs.Items
.Where(sd => sd.AssignmentQuestion?.Question != null)
.GroupBy(sd => sd.AssignmentQuestion.Question.Type)
.Where(sd => sd.ExamQuestion?.Question != null)
.GroupBy(sd => sd.ExamQuestion.Question.Type)
.Select(g => new
{
QuestionType = g.Key.ToString(),
@@ -254,10 +254,10 @@ namespace TechHelper.Server.Services
var submission = await _submissionRepository.GetFirstOrDefaultAsync(
predicate: s => s.Id == id && !s.IsDeleted,
include: i => i.Include(s => s.Student)
.Include(s => s.Assignment)
.Include(s => s.Exam)
.Include(s => s.Grader)
.Include(s => s.SubmissionDetails)
.ThenInclude(sd => sd.AssignmentQuestion)
.ThenInclude(sd => sd.ExamQuestion)
.ThenInclude(aq => aq.Question));
if (submission == null)
@@ -279,18 +279,18 @@ namespace TechHelper.Server.Services
try
{
var errorSubmissionDetails = await _submissionDetailRepository.GetPagedListAsync(
predicate: sd => sd.AssignmentQuestionId == assignmentQuestionId &&
predicate: sd => sd.ExamQuestionId == assignmentQuestionId &&
sd.IsCorrect == false &&
(sd.Status == SubmissionStatus.Submitted || sd.Status == SubmissionStatus.Graded),
include: i => i
.Include(sd => sd.Student)
.Include(sd => sd.AssignmentQuestion)
.Include(sd => sd.ExamQuestion)
.ThenInclude(aq => aq.Question));
var errorStudentsByQuestion = errorSubmissionDetails.Items
.Where(sd => sd.AssignmentQuestion?.Question != null && sd.Student != null)
.GroupBy(sd => new { sd.AssignmentQuestionId, sd.AssignmentQuestion.Question.Title })
.Where(sd => sd.ExamQuestion?.Question != null && sd.Student != null)
.GroupBy(sd => new { sd.ExamQuestionId, sd.ExamQuestion.Question.Title })
.Select(g => new
{
AssignmentQuestionId = g.Key.AssignmentQuestionId,
@@ -315,7 +315,7 @@ namespace TechHelper.Server.Services
{
try
{
var result = await _unitOfWork.GetRepository<Submission>().GetAllAsync(predicate: s => s.AssignmentId == assignment && s.StudentId == studentId);
var result = await _unitOfWork.GetRepository<Submission>().GetAllAsync(predicate: s => s.ExamId == assignment && s.StudentId == studentId);
return (byte)result.Count;
}
catch (Exception ex)