|
@@ -88,7 +88,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
public async Task<ExamQuestionDto> GetExamQuestionDto(ExamQuestionRequest examQuestionRequest)
|
|
public async Task<ExamQuestionDto> GetExamQuestionDto(ExamQuestionRequest examQuestionRequest)
|
|
{
|
|
{
|
|
var expression = examQuestionRequest.GetExpression();
|
|
var expression = examQuestionRequest.GetExpression();
|
|
- var quesetion = await new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression).FirstAsync();
|
|
|
|
|
|
+ var quesetion = await new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression).FirstAsync();
|
|
|
|
|
|
if (quesetion != null)
|
|
if (quesetion != null)
|
|
{
|
|
{
|
|
@@ -96,7 +96,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
|
|
|
if (examQuestionDto.QuestionType.CheckSelectType())
|
|
if (examQuestionDto.QuestionType.CheckSelectType())
|
|
{
|
|
{
|
|
- var questionOptions = await new ExamRepository<TestPaperItemOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.QuestionId == quesetion.Id).ToListAsync();
|
|
|
|
|
|
+ var questionOptions = await new ExamRepository<ExamQuestionOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.ExamQuestionId == quesetion.Id).ToListAsync();
|
|
|
|
|
|
if (questionOptions != null)
|
|
if (questionOptions != null)
|
|
{
|
|
{
|
|
@@ -124,9 +124,9 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
{
|
|
{
|
|
var expression = examQuestionGroupRequest.GetExpression();
|
|
var expression = examQuestionGroupRequest.GetExpression();
|
|
var examManageTable = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression);
|
|
var examManageTable = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression);
|
|
- var testPaperItemTable = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
+ var testPaperItemTable = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
- var queryable = await examManageTable.InnerJoin(testPaperItemTable, (e, i) => e.TestPaperId == i.TestPaperId)
|
|
|
|
|
|
+ var queryable = await examManageTable.InnerJoin(testPaperItemTable, (e, i) => e.Id == i.ExamId)
|
|
.Select((e, i) => i).ToListAsync();
|
|
.Select((e, i) => i).ToListAsync();
|
|
|
|
|
|
var result = queryable.GroupBy(x => x.QuestionType).Select(m => new ExamQuestionViewResponse
|
|
var result = queryable.GroupBy(x => x.QuestionType).Select(m => new ExamQuestionViewResponse
|
|
@@ -147,9 +147,9 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
{
|
|
{
|
|
var expression = examQuestionGroupRequest.GetExpression();
|
|
var expression = examQuestionGroupRequest.GetExpression();
|
|
var examManageTable = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression);
|
|
var examManageTable = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(expression);
|
|
- var testPaperItemTable = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
+ var testPaperItemTable = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
- var queryable = await examManageTable.InnerJoin(testPaperItemTable, (e, i) => e.TestPaperId == i.TestPaperId)
|
|
|
|
|
|
+ var queryable = await examManageTable.InnerJoin(testPaperItemTable, (e, i) => e.Id == i.ExamId)
|
|
.Select((e, i) => i).ToListAsync();
|
|
.Select((e, i) => i).ToListAsync();
|
|
|
|
|
|
var examQuestionScores = await new ExamRepository<ExamQuestionScore>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.ExamManageId == examQuestionGroupRequest.ExamId).ToListAsync();
|
|
var examQuestionScores = await new ExamRepository<ExamQuestionScore>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.ExamManageId == examQuestionGroupRequest.ExamId).ToListAsync();
|
|
@@ -173,7 +173,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
- private bool CheckCorrect(TestPaperItem n, List<ExamQuestionScore> examQuestionScores, List<UserExamItem> userExamItems)
|
|
|
|
|
|
+ private bool CheckCorrect(ExamQuestion n, List<ExamQuestionScore> examQuestionScores, List<UserExamItem> userExamItems)
|
|
{
|
|
{
|
|
var examQuestionScore = examQuestionScores.FirstOrDefault(x => x.QuestionType == n.QuestionType);
|
|
var examQuestionScore = examQuestionScores.FirstOrDefault(x => x.QuestionType == n.QuestionType);
|
|
var userItem = userExamItems.FirstOrDefault(x => x.QuestionId == n.QuestionId);
|
|
var userItem = userExamItems.FirstOrDefault(x => x.QuestionId == n.QuestionId);
|
|
@@ -447,9 +447,9 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
var userExamItemTable = _userExamItemRepository.Queryable();
|
|
var userExamItemTable = _userExamItemRepository.Queryable();
|
|
var userExamItemOptionTable = _userExamItemOptionRepository.Queryable();
|
|
var userExamItemOptionTable = _userExamItemOptionRepository.Queryable();
|
|
var examAnswerTable = new ExamRepository<ExamAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
var examAnswerTable = new ExamRepository<ExamAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
- var questionTable = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
- var quesitonOptionTable = new ExamRepository<TestPaperItemOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
- var testPaperItemAnswerTable = new ExamRepository<TestPaperItemAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
+ var questionTable = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
+ var quesitonOptionTable = new ExamRepository<ExamQuestionOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
+ var testPaperItemAnswerTable = new ExamRepository<ExamQuestionAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
var questionScoreTable = questionScoreRepository.Queryable();
|
|
var questionScoreTable = questionScoreRepository.Queryable();
|
|
|
|
|
|
var queryResult = await userExamTable.InnerJoin(userExamItemTable, (e, i) => e.Id == i.UserExamId)
|
|
var queryResult = await userExamTable.InnerJoin(userExamItemTable, (e, i) => e.Id == i.UserExamId)
|
|
@@ -582,16 +582,16 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
{
|
|
{
|
|
if (!addUserExamItemDto.QuestionType.CheckSelectType()) return;
|
|
if (!addUserExamItemDto.QuestionType.CheckSelectType()) return;
|
|
|
|
|
|
- var testPaperItemOptionsRepository = new ExamRepository<TestPaperItemOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
|
|
+ var testPaperItemOptionsRepository = new ExamRepository<ExamQuestionOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examManageRepository = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examManageRepository = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
- var testPaperItemRepository = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
|
|
+ var testPaperItemRepository = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examQuestionScoreRepository = new ExamRepository<ExamQuestionScore>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examQuestionScoreRepository = new ExamRepository<ExamQuestionScore>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var testPaperOptionsTable = testPaperItemOptionsRepository.Queryable().Where(x => x.QuestionId == addUserExamItemDto.QuestionId && x.IsAnswer);
|
|
var testPaperOptionsTable = testPaperItemOptionsRepository.Queryable().Where(x => x.QuestionId == addUserExamItemDto.QuestionId && x.IsAnswer);
|
|
var testPaperItemTable = testPaperItemRepository.Queryable();
|
|
var testPaperItemTable = testPaperItemRepository.Queryable();
|
|
var userExamTable = _repository.Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId);
|
|
var userExamTable = _repository.Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId);
|
|
var examManageTable = examManageRepository.Queryable();
|
|
var examManageTable = examManageRepository.Queryable();
|
|
- var testPaperOptionIds = await testPaperOptionsTable.InnerJoin(testPaperItemTable, (t, i) => t.TestPaperItemId == i.Id)
|
|
|
|
- .InnerJoin(examManageTable, (t, i, e) => i.TestPaperId == e.TestPaperId)
|
|
|
|
|
|
+ var testPaperOptionIds = await testPaperOptionsTable.InnerJoin(testPaperItemTable, (t, i) => t.ExamQuestionId == i.Id)
|
|
|
|
+ .InnerJoin(examManageTable, (t, i, e) => i.ExamId == e.Id)
|
|
.InnerJoin(userExamTable, (t, i, e, u) => e.Id == u.ExamId)
|
|
.InnerJoin(userExamTable, (t, i, e, u) => e.Id == u.ExamId)
|
|
.Select((t, i, e, u) => t.Id).ToListAsync();
|
|
.Select((t, i, e, u) => t.Id).ToListAsync();
|
|
|
|
|
|
@@ -644,17 +644,17 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
|
|
|
if (userExamItem != null)
|
|
if (userExamItem != null)
|
|
{
|
|
{
|
|
- var testPaperItem = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.Id == userExamItem.Id && !x.QuestionType.CheckSelectType()).First();
|
|
|
|
|
|
+ var testPaperItem = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.Id == userExamItem.Id && !x.QuestionType.CheckSelectType()).First();
|
|
|
|
|
|
if (testPaperItem == null) return null;
|
|
if (testPaperItem == null) return null;
|
|
|
|
|
|
var gradingExamQuestionDto = new GradingExamQuestionDto();
|
|
var gradingExamQuestionDto = new GradingExamQuestionDto();
|
|
|
|
|
|
- gradingExamQuestionDto = _mapper.Map<TestPaperItem, GradingExamQuestionDto>(testPaperItem, gradingExamQuestionDto);
|
|
|
|
|
|
+ gradingExamQuestionDto = _mapper.Map<ExamQuestion, GradingExamQuestionDto>(testPaperItem, gradingExamQuestionDto);
|
|
|
|
|
|
var examAnswer = new ExamRepository<ExamAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.UserExamItemId == userExamItem.Id).First();
|
|
var examAnswer = new ExamRepository<ExamAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.UserExamItemId == userExamItem.Id).First();
|
|
|
|
|
|
- var testPaperItemAnswer = await new ExamRepository<TestPaperItemAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().FirstAsync(x => x.QuestionId == testPaperItem.QuestionId && x.TestPaperItemId == testPaperItem.Id);
|
|
|
|
|
|
+ var testPaperItemAnswer = await new ExamRepository<ExamQuestionAnswer>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable().FirstAsync(x => x.QuestionId == testPaperItem.QuestionId && x.ExamQuestionId == testPaperItem.Id);
|
|
|
|
|
|
gradingExamQuestionDto.Answer = examAnswer.Answer ?? string.Empty;
|
|
gradingExamQuestionDto.Answer = examAnswer.Answer ?? string.Empty;
|
|
|
|
|
|
@@ -691,13 +691,13 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
private async Task<UserExamQuestionDto> GetNextExamQuestion(AddUserExamItemDto addUserExamItemDto)
|
|
private async Task<UserExamQuestionDto> GetNextExamQuestion(AddUserExamItemDto addUserExamItemDto)
|
|
{
|
|
{
|
|
// TODO: 获取未阅卷的第一道题
|
|
// TODO: 获取未阅卷的第一道题
|
|
- var testPaperItemRepository = new ExamRepository<TestPaperItem>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
|
|
+ var testPaperItemRepository = new ExamRepository<ExamQuestion>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examRepository = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var examRepository = new ExamRepository<ExamManage>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider);
|
|
var userExamTable = _repository.Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId);
|
|
var userExamTable = _repository.Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId);
|
|
var userExamItemTable = _userExamItemRepository.Queryable().WhereIF(addUserExamItemDto.QuestionId.IsNotNullOrEmpty(), x => x.QuestionId == addUserExamItemDto.QuestionId);
|
|
var userExamItemTable = _userExamItemRepository.Queryable().WhereIF(addUserExamItemDto.QuestionId.IsNotNullOrEmpty(), x => x.QuestionId == addUserExamItemDto.QuestionId);
|
|
var examTable = examRepository.Queryable();
|
|
var examTable = examRepository.Queryable();
|
|
var testPaperItemTable = testPaperItemRepository.Queryable();
|
|
var testPaperItemTable = testPaperItemRepository.Queryable();
|
|
- var current = examTable.InnerJoin(testPaperItemTable, (e, t) => e.TestPaperId == t.TestPaperId)
|
|
|
|
|
|
+ var current = examTable.InnerJoin(testPaperItemTable, (e, t) => e.Id == t.ExamId)
|
|
.InnerJoin(userExamTable, (e, t, u) => e.Id == u.ExamId)
|
|
.InnerJoin(userExamTable, (e, t, u) => e.Id == u.ExamId)
|
|
.InnerJoin(userExamItemTable, (e, t, u, i) => t.QuestionId == i.QuestionId).Select((e, t, u, i) => t);
|
|
.InnerJoin(userExamItemTable, (e, t, u, i) => t.QuestionId == i.QuestionId).Select((e, t, u, i) => t);
|
|
var nextTable = testPaperItemTable.InnerJoin(current, (t, c) => t.SortIndex > c.SortIndex).OrderBy((t, c) => t.SortIndex).Select((t, c) => t);
|
|
var nextTable = testPaperItemTable.InnerJoin(current, (t, c) => t.SortIndex > c.SortIndex).OrderBy((t, c) => t.SortIndex).Select((t, c) => t);
|
|
@@ -712,12 +712,12 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
|
|
|
var userExamQuestionDto = new UserExamQuestionDto();
|
|
var userExamQuestionDto = new UserExamQuestionDto();
|
|
|
|
|
|
- userExamQuestionDto = _mapper.Map<TestPaperItem, UserExamQuestionDto>(question, userExamQuestionDto);
|
|
|
|
|
|
+ userExamQuestionDto = _mapper.Map<ExamQuestion, UserExamQuestionDto>(question, userExamQuestionDto);
|
|
|
|
|
|
if (question.QuestionType.CheckSelectType())
|
|
if (question.QuestionType.CheckSelectType())
|
|
{
|
|
{
|
|
var userExamItemOptionTable = _userExamItemOptionRepository.Queryable().Where(x => x.UserExamItemId == userExamItem.Id);
|
|
var userExamItemOptionTable = _userExamItemOptionRepository.Queryable().Where(x => x.UserExamItemId == userExamItem.Id);
|
|
- var quesitonOptionTable = new ExamRepository<TestPaperItemOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
+ var quesitonOptionTable = new ExamRepository<ExamQuestionOptions>(_repository.UOW, _dataPermissionFilterBuilder, _serviceProvider).Queryable();
|
|
|
|
|
|
var queryResult = userExamItemOptionTable.InnerJoin(quesitonOptionTable, (u, q) => u.QuestionOptionId == q.Id)
|
|
var queryResult = userExamItemOptionTable.InnerJoin(quesitonOptionTable, (u, q) => u.QuestionOptionId == q.Id)
|
|
.Select((u, q) => new UserExamItemOptionDto
|
|
.Select((u, q) => new UserExamItemOptionDto
|