修改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
514764ee6e
commit
30bcfcc675
|
@ -14184,7 +14184,7 @@
|
||||||
处理已阅任务重阅申请事件
|
处理已阅任务重阅申请事件
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ImageConsumer.SendImageReuploadEmail(IRaCIS.Core.Domain.Models.EmailNoticeConfig,IRaCIS.Core.Domain.Share.EmailBusinessScenario,IRaCIS.Core.Domain.Models.SubjectVisit,System.Guid,System.Collections.Generic.List{IRaCIS.Core.Domain.Share.UserTypeEnum},IRaCIS.Core.Domain.Share.ImageBackStateEnum)">
|
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ImageConsumer.SendImageReuploadEmail(IRaCIS.Core.Application.MassTransit.Consumer.Dto.SendImageReuploadEmailInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
发送影像重传相关邮件的通用方法
|
发送影像重传相关邮件的通用方法
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer.Dto
|
||||||
|
|
||||||
public SubjectVisit SubjectVisit { get; set; }
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
|
||||||
public Guid trialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
public List<UserTypeEnum> UserTypes { get; set; } = null;
|
public List<UserTypeEnum> UserTypes { get; set; } = null;
|
||||||
|
|
||||||
public ImageBackStateEnum ImageBackStateEnum { get; set; } = ImageBackStateEnum.None;
|
public ImageBackStateEnum ImageBackStateEnum { get; set; } = ImageBackStateEnum.None;
|
||||||
|
|
|
@ -103,7 +103,16 @@ public class ImageConsumer(
|
||||||
|
|
||||||
if (trialEmailConfig != null)
|
if (trialEmailConfig != null)
|
||||||
{
|
{
|
||||||
await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId, userTypes, context.Message.ImageBackState);
|
var inDto = new SendImageReuploadEmailInDto
|
||||||
|
{
|
||||||
|
EmailNoticeConfig = trialEmailConfig,
|
||||||
|
Scenario = scenario,
|
||||||
|
SubjectVisit = subjectVisit,
|
||||||
|
TrialId = trialId,
|
||||||
|
UserTypes = userTypes,
|
||||||
|
ImageBackStateEnum = context.Message.ImageBackState
|
||||||
|
};
|
||||||
|
await SendImageReuploadEmail(inDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +147,15 @@ public class ImageConsumer(
|
||||||
|
|
||||||
if (trialEmailConfig != null)
|
if (trialEmailConfig != null)
|
||||||
{
|
{
|
||||||
await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId);
|
var inDto = new SendImageReuploadEmailInDto
|
||||||
|
{
|
||||||
|
EmailNoticeConfig = trialEmailConfig,
|
||||||
|
Scenario = scenario,
|
||||||
|
SubjectVisit = subjectVisit,
|
||||||
|
TrialId = trialId,
|
||||||
|
RequestBackStateEnum= context.Message.RequestBackState,
|
||||||
|
};
|
||||||
|
await SendImageReuploadEmail(inDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,7 +189,14 @@ public class ImageConsumer(
|
||||||
|
|
||||||
if (trialEmailConfig != null)
|
if (trialEmailConfig != null)
|
||||||
{
|
{
|
||||||
await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId);
|
var inDto = new SendImageReuploadEmailInDto
|
||||||
|
{
|
||||||
|
EmailNoticeConfig = trialEmailConfig,
|
||||||
|
Scenario = scenario,
|
||||||
|
SubjectVisit = subjectVisit,
|
||||||
|
TrialId = trialId
|
||||||
|
};
|
||||||
|
await SendImageReuploadEmail(inDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,42 +243,47 @@ public class ImageConsumer(
|
||||||
|
|
||||||
if (trialEmailConfig != null)
|
if (trialEmailConfig != null)
|
||||||
{
|
{
|
||||||
await SendImageReuploadEmail(trialEmailConfig, scenario, subjectVisit, trialId);
|
var inDto = new SendImageReuploadEmailInDto
|
||||||
|
{
|
||||||
|
EmailNoticeConfig = trialEmailConfig,
|
||||||
|
Scenario = scenario,
|
||||||
|
SubjectVisit = subjectVisit,
|
||||||
|
TrialId = trialId
|
||||||
|
};
|
||||||
|
await SendImageReuploadEmail(inDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发送影像重传相关邮件的通用方法
|
/// 发送影像重传相关邮件的通用方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private async Task SendImageReuploadEmail(EmailNoticeConfig emailNoticeConfig, EmailBusinessScenario scenario, SubjectVisit subjectVisit, Guid trialId,List<UserTypeEnum> userTypes=null, ImageBackStateEnum imageBackStateEnum= ImageBackStateEnum.None)
|
private async Task SendImageReuploadEmail(SendImageReuploadEmailInDto inDto)
|
||||||
{
|
{
|
||||||
|
|
||||||
SendImageReuploadEmailInDto inDto = new SendImageReuploadEmailInDto() { };
|
|
||||||
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US;
|
||||||
|
|
||||||
// 获取项目信息
|
// 获取项目信息
|
||||||
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inDto.TrialId);
|
||||||
|
|
||||||
// 根据不同场景获取不同角色的用户
|
// 根据不同场景获取不同角色的用户
|
||||||
var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == trialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
|
var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == inDto.TrialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
|
||||||
|
|
||||||
// 根据场景确定收件人
|
// 根据场景确定收件人
|
||||||
List<UserRole> toUserList = new List<UserRole>();
|
List<UserRole> toUserList = new List<UserRole>();
|
||||||
List<UserRole> ccUserList = new List<UserRole>();
|
List<UserRole> ccUserList = new List<UserRole>();
|
||||||
|
|
||||||
var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == emailNoticeConfig.Id).ToListAsync();
|
var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync();
|
||||||
var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList();
|
var userTypeEnum= emailNoticeUserList.Select(x => x.UserType).ToList();
|
||||||
if (userTypes != null)
|
if (inDto.UserTypes != null)
|
||||||
{
|
{
|
||||||
userTypeEnum = userTypes;
|
userTypeEnum = inDto.UserTypes;
|
||||||
}
|
}
|
||||||
var crcUserList =new List<UserRole>(){ };
|
var crcUserList =new List<UserRole>(){ };
|
||||||
if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator))
|
if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator))
|
||||||
{
|
{
|
||||||
crcUserList=await _trialSiteRepository.Where(x=>x.Id== subjectVisit.TrialSiteId).SelectMany(x=>x.CRCUserList.Select(y => y.UserRole)).ToListAsync();
|
crcUserList=await _trialSiteRepository.Where(x=>x.Id== inDto.SubjectVisit.TrialSiteId).SelectMany(x=>x.CRCUserList.Select(y => y.UserRole)).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userTypes == null)
|
if (inDto.UserTypes == null)
|
||||||
{
|
{
|
||||||
var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList();
|
var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList();
|
||||||
|
|
||||||
|
@ -267,11 +296,11 @@ public class ImageConsumer(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var toList = userTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList();
|
var toList = inDto.UserTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList();
|
||||||
|
|
||||||
toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList();
|
toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList();
|
||||||
|
|
||||||
if (userTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator))
|
if (inDto.UserTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator))
|
||||||
{
|
{
|
||||||
toUserList.AddRange(crcUserList);
|
toUserList.AddRange(crcUserList);
|
||||||
}
|
}
|
||||||
|
@ -306,32 +335,38 @@ public class ImageConsumer(
|
||||||
messageToSend.Cc.Add(new MailboxAddress(String.Empty, ccUser.EMail));
|
messageToSend.Cc.Add(new MailboxAddress(String.Empty, ccUser.EMail));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<DictionaryDto> dictionaryDtos = new List<DictionaryDto>() {
|
||||||
|
new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=inDto.SubjectVisit.IsUrgent.ToString(), }, //是否加急
|
||||||
var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto()
|
};
|
||||||
|
if (inDto.Scenario == EmailBusinessScenario.DataReconciliation_PMApprovalRe_Uploading)
|
||||||
{
|
{
|
||||||
|
dictionaryDtos.Add(new DictionaryDto() { DictionaryCode = "RequestBackState", EnumValue = inDto.RequestBackStateEnum.GetEnumInt(), });
|
||||||
DictionaryRepository = _dictionaryRepository,
|
|
||||||
IsEn_US = isEn_US,
|
|
||||||
DictionaryList = new List<DictionaryDto>()
|
|
||||||
{
|
|
||||||
new DictionaryDto (){DictionaryCode= "YesOrNo",EnumValue=subjectVisit.IsUrgent.ToString(), }, //是否加急
|
|
||||||
new DictionaryDto (){DictionaryCode= "ImageBackState",EnumValue=imageBackStateEnum.GetEnumInt(), }, //审批结果
|
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
else
|
||||||
|
{
|
||||||
|
dictionaryDtos.Add(new DictionaryDto() { DictionaryCode = "ImageBackState", EnumValue = inDto.ImageBackStateEnum.GetEnumInt(), });//审批结果
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
DictionaryRepository = _dictionaryRepository,
|
||||||
|
IsEn_US = isEn_US,
|
||||||
|
DictionaryList = dictionaryDtos
|
||||||
|
});
|
||||||
|
|
||||||
// 格式化邮件内容
|
// 格式化邮件内容
|
||||||
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
|
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
|
||||||
{
|
{
|
||||||
var subjectCode = subjectVisit.Subject.Code;
|
var subjectCode = inDto.SubjectVisit.Subject.Code;
|
||||||
var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, subjectVisit.VisitName);
|
var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, inDto.SubjectVisit.VisitName);
|
||||||
var htmlBodyStr = string.Format(
|
var htmlBodyStr = string.Format(
|
||||||
CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
|
CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
|
||||||
userinfo.FullName, // 用户名 {0}
|
userinfo.FullName, // 用户名 {0}
|
||||||
trialInfo.ExperimentName, // 项目 {1}
|
trialInfo.ExperimentName, // 项目 {1}
|
||||||
subjectCode, // 受试者 {2}
|
subjectCode, // 受试者 {2}
|
||||||
subjectVisit.VisitName, // 访视 {3}
|
inDto.SubjectVisit.VisitName, // 访视 {3}
|
||||||
dictionValue[0], // 是否加急 {4}
|
dictionValue[0], // 是否加急 {4}
|
||||||
dictionValue[1], // 审批结果 {5}
|
dictionValue[1], // 审批结果 {5}
|
||||||
_systemEmailConfig.SiteUrl // 链接 {6}
|
_systemEmailConfig.SiteUrl // 链接 {6}
|
||||||
|
@ -340,7 +375,7 @@ public class ImageConsumer(
|
||||||
return (topicStr, htmlBodyStr);
|
return (topicStr, htmlBodyStr);
|
||||||
};
|
};
|
||||||
|
|
||||||
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, scenario, messageToSend, emailConfigFunc);
|
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, inDto.Scenario, messageToSend, emailConfigFunc);
|
||||||
|
|
||||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ public static class DBContext_Ext
|
||||||
// 重传影像
|
// 重传影像
|
||||||
//CRC 申请 || PM审批的时候
|
//CRC 申请 || PM审批的时候
|
||||||
if ((originRequestBackState == RequestBackStateEnum.NotRequest && subjectVisit.RequestBackState == RequestBackStateEnum.CRC_RequestBack) ||
|
if ((originRequestBackState == RequestBackStateEnum.NotRequest && subjectVisit.RequestBackState == RequestBackStateEnum.CRC_RequestBack) ||
|
||||||
(originRequestBackState == RequestBackStateEnum.CRC_RequestBack && subjectVisit.RequestBackState != RequestBackStateEnum.CRC_RequestBack))
|
(originRequestBackState == RequestBackStateEnum.CRC_RequestBack && (subjectVisit.RequestBackState == RequestBackStateEnum.PM_AgressBack || subjectVisit.RequestBackState == RequestBackStateEnum.PM_NotAgree )))
|
||||||
{
|
{
|
||||||
subjectVisit.AddDomainEvent(new CheckReuploadEvent() { RequestBackState = subjectVisit.RequestBackState, SubjectVisitId = subjectVisit.Id });
|
subjectVisit.AddDomainEvent(new CheckReuploadEvent() { RequestBackState = subjectVisit.RequestBackState, SubjectVisitId = subjectVisit.Id });
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue