diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs index c175b10d1..b0485c8a1 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs @@ -54,19 +54,11 @@ public static class CommonEmailHelper return configInfo; } - public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(IRepository _trialEmailNoticeConfigrepository, EmailBusinessScenario scenario, MimeMessage messageToSend, + public static async Task GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(TrialEmailNoticeConfig configInfo, EmailBusinessScenario scenario, MimeMessage messageToSend, Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - var configInfo = await _trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefaultAsync(); - - if (configInfo == null) - { - //"系统未找到当前场景邮件配置信息,请联系运维人员核查" - throw new BusinessValidationFailedException(I18n.T("CommonEmail_NotFoundConfig")); - } - var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs index a8879acd5..8b35c20bb 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ReadingRelationEmailConsumer.cs @@ -48,19 +48,25 @@ public class UrgentMedicalReviewAddedEventConsumer( var medicalReviewId = context.Message.MedicalReviewId; + var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); + + + if (medicalReview.MedicalManagerUserId == null) + { + Console.WriteLine("MIMId为空 ID" + medicalReviewId); + return; + } + + var trialId = medicalReview.TrialId; + var scenario = context.Message.IsPD ? EmailBusinessScenario.PDVerification_MedicalQC : EmailBusinessScenario.EligibilityVerification_MedicalQC; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); - - if (medicalReview.MedicalManagerUserId == null) - { - Console.WriteLine("MIMId为空 ID" + medicalReviewId); - return; - } var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var userinfo = await _userRoleRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync(); @@ -120,7 +126,7 @@ public class UrgentMedicalReviewAddedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); @@ -150,23 +156,26 @@ public class UrgentIRRepliedMedicalReviewConsumer( Console.WriteLine("发送(028,029) 【IR 回复医学反馈通知MIM】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var medicalReviewId = context.Message.MedicalReviewId; + + var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); + + if (medicalReview.MedicalManagerUserId == null) + { + Console.WriteLine("MIMId为空 ID" + medicalReviewId); + return; + } + var trialId = medicalReview.TrialId; + var scenario = context.Message.IsPD ? EmailBusinessScenario.PDVerification_ExpeditedMedicalQCResponse : EmailBusinessScenario.EligibilityVerification_ExpeditedMedicalQCResponse; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var medicalReviewId = context.Message.MedicalReviewId; - - var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); - - - - if (medicalReview.MedicalManagerUserId == null) - { - Console.WriteLine("MIMId为空 ID" + medicalReviewId); - return; - } + var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var userinfo = await _userRoleRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync(); @@ -225,7 +234,7 @@ public class UrgentIRRepliedMedicalReviewConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -260,23 +269,27 @@ public class UrgentMIMRepliedMedicalReviewConsumer( Console.WriteLine("发送(022) 【加急医学反馈】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + var medicalReviewId = context.Message.MedicalReviewId; + + var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); + + if (medicalReview.MedicalManagerUserId == null) + { + Console.WriteLine("MIMId为空 ID" + medicalReviewId); + return; + } + + var trialId = medicalReview.TrialId; + var scenario = EmailBusinessScenario.ExpeditedMedicalQCToIR; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var medicalReviewId = context.Message.MedicalReviewId; - - var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == medicalReviewId).Include(x => x.VisitTask).Include(x => x.MedicalManagerUser).FirstOrDefaultAsync(); - - - - if (medicalReview.MedicalManagerUserId == null) - { - Console.WriteLine("MIMId为空 ID" + medicalReviewId); - return; - } var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); @@ -339,7 +352,7 @@ public class UrgentMIMRepliedMedicalReviewConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -368,14 +381,20 @@ public class UrgentIRApplyedReReadingConsumer( Console.WriteLine("发送(024,025) 【加急医学反馈】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var visitTaskId = context.Message.VisitTaskId; + + var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId=taskInfo.TrialId; + var scenario = context.Message.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed ? EmailBusinessScenario.ReReadFromPMApproval : EmailBusinessScenario.ReReadFromIRApproval; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var visitTaskId = context.Message.VisitTaskId; - - var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == taskInfo.TrialReadingCriterionId); @@ -442,7 +461,7 @@ public class UrgentIRApplyedReReadingConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index 208357d6c..4b32e7af0 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -51,7 +51,9 @@ public class UserSiteSurveySubmitedEventConsumer( EmailBusinessScenario.Approval_UpdateSiteSurvey : EmailBusinessScenario.Approval_SubmitSiteSurvey; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { var trialUserList = await _trialUserRoleRepository.Where(t => t.TrialId == siteSurveyInfo.TrialId) @@ -118,7 +120,7 @@ public class UserSiteSurveySubmitedEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -151,7 +153,9 @@ public class SiteSurveySPMSubmitedEventConsumer( var scenario = EmailBusinessScenario.Approval_SubmitSiteSurvey; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { var messageToSend = new MimeMessage(); @@ -199,13 +203,13 @@ public class SiteSurveySPMSubmitedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } - + } } @@ -230,13 +234,17 @@ public class SiteSurverRejectedEventConsumer( var trialSiteSurveyId = context.Message.TrialSiteSurveyId; + var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault().IfNullThrowException(); + + var trialId = siteSurveyInfo.TrialId; + var scenario = EmailBusinessScenario.SiteSurveyReject; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) - { - var siteSurveyInfo = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault().IfNullThrowException(); + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); - var trialId = siteSurveyInfo.TrialId; + if (trialEmailConfig != null) + { + var messageToSend = new MimeMessage(); @@ -308,12 +316,12 @@ public class SiteSurverRejectedEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } - + } diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs index ebad9287b..2c39daba9 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs @@ -39,16 +39,19 @@ public class CRCSubmitedAndQCToAuditEventConsumer( Console.WriteLine("发送(005,006) 【加急项目所有IQC待领取质控任务】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_PendingImageQCClaim : EmailBusinessScenario.EligibilityVerification_PendingClaim; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - - var subjectVisitId = context.Message.SubjectVisitId; - - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstOrDefaultAsync(); - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.IQC).ToList(); @@ -117,7 +120,7 @@ public class CRCSubmitedAndQCToAuditEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -147,26 +150,25 @@ public class CRCRepliedQCChallengeEventConsumer( Console.WriteLine("发送(Code012,013) 【CRC 回复质控质疑 通知QC】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_UnderQCQuery : EmailBusinessScenario.EligibilityVerification_Pending; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var subjectVisitId = context.Message.SubjectVisitId; - - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); - - var qCChallengeDialog = await _qCChallengeDialogRepository.Where(x => x.Id == context.Message.QCChallengeDialogId).Include(x => x.QCChallenge).FirstNotNullAsync(); - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); - - - var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.IQC).ToList(); var pmandAPm = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); @@ -217,7 +219,7 @@ public class CRCRepliedQCChallengeEventConsumer( return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -245,9 +247,17 @@ public class QCRepliedQCChallengeEventConsumer( Console.WriteLine("发送(014,015) 【 QC回复 质控质疑,通知CRC】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_ImageQuery : EmailBusinessScenario.EligibilityVerification_ImageQuery; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { @@ -266,9 +276,7 @@ public class QCRepliedQCChallengeEventConsumer( isclose = qCChallenge.IsClosed; } - var subjectVisitId = context.Message.SubjectVisitId; - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); @@ -329,7 +337,7 @@ public class QCRepliedQCChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -359,16 +367,22 @@ public class CRCRepliedCheckChallengeEventConsumer( Console.WriteLine("发送(019,020) 【 CRC 回复一致性核查质疑 通知PM】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_UnderDRForPMOrAPM : EmailBusinessScenario.EligibilityVerification_UnderDRForPMOrAPM; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var subjectVisitId = context.Message.SubjectVisitId; - - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); @@ -423,7 +437,7 @@ public class CRCRepliedCheckChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -455,15 +469,22 @@ public class PMRepliedCheckChallengeEventConsumer( Console.WriteLine("发送(016,017) 【 PM 一致性核查 通知CRC】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_UnderDR : EmailBusinessScenario.EligibilityVerification_UnderDR; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { var checkChallengeDialog = await _checkChallengeDialogRepository.Where(x => x.Id == context.Message.CheckChallengeDialogId).FirstNotNullAsync(); - var subjectVisitId = context.Message.SubjectVisitId; - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).FirstNotNullAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); @@ -526,7 +547,7 @@ public class PMRepliedCheckChallengeEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -555,15 +576,21 @@ public class CheckStateChangedToAuditEventConsumer( Console.WriteLine("发送(018,030) 【通知PM 进行一致性核查】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_DR : EmailBusinessScenario.EligibilityVerification_DR; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var subjectVisitId = context.Message.SubjectVisitId; - - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); @@ -619,7 +646,7 @@ public class CheckStateChangedToAuditEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -647,29 +674,28 @@ public class QCClaimTaskEventConsumer( Console.WriteLine("发送(Code007,008) 【QC 领取了质控任务】邮件!!!"); var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + + var subjectVisitId = context.Message.SubjectVisitId; + + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); + + var trialId = subjectVisit.TrialId; + var scenario = context.Message.IsPd ? EmailBusinessScenario.PDVerification_PendingImageQC : EmailBusinessScenario.EligibilityVerification_PendingImageQC; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { - var subjectVisitId = context.Message.SubjectVisitId; - - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).Include(x => x.CurrentActionUser).FirstNotNullAsync(); - - var subjectVisitList = await _subjectVisitRepository.Where(x => x.CurrentActionUserId == context.Message.CurrentActionUserId && x.TrialId == subjectVisit.TrialId).Include(x => x.Subject).ToListAsync(); - - - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); - - - var pmandAPm = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); @@ -729,7 +755,7 @@ public class QCClaimTaskEventConsumer( }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs index 29c031307..d0f6d758e 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/IRRecurringConsumer.cs @@ -39,7 +39,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var trialId = context.Message.TrialId; var scenario = EmailBusinessScenario.ExpeditedReading; - if (_trialEmailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).Any()) + var trialEmailConfig = _trialEmailNoticeConfigrepository.Where(t => t.TrialId == trialId && t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); + + if (trialEmailConfig != null) { @@ -157,7 +159,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(_trialEmailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc); + await CommonEmailHelper.GetTrialEmailSubejctAndHtmlInfoAndBuildAsync(trialEmailConfig, scenario, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);