//-------------------------------------------------------------------- // 此代码由T4模板自动生成 byzhouhang 20210918 // 生成时间 2022-10-20 11:52:17 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- using IRaCIS.Core.Domain.Models; using Microsoft.AspNetCore.Mvc; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Application.Helper; namespace IRaCIS.Core.Application.Service { /// /// TrialEmailNoticeConfigService /// [ApiExplorerSettings(GroupName = "Test")] public class TrialEmailNoticeConfigService : BaseService, ITrialEmailNoticeConfigService { private readonly IRepository _trialEmailNoticeConfigRepository; public TrialEmailNoticeConfigService(IRepository trialEmailNoticeConfigRepository) { _trialEmailNoticeConfigRepository = trialEmailNoticeConfigRepository; } /// /// 同步系统配置的文档到想项目中 /// /// /// /// /// private async Task SyncSystemEmainCofigDocListAsync(Guid trialId, CriterionType? criterionTypeEnum) { if (criterionTypeEnum != null) { var docmentList = _repository.Where(t => t.CriterionTypeEnum == criterionTypeEnum).Select(t => new { t.Path, t.Name, t.Code, t.BusinessScenarioEnum }).ToList(); var trialDocCount = _trialEmailNoticeConfigRepository.Where(t => t.CriterionTypeEnum == criterionTypeEnum).Count(); if (trialDocCount == 0) { foreach (var item in docmentList) { await _trialEmailNoticeConfigRepository.AddAsync(new TrialEmailNoticeConfig() { FileName = item.Name, FilePath = item.Path, BusinessScenarioEnum = item.BusinessScenarioEnum, Code = item.Code }); } } } await _trialEmailNoticeConfigRepository.SaveChangesAsync(); } private async Task FillWordTemplate(Guid trialId, CriterionType criterionTypeEnum, CommonDocumentBusinessScenario businessScenarioEnum) { } private async Task FillWordTemplateAndEmailConfig(Guid trialId, Guid visitTaskId, Guid trialReadingCriterionId, CommonDocumentBusinessScenario businessScenarioEnum) { var criterionTypeEnum = await _repository.Where(t => t.TrialId == trialId && t.Id == trialReadingCriterionId).Select(t => t.CriterionType).FirstOrDefaultAsync(); var emailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.CriterionTypeEnum == criterionTypeEnum && t.BusinessScenarioEnum == businessScenarioEnum).FirstOrDefaultAsync(); if (emailConfig == null) { throw new BusinessValidationFailedException("找不到该项目标准场景下邮件的配置"); } //填充邮件基本配置 var sendEmailConfig = new SMTPEmailConfig(); sendEmailConfig.TopicDescription = "入组确认测试"; foreach (var item in emailConfig.ReceiveEmailList) { sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(string.Empty, item)); } foreach (var item in emailConfig.CopyEmailList) { sendEmailConfig.CopyToMailAddressList.Add(new MimeKit.MailboxAddress(string.Empty, item)); } //邮件内容html var pathToFile = _hostEnvironment.WebRootPath + Path.DirectorySeparatorChar.ToString() + "EmailTemplate" + Path.DirectorySeparatorChar.ToString() + "SubjectEnrollConfirm.html"; using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile)) { var templateInfo = SourceReader.ReadToEnd(); sendEmailConfig.HtmlBodyStr = string.Format(templateInfo, $" 附件为入组确认报告,请查收 " ); } //邮件附件 var path= FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, emailConfig.FilePath); //sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig() //{ // FileName = emailConfig.FileName, // FileStream = //}); if (businessScenarioEnum == CommonDocumentBusinessScenario.EnrollConfirmed) { } else if(businessScenarioEnum == CommonDocumentBusinessScenario.PDConfirmed) { } return sendEmailConfig; } public async Task> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) { await SyncSystemEmainCofigDocListAsync(inQuery.TrialId, inQuery.CriterionTypeEnum); var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository .WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum) .WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum) .ProjectTo(_mapper.ConfigurationProvider); return await trialEmailNoticeConfigQueryable.ToListAsync(); } public async Task AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig) { addOrEditTrialEmailNoticeConfig.ReceiveEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.ReceiveEmailList); addOrEditTrialEmailNoticeConfig.CopyEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.CopyEmailList); var entity = await _trialEmailNoticeConfigRepository.InsertOrUpdateAsync(addOrEditTrialEmailNoticeConfig, true); return ResponseOutput.Ok(entity.Id.ToString()); } [HttpDelete("{trialEmailNoticeConfigId:guid}")] public async Task DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId) { var success = await _trialEmailNoticeConfigRepository.DeleteFromQueryAsync(t => t.Id == trialEmailNoticeConfigId, true); return ResponseOutput.Ok(); } } }