diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index e17f1ce5c..b881567d1 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -17135,6 +17135,19 @@
+
+
+ 核对中心人员发送邮件
+
+
+
+
+
+ 更新中心人员发送邮件
+
+
+
+
获取该中心最新调表信息 如果没有任何调研表,会返回null
diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs
index d7f695534..5d99c60bb 100644
--- a/IRaCIS.Core.Application/Service/Common/MailService.cs
+++ b/IRaCIS.Core.Application/Service/Common/MailService.cs
@@ -77,6 +77,10 @@ namespace IRaCIS.Core.Application.Service
Task UserFeedBackMail(Guid feedBackId);
Task AfterUserModifyPasswordSendEmailAsync(Guid userId);
+
+ Task SiteSuervyCheckUser(Guid trialId, string email, string name);
+
+ Task SiteSuervyUpdateUser(Guid trialSiteId, string email, string name, string url);
}
[ApiExplorerSettings(GroupName = "Common")]
public class MailVerificationService(IRepository _verificationCodeRepository,
@@ -339,7 +343,7 @@ namespace IRaCIS.Core.Application.Service
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}";
-
+
var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
@@ -919,5 +923,76 @@ namespace IRaCIS.Core.Application.Service
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
}
+ //中心调研核对人员提醒
+ public async Task SiteSuervyCheckUser(Guid trialId, string email, string name)
+ {
+ var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.TrialCode, t.ResearchProgramNo }).FirstOrDefaultAsync();
+
+ var messageToSend = new MimeMessage();
+ //发件地址
+ messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
+ //收件地址
+ messageToSend.To.Add(new MailboxAddress(name, email));
+ //主题
+ //---[来自展影IRC] 关于重置邮箱的提醒
+
+ var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
+
+ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
+ {
+
+ var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo);
+
+ var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
+ name,
+ trialInfo.TrialCode,
+ trialInfo.ResearchProgramNo
+ );
+
+ return (topicStr, htmlBodyStr);
+ };
+
+
+ await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurvey_CheckUser, messageToSend, emailConfigFunc);
+
+ await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
+ }
+
+ public async Task SiteSuervyUpdateUser(Guid trialSiteId, string email, string name, string url)
+ {
+ var trialInfo = await _trialSiteRepository.Where(t => t.Id == trialSiteId).Select(t => new { t.Trial.TrialCode, t.Trial.ResearchProgramNo, t.TrialSiteCode, t.TrialSiteName, t.TrialSiteAliasName }).FirstOrDefaultAsync();
+
+ var messageToSend = new MimeMessage();
+ //发件地址
+ messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail));
+ //收件地址
+ messageToSend.To.Add(new MailboxAddress(name, email));
+ //主题
+ //---[来自展影IRC] 关于重置邮箱的提醒
+
+ var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN;
+
+ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
+ {
+
+ var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo);
+
+ var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
+ name,
+ trialInfo.TrialCode,
+ trialInfo.TrialSiteCode,
+ trialInfo.TrialSiteName,
+ url
+ );
+
+ return (topicStr, htmlBodyStr);
+ };
+
+
+ await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurvey_CheckUser, messageToSend, emailConfigFunc);
+
+ await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
+ }
+
}
}
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs
index 4ecea22d6..24239eb23 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs
@@ -282,6 +282,31 @@ namespace IRaCIS.Core.Application.Contracts
}
+ public class SendCheckSiteSurveyUserCommand
+ {
+ public string Email { get; set; } = string.Empty;
+
+ public string FullName { get; set; }
+
+ [NotDefault]
+ public Guid TrialId { get; set; }
+ }
+
+
+ public class SendUpdateSiteSurveyUserCommand
+ {
+
+ public string Url { get; set; }
+
+ public string Email { get; set; } = string.Empty;
+
+ public string FullName { get; set; }
+
+ [NotDefault]
+ public Guid TrialSiteId { get; set; }
+
+ }
+
public class LoginDto
{
public Guid TrialId { get; set; }
diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
index 805de20d5..3e318a5e3 100644
--- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
+++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs
@@ -297,8 +297,28 @@ namespace IRaCIS.Core.Application.Contracts
}
+ ///
+ /// 核对中心人员发送邮件
+ ///
+ ///
+ public async Task SendCheckSiteSurveyUserEmail(SendCheckSiteSurveyUserCommand inCommand)
+ {
+ await SafeMailHelper.Run(async () => await _mailVerificationService.SiteSuervyCheckUser(inCommand.TrialId, inCommand.Email, inCommand.FullName));
+ return ResponseOutput.Ok();
+ }
+ ///
+ /// 更新中心人员发送邮件
+ ///
+ ///
+ ///
+ public async Task SendUpdateSiteSurveyUserEmail(SendUpdateSiteSurveyUserCommand inCommand)
+ {
+ await SafeMailHelper.Run(async () => await _mailVerificationService.SiteSuervyUpdateUser(inCommand.TrialSiteId, inCommand.Email, inCommand.FullName, inCommand.Url));
+
+ return ResponseOutput.Ok();
+ }
#region 中心调研修改
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
index 0acfd32e1..de2e5be1c 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs
@@ -498,6 +498,8 @@ namespace IRaCIS.Application.Contracts
public Guid? UserTypeId { get; set; }
+ public List UserTypeList { get; set; }
+
public string UserName { get; set; } = string.Empty;
public string OrganizationName { get; set; } = String.Empty;
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
index 25b4ed629..47d6a8612 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs
@@ -81,6 +81,7 @@ namespace IRaCIS.Core.Application.Service
{
var query = _trialIdentityUserRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.WhereIf(inQuery.UserTypeId != null, t => t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == inQuery.UserTypeId))
+ .WhereIf(inQuery.UserTypeList.Count > 0, t => t.TrialUserRoleList.Any(t => inQuery.UserTypeList.Contains(t.UserRole.UserTypeEnum)))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.IdentityUser.UserName.Contains(inQuery.UserName))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
diff --git a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs
index 40acc6c5c..d3fbdffad 100644
--- a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs
+++ b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs
@@ -324,6 +324,10 @@ namespace IRaCIS.Core.Domain.Share
IdentityUser_ModifyPassword=73,
+
+ SiteSurvey_CheckUser = 74,
+
+ SiteSurvey_UpdateUser = 75,
}