From b72b13509be982768db9b9fb2a3bb142b74adc4d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 11:25:26 +0800 Subject: [PATCH] xx --- .../BackGroundJob/IRaCISCHangfireJob.cs | 1 - .../Service/Allocation/VisitTaskService.cs | 4 +- .../Service/Document/EmailSendService.cs | 50 ++++++++++++++++++- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs index 1d8b5cc2f..b71798c43 100644 --- a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs +++ b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs @@ -59,7 +59,6 @@ namespace IRaCIS.Application.Services.BackGroundJob await InitInternationlizationDataAndWatchJsonFileAsync(); //创建邮件定时任务 - //await InitSysAndTrialCronJobAsync(); diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index aa8244ed2..26bb5acdf 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -281,7 +281,7 @@ namespace IRaCIS.Core.Application.Service.Allocation [HttpPost] [UnitOfWork] - public async Task PIAuditTaskEnrollOrPD(PIAuditTaskEnrollOrPdCommand incommand, [FromServices] ITrialEmailNoticeConfigService trialEmailNoticeConfigService) + public async Task PIAuditTaskEnrollOrPD(PIAuditTaskEnrollOrPdCommand incommand, [FromServices] IEmailSendService emailSendService) { var visitTask = await _visitTaskRepository.FirstOrDefaultAsync(t => t.Id == incommand.VisitTaskId); visitTask.IsEnrollment = incommand.IsEnrollment != null ? incommand.IsEnrollment : visitTask.IsEnrollment; @@ -291,7 +291,7 @@ namespace IRaCIS.Core.Application.Service.Allocation await _visitTaskRepository.SaveChangesAsync(); - await trialEmailNoticeConfigService.CommonBusinessScenarioSendEmailAsync(visitTask.Id, incommand.IsEnrollment, incommand.IsPDConfirm); + await emailSendService.SendEnrollOrPdEmail(visitTask.Id, incommand.IsEnrollment, incommand.IsPDConfirm); return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 9d945ab65..3e013bdbb 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -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.Helper; using IRaCIS.Core.Application.Service.Reading.Dto; @@ -21,6 +22,7 @@ namespace IRaCIS.Core.Application.Service public interface IEmailSendService { + Task SendEnrollOrPdEmail(Guid visitTaskId, bool? isEnrollment, bool? isPDConfirm); Task SendClinicalDataQuestionAsync(Guid visitTaskId, string content); Task SendTrialImageQCTaskEmailAsync(Guid trialId); @@ -45,6 +47,50 @@ namespace IRaCIS.Core.Application.Service _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(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 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); + } + /// /// 影像质控 /// @@ -206,6 +252,8 @@ namespace IRaCIS.Core.Application.Service } + + public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null) { //找到配置