65 lines
2.4 KiB
C#
65 lines
2.4 KiB
C#
using AutoMapper;
|
|
using EntityFrameworkCore.Triggered;
|
|
using IRaCIS.Core.Domain.Share;
|
|
using MassTransit;
|
|
|
|
namespace IRaCIS.Core.Application.Triggers
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class SubjectStateTrigger : IAfterSaveTrigger<Subject>
|
|
{
|
|
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
|
private readonly IRepository _repository;
|
|
private readonly IMapper _mapper;
|
|
|
|
public SubjectStateTrigger(IRepository<SubjectVisit> subjectVisitRepository, IRepository repository, IMapper mapper)
|
|
{
|
|
_subjectVisitRepository = subjectVisitRepository;
|
|
_repository = repository;
|
|
_mapper = mapper;
|
|
}
|
|
|
|
public async Task AfterSave(ITriggerContext<Subject> context, CancellationToken cancellationToken)
|
|
{
|
|
|
|
if (context.ChangeType == ChangeType.Modified )
|
|
{
|
|
//Site变更
|
|
|
|
if ( context.Entity.SiteId != context.UnmodifiedEntity.SiteId)
|
|
{
|
|
var subjectId = context.Entity.Id;
|
|
var siteId = context.Entity.SiteId;
|
|
|
|
|
|
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.SubjectId == subjectId, u => new SubjectVisit() { SiteId = siteId });
|
|
|
|
await _repository.BatchUpdateAsync<DicomStudy>(t => t.SubjectId == subjectId, u => new DicomStudy() { SiteId = siteId });
|
|
|
|
|
|
#region 废弃
|
|
////如果访视结束了 需要删除计划外未执行的访视
|
|
//if (mapedSubject.Status == SubjectStatus.EndOfVisit)
|
|
//{
|
|
// await _repository.DeleteFromQueryAsync<SubjectVisit>(t => t.VisitExecuted == VisitExecutedEnum.UnExecuted && t.SubjectId == mapedSubject.Id && t.InPlan == false);
|
|
//}
|
|
|
|
////如果是出组了 将受试者未执行的 设置为不可用
|
|
//if (mapedSubject.Status == SubjectStatus.OutOfEnrollment)
|
|
//{
|
|
// await _repository.UpdateFromQueryAsync<SubjectVisit>(t => t.SubjectId == mapedSubject.Id && t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
|
|
//}
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
} |