From bc1e39450d9b87fd888d5bd72be70e211926f116 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 22 Aug 2023 13:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=82=AE=E4=BB=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BF=AE=E6=94=B9--013?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/EmailSendService.cs | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index ee5565e0a..7924ddf0a 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -31,44 +31,54 @@ namespace IRaCIS.Core.Application.Service _emailNoticeConfigRepository = emailNoticeConfigRepository; } - public async Task BaseTrialEmailConfigSendEmail(Guid trialId, CommonDocumentBusinessScenario businessScenario, Guid? trialReadingCriterionId, Guid? subjectId) + + public async Task SendTrialEmail(Guid trialId, CommonDocumentBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? trialReadingCriterionId, Guid? subjectId) { - //找到配置 - - var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true) - .Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync(); + .Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync(); if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false) { return; } + else - { - + { var sendEmailConfig = new SMTPEmailConfig(); + var (topicStr, htmlBodyStr) = topicAndHtmlFunc(trialEmailConfig); + + + sendEmailConfig.TopicDescription = topicStr; + sendEmailConfig.HtmlBodyStr = htmlBodyStr; + + + var blackUserIdList = trialEmailConfig.TrialEmailBlackUserList.Select(t => t.UserId).ToList(); + //收件人 如果是CRC CRA 要按照中心发送 var toUserTypeEnumList = trialEmailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList(); var copyUserTypeEnumList = trialEmailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(c => c.UserType).ToList(); - var allUserTypeEnumList= toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList(); + var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList(); - var allUserList= _repository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.User.EMail, t.User.FullName ,t.User.UserTypeEnum }).ToList(); + var allUserList = await _repository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToListAsync(); - var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)).ToList(); + var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)) + .ToList(); - if(subjectId!=null) + if (subjectId != null) { - toUserList = _repository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum) && t.TrialSite.SubjectList.Any(c=>c.Id==subjectId)).Select(t => new { t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); + toUserList = _repository.Where(t => t.TrialId == trialId && toUserTypeEnumList.Contains(t.User.UserTypeEnum) && t.TrialSite.SubjectList.Any(c => c.Id == subjectId)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); } + //去除黑名单 + toUserList = toUserList.Where(t => !blackUserIdList.Contains(t.UserId)).ToList(); - var copyUserList = allUserList.Where(t => copyUserTypeEnumList.Contains(t.UserTypeEnum)).ToList(); + var copyUserList = allUserList.Where(t => copyUserTypeEnumList.Contains(t.UserTypeEnum)).Where(t => !blackUserIdList.Contains(t.UserId)).ToList(); if (toUserList.Count() == 0) @@ -115,10 +125,11 @@ namespace IRaCIS.Core.Application.Service } } + await SendEmailHelper.SendEmailAsync(sendEmailConfig); } - } + } }