Uat_Study
hang 2023-08-25 11:25:26 +08:00
parent daaf4540a4
commit b72b13509b
3 changed files with 51 additions and 4 deletions

View File

@ -59,7 +59,6 @@ namespace IRaCIS.Application.Services.BackGroundJob
await InitInternationlizationDataAndWatchJsonFileAsync(); await InitInternationlizationDataAndWatchJsonFileAsync();
//创建邮件定时任务 //创建邮件定时任务
//await InitSysAndTrialCronJobAsync(); //await InitSysAndTrialCronJobAsync();

View File

@ -281,7 +281,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
[HttpPost] [HttpPost]
[UnitOfWork] [UnitOfWork]
public async Task<IResponseOutput> PIAuditTaskEnrollOrPD(PIAuditTaskEnrollOrPdCommand incommand, [FromServices] ITrialEmailNoticeConfigService trialEmailNoticeConfigService) public async Task<IResponseOutput> PIAuditTaskEnrollOrPD(PIAuditTaskEnrollOrPdCommand incommand, [FromServices] IEmailSendService emailSendService)
{ {
var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == incommand.VisitTaskId); var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == incommand.VisitTaskId);
visitTask.IsEnrollment = incommand.IsEnrollment != null ? incommand.IsEnrollment : visitTask.IsEnrollment; visitTask.IsEnrollment = incommand.IsEnrollment != null ? incommand.IsEnrollment : visitTask.IsEnrollment;
@ -291,7 +291,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
await _visitTaskRepository.SaveChangesAsync(); await _visitTaskRepository.SaveChangesAsync();
await trialEmailNoticeConfigService.CommonBusinessScenarioSendEmailAsync(visitTask.Id, incommand.IsEnrollment, incommand.IsPDConfirm); await emailSendService.SendEnrollOrPdEmail(visitTask.Id, incommand.IsEnrollment, incommand.IsPDConfirm);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -1,4 +1,5 @@
using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.EMMA;
using DocumentFormat.OpenXml.Spreadsheet;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Application.Service.Reading.Dto;
@ -21,6 +22,7 @@ namespace IRaCIS.Core.Application.Service
public interface IEmailSendService public interface IEmailSendService
{ {
Task SendEnrollOrPdEmail(Guid visitTaskId, bool? isEnrollment, bool? isPDConfirm);
Task SendClinicalDataQuestionAsync(Guid visitTaskId, string content); Task SendClinicalDataQuestionAsync(Guid visitTaskId, string content);
Task SendTrialImageQCTaskEmailAsync(Guid trialId); Task SendTrialImageQCTaskEmailAsync(Guid trialId);
@ -45,6 +47,50 @@ namespace IRaCIS.Core.Application.Service
_SystemEmailSendConfig = systemEmailSendConfig; _SystemEmailSendConfig = systemEmailSendConfig;
} }
//入组确认/PD确认
public async Task SendEnrollOrPdEmail(Guid visitTaskId, bool? isEnrollment, bool? isPDConfirm)
{
EmailBusinessScenario businessScenarioEnum;
bool? result = null;
if (isEnrollment != null && isPDConfirm == null)
{
businessScenarioEnum = EmailBusinessScenario.EnrollConfirmed;
result = isEnrollment;
}
else
{
businessScenarioEnum = EmailBusinessScenario.PDConfirmed;
result = isPDConfirm;
}
var taskInfo = await _repository.Where<VisitTask>(t => t.Id == visitTaskId).Select(t => new
{
t.Subject.SiteId,
t.Trial.ResearchProgramNo,
t.Subject.TrialSite.TrialSiteCode,
SubjectCode = t.Subject.Code,
t.Trial.Sponsor.SponsorName,
t.TrialId,
}).FirstNotNullAsync();
var resultStr = _userInfo.IsEn_Us ? (result == true ? "Yes" : "No") : (result == true ? "是" : "否");
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
{
var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode);
var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr);
return (topicStr, htmlBodyStr);
};
await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc);
}
/// <summary> /// <summary>
/// 影像质控 /// 影像质控
/// </summary> /// </summary>
@ -206,6 +252,8 @@ namespace IRaCIS.Core.Application.Service
} }
public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null) public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null)
{ {
//找到配置 //找到配置