|
@@ -328,36 +328,11 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private async Task<List<ExamQuestion>> GetQuestions(ExamManage examManage)
|
|
|
|
- {
|
|
|
|
- var questionRepository = new ExamRepository<ExamQuestion>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
-
|
|
|
|
- var questionTable = questionRepository.Queryable();
|
|
|
|
- var testPaperItemTable = _testPaperItemRepository.Queryable().Where(x => x.TestPaperId == examManage.TestPaperId);
|
|
|
|
-
|
|
|
|
- var questions = questionTable.InnerJoin(testPaperItemTable, (q, t) => q.Id == t.QuestionId)
|
|
|
|
- .Select((q, t) => q);
|
|
|
|
-
|
|
|
|
- return await questions.ToListAsync();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private async Task<List<ExamTagQuestion>> GetTagQuestions(ExamManage examManage)
|
|
|
|
|
|
+ public async Task UpdateExamStatus(EntityQueryRequest entityQueryRequest, CancellationToken requestAborted)
|
|
{
|
|
{
|
|
- var extractRuleRepository = new ExamRepository<ExamExtractRule>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
- var ruleTagRepository = new ExamRepository<ExamRuleTag>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
- var tagQuestionRepository = new ExamRepository<ExamTagQuestion>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- var extractRuleTable = extractRuleRepository.Queryable().Where(x=>x.Id == examManage.ExtractRuleId && x.RuleType == examManage.ExamType);
|
|
|
|
- var ruleTagTable = ruleTagRepository.Queryable();
|
|
|
|
- var tagQuestionTable = tagQuestionRepository.Queryable();
|
|
|
|
-
|
|
|
|
- var tagQuestions = await tagQuestionTable
|
|
|
|
- .InnerJoin(ruleTagTable, (q, rt) => q.TagId == rt.TagId)
|
|
|
|
- .InnerJoin(extractRuleTable, (q, rt, x) => rt.RuleId == x.Id)
|
|
|
|
- .Select((q, rt, x) => q).ToListAsync();
|
|
|
|
|
|
+ List<ExamManage> examManages = await UpdateExamManageStatus(entityQueryRequest, requestAborted);
|
|
|
|
|
|
- return tagQuestions;
|
|
|
|
|
|
+ //await UdpateUserExam(examManages, requestAborted);
|
|
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
#endregion
|
|
@@ -679,6 +654,74 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private async Task<List<ExamQuestion>> GetQuestions(ExamManage examManage)
|
|
|
|
+ {
|
|
|
|
+ var questionRepository = new ExamRepository<ExamQuestion>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
+
|
|
|
|
+ var questionTable = questionRepository.Queryable();
|
|
|
|
+ var testPaperItemTable = _testPaperItemRepository.Queryable().Where(x => x.TestPaperId == examManage.TestPaperId);
|
|
|
|
+
|
|
|
|
+ var questions = questionTable.InnerJoin(testPaperItemTable, (q, t) => q.Id == t.QuestionId)
|
|
|
|
+ .Select((q, t) => q);
|
|
|
|
+
|
|
|
|
+ return await questions.ToListAsync();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private async Task<List<ExamTagQuestion>> GetTagQuestions(ExamManage examManage)
|
|
|
|
+ {
|
|
|
|
+ var extractRuleRepository = new ExamRepository<ExamExtractRule>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
+ var ruleTagRepository = new ExamRepository<ExamRuleTag>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
+ var tagQuestionRepository = new ExamRepository<ExamTagQuestion>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var extractRuleTable = extractRuleRepository.Queryable().Where(x => x.Id == examManage.ExtractRuleId && x.RuleType == examManage.ExamType);
|
|
|
|
+ var ruleTagTable = ruleTagRepository.Queryable();
|
|
|
|
+ var tagQuestionTable = tagQuestionRepository.Queryable();
|
|
|
|
+
|
|
|
|
+ var tagQuestions = await tagQuestionTable
|
|
|
|
+ .InnerJoin(ruleTagTable, (q, rt) => q.TagId == rt.TagId)
|
|
|
|
+ .InnerJoin(extractRuleTable, (q, rt, x) => rt.RuleId == x.Id)
|
|
|
|
+ .Select((q, rt, x) => q).ToListAsync();
|
|
|
|
+
|
|
|
|
+ return tagQuestions;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private async Task UdpateUserExam(List<ExamManage> examManages, CancellationToken requestAborted)
|
|
|
|
+ {
|
|
|
|
+ var examIds = examManages.Select(x => x.Id).ToList();
|
|
|
|
+ var userExams = await _userExamRepository.Queryable().Where(x => examIds.Contains(x.ExamId)).ToListAsync();
|
|
|
|
+
|
|
|
|
+ userExams.ForEach(item =>
|
|
|
|
+ {
|
|
|
|
+ item.ExamStatus = Share.Enums.Exams.EExamStatus.Complete;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ userExams.ToUpdate(_sessionContext);
|
|
|
|
+
|
|
|
|
+ await _userExamRepository.UpdateWithValidateAsync(userExams, requestAborted);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private async Task<List<ExamManage>> UpdateExamManageStatus(EntityQueryRequest entityQueryRequest, CancellationToken requestAborted)
|
|
|
|
+ {
|
|
|
|
+ var queryable = _repository.Queryable()
|
|
|
|
+ .WhereIF(entityQueryRequest != null && entityQueryRequest.Ids != null, x => entityQueryRequest.Ids.Contains(x.Id))
|
|
|
|
+ .Where(x => x.EndTime < DateTime.Now);
|
|
|
|
+ var examManages = await queryable.ToListAsync();
|
|
|
|
+
|
|
|
|
+ examManages.ForEach(item =>
|
|
|
|
+ {
|
|
|
|
+ item.ExamStatus = Share.Enums.Exams.EExamStatus.Complete;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ examManages.ToUpdate(_sessionContext);
|
|
|
|
+
|
|
|
|
+ await _repository.UpdateWithValidateAsync(examManages, requestAborted);
|
|
|
|
+
|
|
|
|
+ return examManages;
|
|
|
|
+ }
|
|
#endregion
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
}
|