Suject 状态修改触发逻辑

This commit is contained in:
2022-04-25 16:14:21 +08:00
parent 227dec2c94
commit 925d224097
2 changed files with 33 additions and 38 deletions
@@ -167,44 +167,7 @@ namespace IRaCIS.Application.Services
public async Task<IResponseOutput> UpdateSubjectStatus(SubjectStatusChangeCommand subjectStatusChangeCommand)
{
var dbBeforeSubject = await _subjectRepository.UpdateFromDTOAsync(subjectStatusChangeCommand, true);
//如果是出组了
if (subjectStatusChangeCommand.Status == SubjectStatus.OutOfVisit)
{
if (subjectStatusChangeCommand.FinalSubjectVisitId != null)
{
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectStatusChangeCommand.SubjectId && t.IsFinalVisit && t.Id != subjectStatusChangeCommand.FinalSubjectVisitId))
{
throw new BusinessValidationFailedException(
"该受试者已经有访视设置为末次访视,不允许将该访视设置为末次访视");
}
var sv = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectStatusChangeCommand.FinalSubjectVisitId).IfNullThrowException();
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectStatusChangeCommand.SubjectId && t.VisitNum > sv.VisitNum && t.SubmitState == SubmitStateEnum.ToSubmit))
{
throw new BusinessValidationFailedException(
"该受试者此访视后有影像上传,该访视不允许设置为末次访视");
}
sv.IsFinalVisit = true;
//末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == subjectStatusChangeCommand.SubjectId && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
}
//将受试者未执行的 设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == dbBeforeSubject.Id && t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
}
await _repository.SaveChangesAsync();
await _subjectRepository.UpdateFromDTOAsync(subjectStatusChangeCommand, true);
return ResponseOutput.Ok();