From b84abaa0a976694d0a3521de8661b83f6a39ee18 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 29 Aug 2023 17:33:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8C=BB=E5=AD=A6=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/Startup.cs | 2 +- .../ITrialEmailNoticeConfigService.cs | 1 - .../Document/TrialEmailNoticeConfigService.cs | 160 ------------------ .../ReadingMedicineQuestionService.cs | 4 +- .../Document/TrialEmailNoticeConfig.cs | 10 +- .../Common/AuditingData.cs | 8 +- 6 files changed, 17 insertions(+), 168 deletions(-) diff --git a/IRaCIS.Core.API/Startup.cs b/IRaCIS.Core.API/Startup.cs index 79388a7a5..769f9c9b7 100644 --- a/IRaCIS.Core.API/Startup.cs +++ b/IRaCIS.Core.API/Startup.cs @@ -167,7 +167,7 @@ namespace IRaCIS.Core.API // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - //app.UsePathBase(PathString.FromUriComponent("/back")); + //app.UsePathBase(PathString.FromUriComponent("/api")); //ػ app.UseLocalization(); diff --git a/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs index e950837fb..8166fbae9 100644 --- a/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs @@ -25,7 +25,6 @@ namespace IRaCIS.Core.Application.Interfaces Task BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isMedicalReviewAndSuggestApplyReReading = null, EmailStoreSendMode emailStoreMode = EmailStoreSendMode.StoreLocalSend, string sendFileRelativePath=""); - Task CommonBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? IsEnrollment, bool? IsPDConfirm); } diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index cf403409a..519545509 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -189,166 +189,6 @@ namespace IRaCIS.Core.Application.Service } - public async Task CommonBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isEnrollment, bool? isPDConfirm) - { - #region 区分场景 - EmailBusinessScenario businessScenarioEnum; - - if (isEnrollment != null && isPDConfirm == null) - { - businessScenarioEnum = EmailBusinessScenario.EnrollConfirmed; - } - else /*if (isEnrollment == null && isPDConfirm != null)*/ - { - businessScenarioEnum = EmailBusinessScenario.PDConfirmed; - } - - #endregion - - #region 任务 基本信息,邮件需要 - var taskInfo = await _visitTaskRepository.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 trialId = taskInfo.TrialId; - - #endregion - - - #region 发收件人配置 确保无误 - - - var emailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == null && t.BusinessScenarioEnum == businessScenarioEnum) - .Include(t => t.TrialEmailNoticeUserList).FirstOrDefaultAsync(); - - - if (emailConfig == null || emailConfig.IsAutoSend == false) - { - return; - } - - - var sendEmailConfig = new SMTPEmailConfig(); - - //收件人 如果是CRC CRA 要按照中心发送 - var toUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList(); - - - - var toUserList = _repository.Where(t => t.TrialId == trialId && toUserTypeEnumList.Contains(t.User.UserTypeEnum) && t.SiteId == taskInfo.SiteId).Select(t => new { t.User.EMail, t.User.FullName }).ToList(); - - var copyUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(c => c.UserType).ToList(); - var copyUserList = _repository.Where(t => t.TrialId == trialId && copyUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.User.EMail, t.User.FullName }).ToList(); - - - if (toUserList.Count() == 0) - { - //---没有收件人,无法发送邮件 - throw new BusinessValidationFailedException(_localizer["TrialEmailN_NoRecipient"]); - } - - - if (emailConfig.FromEmail.Contains("@") && !string.IsNullOrEmpty(emailConfig.FromEmail)) - { - - sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(emailConfig.FromName, emailConfig.FromEmail); - sendEmailConfig.AuthorizationCode = emailConfig.AuthorizationCode; - sendEmailConfig.UserName = emailConfig.FromEmail; - - sendEmailConfig.Host = emailConfig.SMTPServerAddress; - sendEmailConfig.Port = emailConfig.SMTPServerPort; - } - else - { - //---项目发件邮箱配置有误,请核实 - throw new BusinessValidationFailedException(_localizer["TrialEmailN_InvalidEmailConfig"]); - } - - foreach (var item in toUserList) - { - - if (item.EMail.Contains("@") && !string.IsNullOrEmpty(item.EMail)) - { - - sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(item.FullName, item.EMail)); - - } - } - foreach (var item in copyUserList) - { - - if (item.EMail.Contains("@") && !string.IsNullOrEmpty(item.EMail)) - { - - sendEmailConfig.CopyToMailAddressList.Add(new MimeKit.MailboxAddress(item.FullName, item.EMail)); - - } - } - #endregion - - #region 确保 设置邮件Tile - - - - - var pathToFile = _hostEnvironment.WebRootPath - + Path.DirectorySeparatorChar.ToString() - + "EmailTemplate" - + Path.DirectorySeparatorChar.ToString() - //+ "SubjectEnrollConfirmOrPDProgress.html"; - + (_userInfo.IsEn_Us ? "SubjectEnrollConfirmOrPDProgress_US.html" : "SubjectEnrollConfirmOrPDProgress.html"); - - - - if (businessScenarioEnum == EmailBusinessScenario.EnrollConfirmed) - { - sendEmailConfig.TopicDescription = _localizer["TrialEmailN_EnrollmentConfirmation", taskInfo.ResearchProgramNo, taskInfo.SubjectCode]; - - using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) - { - var templateInfo = SourceReader.ReadToEnd(); - - - sendEmailConfig.HtmlBodyStr = string.Format(templateInfo, - //--- 附件为疾病进展确认报告, - //_localizer["TrialEmailN_SubjectDiseaseProgression"] - $"请查收 关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}受试者入组确认已完成 PI / MM入组确认:{(isEnrollment == true ? "是" : "否")}" - ); - } - } - else /*if (businessScenarioEnum == EmailBusinessScenario.PDConfirmed)*/ - { - sendEmailConfig.TopicDescription = _localizer["TrialEmailN_PDReport", taskInfo.ResearchProgramNo, taskInfo.SubjectCode]; - - using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) - { - var templateInfo = SourceReader.ReadToEnd(); - - - sendEmailConfig.HtmlBodyStr = string.Format(templateInfo, - //--- 附件为疾病进展确认报告,请查收 - //_localizer["TrialEmailN_SubjectDiseaseProgression"] - $"请查收 关于{taskInfo.ResearchProgramNo}项目{taskInfo.SubjectCode}受试者PD确认已完成 PI / MM PD确认:{(isPDConfirm == true ? "是" : "否")}" - ); - } - } - - - - - #endregion - - - await SendEmailHelper.SendEmailAsync(sendEmailConfig); - } - private async Task DealMedicalReviewTasKGenerateAndIsSendAsync(Guid trialId, bool? isHandSend, string pdAnswer, List taskIdList, List minUserIdList) diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs index 94fcf1e41..d63618cb3 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicineQuestionService.cs @@ -462,7 +462,7 @@ namespace IRaCIS.Core.Application.Service { await _readingMedicineTrialQuestionRepository.BatchDeleteNoTrackingAsync(x => inDto.Ids.Contains(x.Id)); var result= await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); - return ResponseOutput.Result(result); + return ResponseOutput.Ok(); } @@ -518,7 +518,7 @@ namespace IRaCIS.Core.Application.Service await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList); var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync(); - return ResponseOutput.Result(result); + return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs index d04a6137c..dffef0de0 100644 --- a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs +++ b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Core.Domain.Models ///TrialEmailNoticeConfig /// [Table("TrialEmailNoticeConfig")] - public class TrialEmailNoticeConfig : Entity, IAuditUpdate, IAuditAdd + public class TrialEmailNoticeConfig : Entity, IAuditUpdate, IAuditAdd,ISoftDelete { [JsonIgnore] @@ -122,8 +122,14 @@ namespace IRaCIS.Core.Domain.Models [Required] public DateTime UpdateTime { get; set; } + public bool IsDeleted { get; set; } - } + public DateTime? DeletedTime { get; set; } + + public Guid? DeleteUserId { get; set; } + + + } public class TrialEmailBlackUser:Entity { diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index b40cd5ddf..5c4f5eba2 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -919,7 +919,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common .Where(t => t.TrialEmailNoticeConfigId == entity.Id).Select(t => new { t.TrialEmailNoticeConfigId, t.EmailUserType, t.UserType }).ToList(); - + //找到黑名单 + var blackUserIdList = entitys.Where(x => x.Entity.GetType() == typeof(TrialEmailBlackUser)).Select(t => t.Entity as TrialEmailBlackUser) + .Where(t => t.TrialEmailNoticeConfigId == entity.Id).Select(t => + new { t.UserId }).ToList(); await InsertInspection(entity, type, x => new InspectionConvertDTO() { @@ -931,7 +934,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common { ToUserTypes = configUserTypeList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserType).ToList(), CopyUserTypes = configUserTypeList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(t => t.UserType).ToList(), - }); + BlackUserIds = blackUserIdList + }) ; }