39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
|
|
|
|
using AutoMapper;
|
|
using IRaCIS.Core.Domain;
|
|
using MassTransit;
|
|
|
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
|
|
|
public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
IRepository<VisitStage> _visitStageRepository,
|
|
IRepository<Trial> _trialRepository,
|
|
IMapper _mapper) : IConsumer<AddSubjectTriggerCommand>
|
|
{
|
|
public async Task Consume(ConsumeContext<AddSubjectTriggerCommand> context)
|
|
{
|
|
var addSubjectEvent= context.Message;
|
|
|
|
//添加受试者的时候,获取访视计划列表,添加到受试者访视表。
|
|
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == addSubjectEvent.TrialId && t.IsConfirmed).ToListAsync();
|
|
|
|
var svList = _mapper.Map<List<SubjectVisit>>(visitPlanList);
|
|
|
|
var IsEnrollementQualificationConfirm = await _trialRepository.Where(t => t.Id == addSubjectEvent.TrialId).Select(u => u.IsEnrollementQualificationConfirm).FirstOrDefaultAsync();
|
|
|
|
svList.ForEach(t =>
|
|
{
|
|
t.SubjectId = addSubjectEvent.SubjectId;
|
|
t.TrialId = addSubjectEvent.TrialId;
|
|
t.TrialSiteId = addSubjectEvent.TrialSiteId;
|
|
t.IsEnrollmentConfirm = t.IsBaseLine ? IsEnrollementQualificationConfirm : false;
|
|
t.Id = NewId.NextGuid();
|
|
|
|
});
|
|
|
|
await _subjectVisitRepository.AddRangeAsync(svList);
|
|
}
|
|
}
|