diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index a2ef8eae1..413809011 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -12777,7 +12777,7 @@ 用户提交 发送邮件 通知SPM 或者PM - + 用户提交 发送邮件 通知SPM 或者PM @@ -12787,7 +12787,7 @@ 调研表初审通过,进行复审发送邮件 - + 调研表初审通过,进行复审发送邮件 diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index 0719184d8..be0ffe20f 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -27,7 +27,6 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer; /// 用户提交 发送邮件 通知SPM 或者PM /// public class UserSiteSurveySubmitedEventConsumer( - IRepository _userRepository, IRepository _trialRepository, IRepository _trialSiteRepository, IRepository _trialSiteSurveyRepository, @@ -46,19 +45,19 @@ public class UserSiteSurveySubmitedEventConsumer( var trialId = siteSurveyInfo.TrialId; - var trialUserList = await _trialSiteSurveyRepository.Where(t => t.TrialId == siteSurveyInfo.TrialId ).SelectMany(t=>t.Trial.TrialUserList) - .Where(t=> t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) - .Select(t=>new {t.User.FullName,t.User.EMail,t.User.UserTypeEnum}).ToListAsync(); + var trialUserList = await _trialSiteSurveyRepository.Where(t => t.TrialId == siteSurveyInfo.TrialId).SelectMany(t => t.Trial.TrialUserList) + .Where(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM) + .Select(t => new { t.User.FullName, t.User.EMail, t.User.UserTypeEnum }).ToListAsync(); var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList(); - var pmList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList(); + var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList(); var messageToSend = new MimeMessage(); var toUserName = string.Empty; //有SPM - if (sPMOrCPMList.Count>0) + if (sPMOrCPMList.Count > 0) { foreach (var user in sPMOrCPMList) { @@ -70,12 +69,12 @@ public class UserSiteSurveySubmitedEventConsumer( } else { - foreach (var user in pmList) + foreach (var user in pmAndAPMList) { messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail)); } - toUserName = string.Join('、', pmList.Select(t => t.FullName)); + toUserName = string.Join('、', pmAndAPMList.Select(t => t.FullName)); } var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); @@ -101,6 +100,9 @@ public class UserSiteSurveySubmitedEventConsumer( return (topicStr, htmlBodyStr); }; + var scenario = _trialSiteSurveyRepository.Any(t => t.Id != trialSiteSurveyId && t.TrialId == siteSurveyInfo.TrialId && t.TrialSiteId == siteSurveyInfo.TrialSiteId) ? + EmailBusinessScenario.Approval_UpdateSiteSurvey : EmailBusinessScenario.Approval_SubmitSiteSurvey; + await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.Approval_SubmitSiteSurvey, messageToSend, emailConfigFunc); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); @@ -112,7 +114,6 @@ public class UserSiteSurveySubmitedEventConsumer( /// 调研表初审通过,进行复审发送邮件 /// public class SiteSurveySPMSubmitedEventConsumer( - IRepository _userRepository, IRepository _trialRepository, IRepository _trialSiteRepository, IRepository _trialSiteSurveyRepository, @@ -133,19 +134,24 @@ public class SiteSurveySPMSubmitedEventConsumer( var messageToSend = new MimeMessage(); - var pmAndAPMList = _trialRepository.Where(t => t.Id == trialId).SelectMany(t => t.TrialUserList.Where(t => t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager)) - .Select(t => new { t.User.EMail/*,t.User.FullName,t.User.UserName*/ }).ToList(); + var trialUserList = _trialRepository.Where(t => t.Id == trialId) + .SelectMany(t => t.TrialUserList) + .Where(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM) + .Select(t => new { t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); + var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList(); + var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList(); + + var toUserName = string.Empty; foreach (var item in pmAndAPMList) { - messageToSend.To.Add(new MailboxAddress(String.Empty, item.EMail)); + messageToSend.To.Add(new MailboxAddress(item.FullName, item.EMail)); + + toUserName = string.Join('、', pmAndAPMList.Select(t => t.FullName)); } - var user = await _userRepository.FirstOrDefaultAsync(t => t.Id == siteSurveyInfo.PreliminaryUserId); - var userName = user.FullName; - var email = user.EMail; - var phone = user.Phone; + var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); @@ -159,13 +165,14 @@ public class SiteSurveySPMSubmitedEventConsumer( { var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo); var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), - + toUserName, siteInfo.TrialSiteCode, siteInfo.TrialSiteAliasName, - userName, - email, - phone, - _systemEmailConfig.SiteUrl + + siteSurveyInfo.UserName, + siteSurveyInfo.Email, + siteSurveyInfo.Phone, + _systemEmailConfig.SiteUrl ); return (topicStr, htmlBodyStr); @@ -216,12 +223,12 @@ public class SiteSurverRejectedEventConsumer( name = user.FullName; - messageToSend.To.Add(new MailboxAddress(String.Empty, user.EMail)); + messageToSend.To.Add(new MailboxAddress(name, user.EMail)); } //SPM 驳回到CRC else if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) { - messageToSend.To.Add(new MailboxAddress(String.Empty, siteSurveyInfo.Email)); + messageToSend.To.Add(new MailboxAddress(name, siteSurveyInfo.Email)); } } diff --git a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs index e869eb568..6382ed7ce 100644 --- a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs +++ b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs @@ -35,10 +35,17 @@ public class TrialSiteUserSurvey : BaseFullAuditEntity public TrialSiteUserStateEnum InviteState { get; set; } = TrialSiteUserStateEnum.WaitSent; public bool IsJoin { get; set; } + + /// + /// 中心人员 + /// public bool IsHistoryUser { get; set; } public bool? IsHistoryUserDeleted { get; set; } + /// + /// 中心人员删除了 + /// public bool? IsHistoryUserOriginDeleted { get; set; } }