|
@@ -27,6 +27,7 @@ using XF.Domain.Authentications;
|
|
|
using XF.Domain.Dependency;
|
|
|
using XF.Domain.Exceptions;
|
|
|
using Hotline.Share.Exams.Extensions;
|
|
|
+using NPOI.SS.Formula.Functions;
|
|
|
|
|
|
namespace Hotline.Application.Exam.Service.Trains
|
|
|
{
|
|
@@ -123,10 +124,11 @@ namespace Hotline.Application.Exam.Service.Trains
|
|
|
|
|
|
await AddTrainRecordAnswer(addTrainDto, cancellationToken);
|
|
|
|
|
|
- var trainPracticeOptionsDtos = await GetTrainQuestionOptions(addTrainDto);
|
|
|
+ //var trainPracticeOptionsDtos = await GetTrainQuestionOptions(addTrainDto);
|
|
|
|
|
|
- return trainPracticeOptionsDtos;
|
|
|
+ return null;
|
|
|
}
|
|
|
+
|
|
|
public async Task<TrainPracticeDto> GetTrainPracticeAsync(TrainPracticeRequest trainPracticeRequest)
|
|
|
{
|
|
|
var trainPracticeRepostitory = new TrainPracticeRepository(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
@@ -313,15 +315,20 @@ namespace Hotline.Application.Exam.Service.Trains
|
|
|
|
|
|
private async Task AddTrainRecordAnswer(AddTrainDto addTrainRecordDto, CancellationToken cancellationToken)
|
|
|
{
|
|
|
- if (addTrainRecordDto.AddTrainRecordAnswerDtos == null) return;
|
|
|
+ if (addTrainRecordDto.AddTrainRecordOptionDtos == null && addTrainRecordDto.AddTrainRecordAnswerDto == null) return;
|
|
|
|
|
|
var trainRecordAnswers = new List<TrainRecordAnswer>();
|
|
|
|
|
|
- addTrainRecordDto.AddTrainRecordAnswerDtos.ForEach(item =>
|
|
|
+ addTrainRecordDto.AddTrainRecordOptionDtos?.ForEach(item =>
|
|
|
{
|
|
|
trainRecordAnswers.Add(_mapper.Map<TrainRecordAnswer>(item));
|
|
|
});
|
|
|
|
|
|
+ if (addTrainRecordDto.AddTrainRecordAnswerDto != null)
|
|
|
+ {
|
|
|
+ trainRecordAnswers.Add(_mapper.Map<TrainRecordAnswer>(addTrainRecordDto.AddTrainRecordAnswerDto));
|
|
|
+ }
|
|
|
+
|
|
|
trainRecordAnswers.ToInsert(_sessionContext);
|
|
|
|
|
|
await _trainRecordAnswerRepository.ValidateAddAsync(trainRecordAnswers,cancellationToken);
|
|
@@ -354,14 +361,27 @@ namespace Hotline.Application.Exam.Service.Trains
|
|
|
private async Task<List<SimpleTrainPracticeOptionsDto>> GetTrainQuestionOptions(TrainPracticeRequest trainPracticeRequest)
|
|
|
{
|
|
|
var trainPracticeRepository = new ExamRepository<TrainPracticeOptions>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
+ var trainRecordAnswerRepository = new ExamRepository<TrainRecordAnswer>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
// TODO: 获取未阅卷的第一道题
|
|
|
var trainPracticeOptions = trainPracticeRepository.Queryable().Where(x => x.TrainPracticeId == trainPracticeRequest.TrainPracticeId);
|
|
|
|
|
|
+ var trainRecordOptions = await trainRecordAnswerRepository.Queryable()
|
|
|
+ .InnerJoin<TrainRecord>((t,x)=>t.TrainRecordId == x.Id)
|
|
|
+ .InnerJoin<TrainPlanTemplate>((t,x,p)=> x.TrainPlanId == p.TrainPlanId)
|
|
|
+ .InnerJoin<TrainPractice>((t,x,p,tp)=> x.Id == tp.TrainTemplateId)
|
|
|
+ .Where((t, x, p, tp) => tp.Id == trainPracticeRequest.TrainPracticeId)
|
|
|
+ .Select((t, x, p, tp) => t)
|
|
|
+ .ToListAsync();
|
|
|
+
|
|
|
var trainPracticeOptionsDtos = new List<SimpleTrainPracticeOptionsDto>();
|
|
|
|
|
|
trainPracticeOptions.ForEach(x =>
|
|
|
- {
|
|
|
- trainPracticeOptionsDtos.Add(_mapper.Map<SimpleTrainPracticeOptionsDto>(x));
|
|
|
+ {
|
|
|
+ var trainPracticeOptionsDto = _mapper.Map<SimpleTrainPracticeOptionsDto>(x);
|
|
|
+
|
|
|
+ trainPracticeOptionsDto.IsSelected = trainRecordOptions.Any(m => m.QuestionOptionId == x.QuestionOptionId);
|
|
|
+
|
|
|
+ trainPracticeOptionsDtos.Add(trainPracticeOptionsDto);
|
|
|
});
|
|
|
|
|
|
return trainPracticeOptionsDtos;
|