using AutoMapper;
using IRaCIS.Core.Domain;
using MassTransit;
namespace IRaCIS.Core.Application.MassTransit.Consumer;
///
/// 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
///
///
///
///
///
public class AddSubjectTriggerConsumer(IRepository _subjectVisitRepository,
IRepository _visitStageRepository,
IRepository _trialRepository,
IMapper _mapper) : IConsumer
{
public async Task Consume(ConsumeContext context)
{
var addSubjectEvent= context.Message;
//添加受试者的时候,获取访视计划列表,添加到受试者访视表。
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == addSubjectEvent.TrialId && t.IsConfirmed).ToListAsync();
var svList = _mapper.Map>(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);
await _subjectVisitRepository.SaveChangesAsync();
}
}