diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index a81a1ad7..5878e886 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -131,12 +131,33 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task ChangeCalculationAnswer(ChangeCalculationAnswerInDto inDto) { + var visitTask = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync(); + + var questionAnswerList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ToListAsync(); + + foreach (var item in inDto.QuestionAnswer) { - await _readingTaskQuestionAnswerRepository.UpdatePartialFromQueryAsync(x=>x.VisitTaskId==inDto.VisitTaskId&&x.ReadingQuestionTrialId==item.QuestionId, x => new ReadingTaskQuestionAnswer() + if (questionAnswerList.Any(x => x.ReadingQuestionTrialId == item.QuestionId)) { - Answer = item.Answer, - }); + await _readingTaskQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.VisitTaskId == inDto.VisitTaskId && x.ReadingQuestionTrialId == item.QuestionId, x => new ReadingTaskQuestionAnswer() + { + Answer = item.Answer, + }); + } + else + { + await _readingTaskQuestionAnswerRepository.AddAsync(new ReadingTaskQuestionAnswer() { + Answer=item.Answer, + ReadingQuestionCriterionTrialId= visitTask.TrialReadingCriterionId, + ReadingQuestionTrialId= item.QuestionId, + SubjectId= visitTask.SubjectId, + VisitTaskId=inDto.VisitTaskId, + TrialId= visitTask.TrialId + }); + } + + } foreach (var item in inDto.TableQuestionAnswer)