中心调研邮件 和枚举增加
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
8eecabb897
commit
d6ff81bf87
|
@ -937,6 +937,13 @@
|
||||||
<param name="childCode"></param>
|
<param name="childCode"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.EventStoreRecordService.GetEventStoreRecordList(IRaCIS.Core.Application.ViewModel.EventStoreRecordQuery)">
|
||||||
|
<summary>
|
||||||
|
邮件事件消息列表
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.EventStoreRecordService.RePublishEvent(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Service.EventStoreRecordService.RePublishEvent(System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
重新发布失败的事件消息
|
重新发布失败的事件消息
|
||||||
|
@ -12734,6 +12741,22 @@
|
||||||
<param name="_trialRepository"></param>
|
<param name="_trialRepository"></param>
|
||||||
<param name="_mapper"></param>
|
<param name="_mapper"></param>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.MasstransitHangfireTestConsumer">
|
||||||
|
<summary>
|
||||||
|
meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码
|
||||||
|
publish 请求流不会先到消费者,发布后,直接执行后续代码
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="_userRepository"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.MasstransitHangfireTestConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User})">
|
||||||
|
<summary>
|
||||||
|
meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码
|
||||||
|
publish 请求流不会先到消费者,发布后,直接执行后续代码
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
<param name="_userRepository"></param>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer">
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer">
|
||||||
<summary>
|
<summary>
|
||||||
加急的医学反馈任务 通知MIM
|
加急的医学反馈任务 通知MIM
|
||||||
|
|
|
@ -13,6 +13,7 @@ using MassTransit;
|
||||||
using Microsoft.AspNetCore.Components.Routing;
|
using Microsoft.AspNetCore.Components.Routing;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using MimeKit;
|
using MimeKit;
|
||||||
|
using NPOI.SS.Formula.Functions;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
@ -45,56 +46,62 @@ public class UserSiteSurveySubmitedEventConsumer(
|
||||||
|
|
||||||
var trialId = siteSurveyInfo.TrialId;
|
var trialId = siteSurveyInfo.TrialId;
|
||||||
|
|
||||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == siteSurveyInfo.TrialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
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 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 messageToSend = new MimeMessage();
|
var messageToSend = new MimeMessage();
|
||||||
|
|
||||||
|
var toUserName = string.Empty;
|
||||||
|
|
||||||
var userName = siteSurveyInfo.UserName;
|
//有SPM
|
||||||
var email = siteSurveyInfo.Email;
|
if (sPMOrCPMList.Count>0)
|
||||||
var phone = siteSurveyInfo.Phone;
|
|
||||||
|
|
||||||
if (hasSPMOrCPM)
|
|
||||||
{
|
{
|
||||||
var user = await _userRepository.FirstOrDefaultAsync(t => t.Id == siteSurveyInfo.PreliminaryUserId);
|
foreach (var user in sPMOrCPMList)
|
||||||
|
{
|
||||||
|
messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail));
|
||||||
|
}
|
||||||
|
|
||||||
userName = user.FullName;
|
toUserName = string.Join('、', sPMOrCPMList.Select(t => t.FullName));
|
||||||
email = user.EMail;
|
|
||||||
phone = user.Phone;
|
|
||||||
|
|
||||||
messageToSend.To.Add(new MailboxAddress(String.Empty, user.EMail));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
messageToSend.To.Add(new MailboxAddress(String.Empty, siteSurveyInfo.Email));
|
foreach (var user in pmList)
|
||||||
|
{
|
||||||
|
messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail));
|
||||||
|
}
|
||||||
|
|
||||||
|
toUserName = string.Join('、', pmList.Select(t => t.FullName));
|
||||||
}
|
}
|
||||||
|
|
||||||
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
||||||
|
|
||||||
var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.Id == siteSurveyInfo.TrialSiteId, true);
|
var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.Id == siteSurveyInfo.TrialSiteId, true);
|
||||||
|
|
||||||
|
|
||||||
var companyName = 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 =>
|
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
|
||||||
{
|
{
|
||||||
var topicStr = string.Format(input.topicStr, companyName, trialInfo.ResearchProgramNo);
|
var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo);
|
||||||
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
|
var htmlBodyStr = string.Format(CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr),
|
||||||
|
toUserName,
|
||||||
siteInfo.TrialSiteCode,
|
siteInfo.TrialSiteCode,
|
||||||
siteInfo.TrialSiteAliasName,
|
siteInfo.TrialSiteAliasName,
|
||||||
userName,
|
|
||||||
email,
|
siteSurveyInfo.UserName,
|
||||||
phone,
|
siteSurveyInfo.Email,
|
||||||
|
siteSurveyInfo.Phone,
|
||||||
_systemEmailConfig.SiteUrl
|
_systemEmailConfig.SiteUrl
|
||||||
);
|
);
|
||||||
|
|
||||||
return (topicStr, htmlBodyStr);
|
return (topicStr, htmlBodyStr);
|
||||||
};
|
};
|
||||||
|
|
||||||
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.SiteSurveyReject, messageToSend, emailConfigFunc);
|
await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, EmailBusinessScenario.Approval_SubmitSiteSurvey, messageToSend, emailConfigFunc);
|
||||||
|
|
||||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,146 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
TrialSubjectVisitFeedBack = 28,
|
TrialSubjectVisitFeedBack = 28,
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-质控任务待领取
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_PendingClaim = 29,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-质控任务待审核
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_PendingImageQC = 30,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-质控任务待领取
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_PendingImageQCClaim = 31,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-质控任务待审核
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_PendingImageQC = 32,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-QC质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_Pending = 33,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 审批(提交调研表)
|
||||||
|
/// </summary>
|
||||||
|
Approval_SubmitSiteSurvey = 34,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 审批(更新调研表)
|
||||||
|
/// </summary>
|
||||||
|
Approval_UpdateSiteSurvey = 35,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 中心调研审批
|
||||||
|
/// </summary>
|
||||||
|
SiteSurveyApproval = 36,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-QC质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_UnderQCQuery = 37,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-QC质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_UnderQCQuery = 38,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-影像质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_ImageQuery = 39,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-影像质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_ImageQuery = 40,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-核查质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_UnderDR = 41,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-核查质疑待处理
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_UnderDR = 42,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急阅片
|
||||||
|
/// </summary>
|
||||||
|
ExpeditedReading = 43,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加急医学反馈
|
||||||
|
/// </summary>
|
||||||
|
ExpeditedMedicalQCToIR = 44,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-医学审核
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_MedicalQC = 45,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-医学审核
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_MedicalQC = 46,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-医学反馈
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_MedicalQCFeedback = 47,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-医学反馈
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_MedicalQCFeedback = 48,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-一致性核查
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_DR = 49,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-一致性核查
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_DR = 50,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-核查质疑
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_UnderDRForPMOrAPM = 51,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-核查质疑
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_UnderDRForPMOrAPM = 52,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 阅片人重阅审批
|
||||||
|
/// </summary>
|
||||||
|
ReReadFromIRApproval = 53,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 项目组申请重阅审批
|
||||||
|
/// </summary>
|
||||||
|
ReReadFromPMApproval = 54,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 入组确认-加急医学反馈回复
|
||||||
|
/// </summary>
|
||||||
|
EligibilityVerification_ExpeditedMedicalQCResponse = 55,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PD确认-加急医学反馈回复
|
||||||
|
/// </summary>
|
||||||
|
PDVerification_ExpeditedMedicalQCResponse = 56
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@ public static class DBContext_Ext
|
||||||
{
|
{
|
||||||
trialSiteSurvey.AddDomainEvent(new SiteSurverRejectedEvent() { TrialSiteSurveyId = trialSiteSurvey.Id, IsHaveSPMOrCPM = trialSiteSurvey.State == TrialSiteSurveyEnum.CRCSubmitted });
|
trialSiteSurvey.AddDomainEvent(new SiteSurverRejectedEvent() { TrialSiteSurveyId = trialSiteSurvey.Id, IsHaveSPMOrCPM = trialSiteSurvey.State == TrialSiteSurveyEnum.CRCSubmitted });
|
||||||
}
|
}
|
||||||
|
//SPM 驳回
|
||||||
else if (trialSiteSurvey.State == TrialSiteSurveyEnum.ToSubmit && originState == TrialSiteSurveyEnum.CRCSubmitted)
|
else if (trialSiteSurvey.State == TrialSiteSurveyEnum.ToSubmit && originState == TrialSiteSurveyEnum.CRCSubmitted)
|
||||||
{
|
{
|
||||||
trialSiteSurvey.AddDomainEvent(new SiteSurverRejectedEvent() { TrialSiteSurveyId = trialSiteSurvey.Id, IsHaveSPMOrCPM = true });
|
trialSiteSurvey.AddDomainEvent(new SiteSurverRejectedEvent() { TrialSiteSurveyId = trialSiteSurvey.Id, IsHaveSPMOrCPM = true });
|
||||||
|
|
Loading…
Reference in New Issue