diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs index af3e85843..f628bb5ea 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/CommonEmailHelper.cs @@ -97,7 +97,15 @@ Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr return configInfo; } + public static string ReplacePlatformName(SystemEmailSendConfig _systemEmailConfig, string needDealtxt, UserWorkLanguage? userWorkLanguage = null) + { + var isEn_US = userWorkLanguage.HasValue ? userWorkLanguage.Value == UserWorkLanguage.US : CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + var platformName = isEn_US ? _systemEmailConfig.PlatformName : _systemEmailConfig.PlatformNameCN; + + var str = needDealtxt.Replace("{platformName}", platformName); + return str; + } public static string ReplaceCompanyName(SystemEmailSendConfig _systemEmailConfig, string needDealtxt, UserWorkLanguage? userWorkLanguage = null) diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs index 9517f3fae..900e308af 100644 --- a/IRaCIS.Core.Application/Service/Common/MailService.cs +++ b/IRaCIS.Core.Application/Service/Common/MailService.cs @@ -1,6 +1,8 @@ -using IRaCIS.Application.Contracts; +using DocumentFormat.OpenXml.Spreadsheet; +using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Auth; using IRaCIS.Core.Application.Helper; +using IRaCIS.Core.Application.MassTransit.Consumer; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; @@ -192,24 +194,16 @@ namespace IRaCIS.Core.Application.Service return sucessHandle; } - private string ReplaceCompanyName(string needDealtxt) - { - var str = needDealtxt.Replace("{company}", _userInfo.IsEn_Us ? _systemEmailConfig.CompanyName : _systemEmailConfig.CompanyNameCN) - .Replace("{company abbreviation}", _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN); - return str; - } - private string ReplacePlatformName(string needDealtxt) - { - var platformName = _userInfo.IsEn_Us ? _systemEmailConfig.PlatformName : _systemEmailConfig.PlatformNameCN; - - var str = needDealtxt.Replace("{platformName}", platformName); - return str; - } //MFA public async Task SenMFAVerifyEmail(Guid userId, string userName, string emailAddress, int verificationCode, UserMFAType mfaType = UserMFAType.Login) { + + //设置工作语言 + var workLanguage = _identityUserRepository.Where(t => t.Id == userId).Select(t => t.UserWorkLanguage).First(); + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -217,13 +211,13 @@ namespace IRaCIS.Core.Application.Service messageToSend.To.Add(new MailboxAddress(userName, emailAddress)); //主题---[来自{0}] 关于MFA邮箱验证的提醒 - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userName, verificationCode ); @@ -232,7 +226,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(mfaType == UserMFAType.Login ? EmailBusinessScenario.MFALogin : EmailBusinessScenario.MFAUnlock, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(mfaType == UserMFAType.Login ? EmailBusinessScenario.MFALogin : EmailBusinessScenario.MFAUnlock, messageToSend, emailConfigFunc, workLanguage); var sucessHandle = GetEmailSuccessHandle(userId, verificationCode, emailAddress); @@ -255,6 +249,11 @@ namespace IRaCIS.Core.Application.Service public async Task SendEmailVerification(string emailAddress, int verificationCode) { + //设置工作语言 + var isEn_US = _userInfo.IsEn_Us; + var workLanguage = _userInfo.IsEn_Us ? UserWorkLanguage.US : UserWorkLanguage.CN; + + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -263,13 +262,13 @@ namespace IRaCIS.Core.Application.Service //主题 //---[来自展影IRC]的提醒 - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), "Sir/Madam", //---您正在参与展影医疗IRC项目 @@ -281,7 +280,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.ReviewerLogin, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.ReviewerLogin, messageToSend, emailConfigFunc, workLanguage); //此时不知道用户 var sucessHandle = GetEmailSuccessHandle(Guid.Empty, verificationCode, emailAddress); @@ -296,8 +295,10 @@ namespace IRaCIS.Core.Application.Service //中心调研 登陆 发送验证码 public async Task AnolymousSendEmail(Guid trialId, string emailAddress, int verificationCode) { - //throw new BusinessValidationFailedException("模拟邮件取数据或者发送异常!!!"); + //设置工作语言 + var isEn_US = _userInfo.IsEn_Us; + var workLanguage = _userInfo.IsEn_Us ? UserWorkLanguage.US : UserWorkLanguage.CN; var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); @@ -309,13 +310,13 @@ namespace IRaCIS.Core.Application.Service //主题 //$"[来自展影IRC] [{researchProgramNo}] 关于中心调研的提醒"; - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = 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), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), "Sir/Madam", //---您正在参与展影医疗IRC项目中心调研工作 @@ -327,7 +328,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurveyLogin, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SiteSurveyLogin, messageToSend, emailConfigFunc, workLanguage); //此时不知道用户 var sucessHandle = GetEmailSuccessHandle(Guid.Empty, verificationCode, emailAddress); @@ -345,6 +346,9 @@ namespace IRaCIS.Core.Application.Service var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).Include(t => t.UserRoleList).ThenInclude(c => c.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; var messageToSend = new MimeMessage(); //发件地址 @@ -365,13 +369,13 @@ namespace IRaCIS.Core.Application.Service var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}"; - var companyName = sysUserInfo.UserWorkLanguage == UserWorkLanguage.US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName, sysUserInfo.EMail, @@ -394,6 +398,11 @@ namespace IRaCIS.Core.Application.Service { var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).Include(t => t.UserRoleList).ThenInclude(c => c.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); + + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -402,13 +411,13 @@ namespace IRaCIS.Core.Application.Service //主题 //---[来自展影IRC] 关于重置账户密码的提醒 - var companyName = sysUserInfo.UserWorkLanguage == UserWorkLanguage.US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName, sysUserInfo.UserName, @@ -430,6 +439,10 @@ namespace IRaCIS.Core.Application.Service //用户重置邮箱 public async Task SendMailEditEmail(Guid userId, string userName, string emailAddress, int verificationCode) { + //设置工作语言 + var workLanguage = _identityUserRepository.Where(t => t.Id == userId).Select(t => t.UserWorkLanguage).First(); + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 @@ -439,13 +452,13 @@ namespace IRaCIS.Core.Application.Service //主题 //---[来自展影IRC] 关于重置邮箱的提醒 - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userName, //---您正在进行邮箱重置操作 @@ -456,7 +469,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.UserResetEmail, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.UserResetEmail, messageToSend, emailConfigFunc, workLanguage); var sucessHandle = GetEmailSuccessHandle(userId, verificationCode, emailAddress); @@ -469,6 +482,11 @@ namespace IRaCIS.Core.Application.Service //不登录 通过邮箱重置密码 public async Task AnolymousSendEmailForResetAccount(string emailAddress, int verificationCode) { + + //设置工作语言 + var isEn_US = _userInfo.IsEn_Us; + var workLanguage = _userInfo.IsEn_Us ? UserWorkLanguage.US : UserWorkLanguage.CN; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -476,13 +494,13 @@ namespace IRaCIS.Core.Application.Service messageToSend.To.Add(new MailboxAddress(String.Empty, emailAddress)); - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), "Sir/Madam", //---您正在进行邮箱重置密码操作 @@ -493,7 +511,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.UnloginUseEmailResetPassword, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.UnloginUseEmailResetPassword, messageToSend, emailConfigFunc, workLanguage); ////此时不知道用户 var sucessHandle = GetEmailSuccessHandle(Guid.Empty, verificationCode, emailAddress); @@ -509,6 +527,11 @@ namespace IRaCIS.Core.Application.Service var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException(); + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; + + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -527,18 +550,18 @@ namespace IRaCIS.Core.Application.Service var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login")); - var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token; + var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (isEn_US ? "en" : "zh") + "&access_token=" + token; var redirectUrl = $"{domain}/api/User/UserRedirect?url={System.Web.HttpUtility.UrlEncode(routeUrl)}"; - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = 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), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName, trialInfo.ExperimentName, @@ -553,9 +576,9 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.SiteUseOrExternalUserFirstrJoinTrial : EmailBusinessScenario.SiteUserOrExternalUserExistJoinTrial, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.SiteUseOrExternalUserFirstrJoinTrial : EmailBusinessScenario.SiteUserOrExternalUserExistJoinTrial, messageToSend, emailConfigFunc, workLanguage); - await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo, null); + await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo); } @@ -564,10 +587,12 @@ namespace IRaCIS.Core.Application.Service { var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException(); - - var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -584,20 +609,20 @@ namespace IRaCIS.Core.Application.Service await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new Domain.Models.IdentityUser() { EmailToken = token }); } - var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token; + var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&lang=" + (isEn_US ? "en" : "zh") + "&access_token=" + token; 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; + var companyName = 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), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName, trialInfo.ExperimentName, @@ -612,7 +637,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.SiteUseOrExternalUserFirstrJoinTrial : EmailBusinessScenario.SiteUserOrExternalUserExistJoinTrial, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.SiteUseOrExternalUserFirstrJoinTrial : EmailBusinessScenario.SiteUserOrExternalUserExistJoinTrial, messageToSend, emailConfigFunc, workLanguage); await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo); @@ -701,6 +726,11 @@ namespace IRaCIS.Core.Application.Service var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); + + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -726,13 +756,13 @@ namespace IRaCIS.Core.Application.Service // $"[来自展影IRC] [{trialInfo.ResearchProgramNo}]邀请信"; - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = 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), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName, trialInfo.ExperimentName, @@ -747,7 +777,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.DoctorUserFirstJoinTrial : EmailBusinessScenario.DoctorUserExistJoinTrial, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(sysUserInfo.IsFirstAdd ? EmailBusinessScenario.DoctorUserFirstJoinTrial : EmailBusinessScenario.DoctorUserExistJoinTrial, messageToSend, emailConfigFunc,workLanguage); await SendEmailHelper.SendEmailAsync(messageToSend, trialInfo, null); @@ -769,6 +799,10 @@ namespace IRaCIS.Core.Application.Service { var feedBack = await _userFeedBackRepository.Where(t => t.Id == feedBackId).Include(t => t.CreateUserRole.UserTypeRole).Include(t => t.CreateUserRole.IdentityUser).FirstNotNullAsync(); + //设置工作语言 + var workLanguage = _identityUserRepository.Where(t => t.Id == _userInfo.IdentityUserId).Select(t => t.UserWorkLanguage).First(); + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -777,7 +811,7 @@ namespace IRaCIS.Core.Application.Service var trialinfo = await _trialRepository.Where(x => x.Id == feedBack.TrialId).FirstOrDefaultAsync(); - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; var emialScenario = feedBack.VisitTaskId != null ? EmailBusinessScenario.IRImageError : (feedBack.SubjectVisitId != null ? EmailBusinessScenario.TrialSubjectVisitFeedBack : (feedBack.TrialId != null ? EmailBusinessScenario.TrialFeedBack : EmailBusinessScenario.SysFeedBack)); @@ -809,7 +843,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(input.topicStr, info.ResearchProgramNo, info.SubejctCode, info.VisitName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userNames, info.TrialCode, info.SubejctCode, @@ -825,7 +859,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.IRImageError, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.IRImageError, messageToSend, emailConfigFunc, workLanguage); } else if (feedBack.SubjectVisitId != null) @@ -839,7 +873,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(input.topicStr, info.ResearchProgramNo, info.SubejctCode, info.VisitName); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userNames, info.TrialCode, info.SubejctCode, @@ -855,7 +889,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.TrialSubjectVisitFeedBack, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.TrialSubjectVisitFeedBack, messageToSend, emailConfigFunc, workLanguage); } //项目相关的反馈 pm admin else if (feedBack.TrialId != null) @@ -870,7 +904,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(input.topicStr, info.ResearchProgramNo); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userNames, info.TrialCode, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName, @@ -884,7 +918,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.TrialFeedBack, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.TrialFeedBack, messageToSend, emailConfigFunc, workLanguage); } //项目无关的反馈 admin @@ -896,7 +930,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(input.topicStr); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), userNames, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName, feedBack.CreateUserRole.IdentityUser.FullName, @@ -908,7 +942,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SysFeedBack, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.SysFeedBack, messageToSend, emailConfigFunc, workLanguage); } if (trialinfo == null) @@ -930,6 +964,10 @@ namespace IRaCIS.Core.Application.Service var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException(); + //设置工作语言 + var workLanguage = sysUserInfo.UserWorkLanguage; + var isEn_US = workLanguage == UserWorkLanguage.US; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -938,13 +976,13 @@ namespace IRaCIS.Core.Application.Service //主题 //---[来自展影IRC] 关于重置邮箱的提醒 - var companyName = _userInfo.IsEn_Us ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; + var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { var topicStr = string.Format(input.topicStr, companyName); - var htmlBodyStr = string.Format(ReplacePlatformName(ReplaceCompanyName(input.htmlBodyStr)), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), sysUserInfo.FullName ); @@ -953,7 +991,7 @@ namespace IRaCIS.Core.Application.Service }; - await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.IdentityUser_ModifyPassword, messageToSend, emailConfigFunc); + await GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario.IdentityUser_ModifyPassword, messageToSend, emailConfigFunc, workLanguage); await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); } @@ -963,6 +1001,10 @@ namespace IRaCIS.Core.Application.Service { var trialInfo = await _trialRepository.Where(t => t.Id == trialId).FirstOrDefaultAsync(); + //设置工作语言 + var isEn_US = _userInfo.IsEn_Us; + var workLanguage = _userInfo.IsEn_Us ? UserWorkLanguage.US : UserWorkLanguage.CN; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -978,7 +1020,7 @@ namespace IRaCIS.Core.Application.Service var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), name, trialInfo.TrialCode, trialInfo.ResearchProgramNo @@ -997,6 +1039,12 @@ namespace IRaCIS.Core.Application.Service var siteInfo = await _trialSiteRepository.Where(t => t.Id == trialSiteId).Include(x => x.Trial).FirstOrDefaultAsync(); var trialInfo = siteInfo.Trial; + + + //设置工作语言 + var isEn_US = _userInfo.IsEn_Us; + var workLanguage = _userInfo.IsEn_Us ? UserWorkLanguage.US : UserWorkLanguage.CN; + var messageToSend = new MimeMessage(); //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -1012,7 +1060,7 @@ namespace IRaCIS.Core.Application.Service var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo); - var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), + var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr, workLanguage), name, trialInfo.TrialCode, siteInfo.TrialSiteCode,