diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index eaa991375..83d8e0eed 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -269,9 +269,45 @@ public class SiteSurverRejectedEventConsumer( if (context.Message.IsHaveSPMOrCPM) { - //PM 驳回到SPM - if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted) + ////PM 驳回到SPM + //if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted) + //{ + + // var sPMOrCPMList = _trialUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialUser.IsDeleted == false) + // .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) + // .Select(t => new { t.UserRole.IdentityUser.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum, t.UserRole.IdentityUser.UserWorkLanguage }).ToList(); + + // var lan_SPMOrCPMList = sPMOrCPMList.Where(t => t.UserWorkLanguage == workLanguage); + + // foreach (var user in lan_SPMOrCPMList) + // { + // messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail)); + // } + + // toUserName = string.Join('、', lan_SPMOrCPMList.Select(t => t.FullName)); + + //} + ////SPM 驳回到CRC + //else if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) + //{ + // //使用中心国家语言 一致才发送 + // if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) + // { + // messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); + + // } + + //} + + // PM 驳回到CRC + if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) { + //使用中心国家语言 一致才发送 + if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) + { + messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); + + } var sPMOrCPMList = _trialUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialUser.IsDeleted == false) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) @@ -281,24 +317,10 @@ public class SiteSurverRejectedEventConsumer( foreach (var user in lan_SPMOrCPMList) { - messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail)); - } - - toUserName = string.Join('、', lan_SPMOrCPMList.Select(t => t.FullName)); - - } - //SPM 驳回到CRC - else if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) - { - //使用中心国家语言 一致才发送 - if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) - { - messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); - + messageToSend.Cc.Add(new MailboxAddress(user.FullName, user.EMail)); } } - } else { @@ -312,6 +334,11 @@ public class SiteSurverRejectedEventConsumer( } } + Uri uri = new Uri(_systemEmailConfig.SiteUrl); + + // 获取 Scheme + Host(不包含路径) + string baseUrl = uri.GetLeftPart(UriPartial.Authority); + //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -330,7 +357,7 @@ public class SiteSurverRejectedEventConsumer( siteInfo.TrialSiteCode, //中心编号 siteInfo.TrialSiteAliasName,//中心名称 siteSurveyInfo.LatestBackReason, //驳回原因 - _systemEmailConfig.SiteUrl, //链接 + $"{baseUrl}/researchLogin?trialId={trialId}", //链接 (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit ? "inline - block" : "none") ); diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 71ab0c591..27aff3c18 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -496,40 +496,47 @@ namespace IRaCIS.Core.Application.Contracts } else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) { - var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey); + // var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey); - var hasSPMOrCPM = await _trialRepository.Where(t => t.Id == trialSiteSubmitBackCommand.TrialId).AnyAsync(t => t.TrialIdentityUserList.SelectMany(t => t.TrialUserRoleList).Any(t => - t.UserRole.IdentityUser.Status == UserStateEnum.Enable - && t.UserRole.IsUserRoleDisabled == false - && (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM)) - ); + // var hasSPMOrCPM = await _trialRepository.Where(t => t.Id == trialSiteSubmitBackCommand.TrialId).AnyAsync(t => t.TrialIdentityUserList.SelectMany(t => t.TrialUserRoleList).Any(t => + //t.UserRole.IdentityUser.Status == UserStateEnum.Enable + //&& t.UserRole.IsUserRoleDisabled == false + //&& (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM)) + //); - var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM; + // var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM; - if (isSPMjoin) - { - survey.State = TrialSiteSurveyEnum.CRCSubmitted; + // if (isSPMjoin) + // { + // survey.State = TrialSiteSurveyEnum.CRCSubmitted; - survey.ReviewerUserId = null; - survey.ReviewerTime = null; - } - else - { - survey.State = TrialSiteSurveyEnum.ToSubmit; + // survey.ReviewerUserId = null; + // survey.ReviewerTime = null; + // } + // else + // { + // survey.State = TrialSiteSurveyEnum.ToSubmit; - survey.PreliminaryUserId = null; - survey.ReviewerUserId = null; - survey.PreliminaryTime = null; - survey.ReviewerTime = null; + // survey.PreliminaryUserId = null; + // survey.ReviewerUserId = null; + // survey.PreliminaryTime = null; + // survey.ReviewerTime = null; - } + // } + + survey.State = TrialSiteSurveyEnum.ToSubmit; + + survey.PreliminaryUserId = null; + survey.ReviewerUserId = null; + survey.PreliminaryTime = null; + survey.ReviewerTime = null; + - } var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name =$"{_userInfo.FullName} ({_userInfo.UserName})" , UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); await _trialSiteSurveyRepository.SaveChangesAsync(); @@ -924,7 +931,7 @@ namespace IRaCIS.Core.Application.Contracts var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); } else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) @@ -942,7 +949,7 @@ namespace IRaCIS.Core.Application.Contracts //审批调研表日志 var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); }