diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs index 82065c085..d28aee800 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs @@ -22,8 +22,39 @@ namespace IRaCIS.Core.Application.ViewModel public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } + + + public List TrialEmailNoticeUserList { get; set; } + + + public new Guid FromUserId => TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.From).Select(t => t.UserId).FirstOrDefault(); + public new List ToUserIdList => TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserId).ToList(); + public new List CopyUserIdList => TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(t => t.UserId).ToList(); + + } + + public class EmailUserInfoDto + { + public Guid UserId { get; set; } + + public Guid TrialEmailNoticeConfigId { get; set; } + + + public EmailUserType EmailUserType { get; set; } + + + public string Email { get; set; } + + public string UserName { get; set; } + + public string RealName { get; set; } + } + + + + ///TrialEmailNoticeConfigQuery 列表查询参数模型 public class TrialEmailNoticeConfigQuery { @@ -51,14 +82,21 @@ namespace IRaCIS.Core.Application.ViewModel public CriterionType CriterionTypeEnum { get; set; } - public List ReceiveEmailList { get; set; } - public List CopyEmailList { get; set; } - [JsonIgnore] - public string ReceiveEmailsStr { get; set; } = string.Empty; + public Guid FromUserId { get; set; } + public List ToUserIdList { get; set; } + public List CopyUserIdList { get; set; } - [JsonIgnore] - public string CopyEmailsStr { get; set; } = string.Empty; + + + //public List ReceiveEmailList { get; set; } + //public List CopyEmailList { get; set; } + + //[JsonIgnore] + //public string ReceiveEmailsStr { get; set; } = string.Empty; + + //[JsonIgnore] + //public string CopyEmailsStr { get; set; } = string.Empty; public string FromEmail { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 4c5540187..9ac53e337 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -23,9 +23,14 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _trialEmailNoticeConfigRepository; - public TrialEmailNoticeConfigService(IRepository trialEmailNoticeConfigRepository) + public IRepository _visitTaskRepository { get; } + public IRepository _trialUserRepository { get; } + + public TrialEmailNoticeConfigService(IRepository trialEmailNoticeConfigRepository, IRepository visitTaskRepository,IRepository trialUserRepository) { _trialEmailNoticeConfigRepository = trialEmailNoticeConfigRepository; + _visitTaskRepository = visitTaskRepository; + _trialUserRepository = trialUserRepository; } @@ -86,22 +91,22 @@ namespace IRaCIS.Core.Application.Service var sendEmailConfig = new SMTPEmailConfig(); - foreach (var item in emailConfig.ReceiveEmailList) - { - sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(item, item)); - } + //foreach (var item in emailConfig.ReceiveEmailList) + //{ + // sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(item, item)); + //} - foreach (var item in emailConfig.CopyEmailList) - { - if (item.Contains("@") && !string.IsNullOrEmpty(item)) - { - sendEmailConfig.CopyToMailAddressList.Add(new MimeKit.MailboxAddress(item.Trim(), item.Trim())); - } - } + //foreach (var item in emailConfig.CopyEmailList) + //{ + // if (item.Contains("@") && !string.IsNullOrEmpty(item)) + // { + // sendEmailConfig.CopyToMailAddressList.Add(new MimeKit.MailboxAddress(item.Trim(), item.Trim())); + // } + //} //邮件内容html - await FillWordTemplateAndSetEmailAsync(sendEmailConfig, businessScenarioEnum, criterionTypeEnum!); + await FillWordTemplateAndSetEmailAsync(visitTaskId, sendEmailConfig, businessScenarioEnum, criterionTypeEnum!); //邮件附件 var path = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, emailConfig.FilePath); @@ -126,7 +131,7 @@ namespace IRaCIS.Core.Application.Service - private async Task FillWordTemplateAndSetEmailAsync(SMTPEmailConfig sendEmailConfig, CommonDocumentBusinessScenario businessScenarioEnum, CriterionType criterionType) + private async Task FillWordTemplateAndSetEmailAsync(Guid visitTaskId, SMTPEmailConfig sendEmailConfig, CommonDocumentBusinessScenario businessScenarioEnum, CriterionType criterionType) { var pathToFile = _hostEnvironment.WebRootPath + Path.DirectorySeparatorChar.ToString() @@ -152,11 +157,15 @@ namespace IRaCIS.Core.Application.Service switch (criterionType) { - + case CriterionType.SelfDefine: break; case CriterionType.RECIST1Pointt1: + + + //_visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => new { t.Trial.ResearchProgramNo, t.Subject.TrialSite.TrialSiteCode, SubjectCode = t.Subject.Code, VisitEarliestScanDate = t.SourceSubjectVisit.EarliestScanDate, t.sou }) + break; case CriterionType.PCWG3: @@ -195,7 +204,7 @@ namespace IRaCIS.Core.Application.Service } - + } @@ -220,6 +229,7 @@ namespace IRaCIS.Core.Application.Service case CriterionType.SelfDefine: break; case CriterionType.RECIST1Pointt1: + break; case CriterionType.PCWG3: break; @@ -258,6 +268,8 @@ namespace IRaCIS.Core.Application.Service } + + [HttpPost] public async Task> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) { @@ -276,12 +288,57 @@ namespace IRaCIS.Core.Application.Service public async Task AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig) { - addOrEditTrialEmailNoticeConfig.ReceiveEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.ReceiveEmailList); - addOrEditTrialEmailNoticeConfig.CopyEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.CopyEmailList); + List trialEmailNoticeUsers = new List(); - var entity = await _trialEmailNoticeConfigRepository.InsertOrUpdateAsync(addOrEditTrialEmailNoticeConfig, true); - return ResponseOutput.Ok(entity.Id.ToString()); + + trialEmailNoticeUsers.Add(new TrialEmailNoticeUser() { EmailUserType = EmailUserType.From, UserId = addOrEditTrialEmailNoticeConfig.FromUserId }); + + + foreach (var item in addOrEditTrialEmailNoticeConfig.ToUserIdList) + { + trialEmailNoticeUsers.Add(new TrialEmailNoticeUser() { EmailUserType = EmailUserType.To, UserId = item }); + + } + + foreach (var item in addOrEditTrialEmailNoticeConfig.CopyUserIdList) + { + trialEmailNoticeUsers.Add(new TrialEmailNoticeUser() { EmailUserType = EmailUserType.Copy, UserId = item }); + + } + + //var entity = await _trialEmailNoticeConfigRepository.InsertOrUpdateAsync(addOrEditTrialEmailNoticeConfig); + + if (addOrEditTrialEmailNoticeConfig.Id == null) + { + + var entity = _mapper.Map(addOrEditTrialEmailNoticeConfig); + + + entity.TrialEmailNoticeUserList = trialEmailNoticeUsers; + + + await _trialEmailNoticeConfigRepository.AddAsync(entity, true); + + return ResponseOutput.Ok(entity.Id.ToString()); + + + + } + else + { + await _repository.BatchDeleteAsync(t => t.TrialEmailNoticeConfigId == addOrEditTrialEmailNoticeConfig.Id); + + + var entity = (await _trialEmailNoticeConfigRepository.Where(t => t.Id == addOrEditTrialEmailNoticeConfig.Id, true, true).Include(t => t.TrialEmailNoticeUserList).FirstOrDefaultAsync()).IfNullThrowException(); + + await _repository.AddRangeAsync(trialEmailNoticeUsers); + + await _trialEmailNoticeConfigRepository.SaveChangesAsync(); + + return ResponseOutput.Ok(); + } + } diff --git a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs index b429f86dc..dbfe62d1a 100644 --- a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs @@ -69,10 +69,17 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SystemDocumentId, c => c.Ignore()); - CreateMap(); + CreateMap() + .ForMember(d => d.TrialEmailNoticeUserList, c => c.MapFrom(t => t.TrialEmailNoticeUserList)); CreateMap(); + + CreateMap() + .ForMember(d => d.Email, c => c.MapFrom(t => t.User.EMail)) + .ForMember(d => d.RealName, c => c.MapFrom(t => t.User.FullName)) + .ForMember(d => d.UserName, c => c.MapFrom(t => t.User.UserName)); + } } diff --git a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs index 5e893cbec..ff9a048eb 100644 --- a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs +++ b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs @@ -47,6 +47,15 @@ namespace IRaCIS.Core.Domain.Share } + public enum EmailUserType + { + From =1, + + To=2, + + Copy=3 + } + public enum BasicDataTypeEnum diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 4eb7de060..133399d50 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -215,6 +215,11 @@ namespace IRaCIS.Core.Domain.Models #endregion + + [JsonIgnore] + + public Trial Trial { get; set; } + [JsonIgnore] public List ReadingTaskQuestionAnswerList { get; set; } = new List(); diff --git a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs index 8733b8fe1..e77d29ae0 100644 --- a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs +++ b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs @@ -26,15 +26,22 @@ namespace IRaCIS.Core.Domain.Models public string AuthorizationCode { get; set; } = string.Empty; - public string ReceiveEmailsStr { get; set; } = string.Empty; - public string CopyEmailsStr { get; set; } = string.Empty; + + public List TrialEmailNoticeUserList { get; set; } = new List(); - [NotMapped] - public List ReceiveEmailList => ReceiveEmailsStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t)).Select(t=>t.Trim()).ToList(); + //[Required] + //public string FromEmail { get; set; } + //public string ReceiveEmailsStr { get; set; } = string.Empty; + //public string CopyEmailsStr { get; set; } = string.Empty; + + //[NotMapped] + //public List ReceiveEmailList => ReceiveEmailsStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t)).Select(t=>t.Trim()).ToList(); + + //[NotMapped] + //public List CopyEmailList => CopyEmailsStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t=> !string.IsNullOrEmpty(t)).Select(t => t.Trim()).ToList(); + - [NotMapped] - public List CopyEmailList => CopyEmailsStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t=> !string.IsNullOrEmpty(t)).Select(t => t.Trim()).ToList(); [Required] public bool IsUrgent { get; set; } @@ -48,8 +55,7 @@ namespace IRaCIS.Core.Domain.Models [Required] public bool IsReturnRequired { get; set; } - [Required] - public string FromEmail { get; set; } + [Required] public bool IsAutoSend { get; set; } diff --git a/IRaCIS.Core.Domain/Document/TrialEmailNoticeUser.cs b/IRaCIS.Core.Domain/Document/TrialEmailNoticeUser.cs new file mode 100644 index 000000000..eb79b29e1 --- /dev/null +++ b/IRaCIS.Core.Domain/Document/TrialEmailNoticeUser.cs @@ -0,0 +1,35 @@ + +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2022-10-21 16:06:20 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +using System; +using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace IRaCIS.Core.Domain.Models +{ + /// + ///TrialEmailNoticeUser + /// + [Table("TrialEmailNoticeUser")] + public class TrialEmailNoticeUser : Entity + { + + [JsonIgnore] + public User User { get; set; } + + [JsonIgnore] + public TrialEmailNoticeConfig TrialEmailNoticeConfig { get; set; } + + + public Guid UserId { get; set; } + + + public Guid TrialEmailNoticeConfigId { get; set; } + + + public EmailUserType EmailUserType { get; set; } + } + +} diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 16b46f940..e2565cb95 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -665,6 +665,7 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet TrialEmailNoticeConfig { get; set; } + public virtual DbSet TrialEmailNoticeUser { get; set; } } diff --git a/IRaCIS.Core.Test/DbHelper.ttinclude b/IRaCIS.Core.Test/DbHelper.ttinclude index 050d882f1..6964fe06d 100644 --- a/IRaCIS.Core.Test/DbHelper.ttinclude +++ b/IRaCIS.Core.Test/DbHelper.ttinclude @@ -4,7 +4,7 @@ public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; public static readonly string DbDatabase = "IRaCIS_New_Tet"; //ַ,ƴ - public static readonly string TableName = "TrialEmailNoticeConfig"; + public static readonly string TableName = "TrialEmailNoticeUser"; //ļ service Ƿҳ } #>