修改接口

This commit is contained in:
2022-10-21 17:07:03 +08:00
parent b76969ad20
commit 15fd8109c3
9 changed files with 194 additions and 36 deletions
@@ -22,8 +22,39 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; }
public List<EmailUserInfoDto> TrialEmailNoticeUserList { get; set; }
public new Guid FromUserId => TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.From).Select(t => t.UserId).FirstOrDefault();
public new List<Guid> ToUserIdList => TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserId).ToList();
public new List<Guid> 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; }
}
///<summary>TrialEmailNoticeConfigQuery 列表查询参数模型</summary>
public class TrialEmailNoticeConfigQuery
{
@@ -51,14 +82,21 @@ namespace IRaCIS.Core.Application.ViewModel
public CriterionType CriterionTypeEnum { get; set; }
public List<string> ReceiveEmailList { get; set; }
public List<string> CopyEmailList { get; set; }
[JsonIgnore]
public string ReceiveEmailsStr { get; set; } = string.Empty;
public Guid FromUserId { get; set; }
public List<Guid> ToUserIdList { get; set; }
public List<Guid> CopyUserIdList { get; set; }
[JsonIgnore]
public string CopyEmailsStr { get; set; } = string.Empty;
//public List<string> ReceiveEmailList { get; set; }
//public List<string> 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;
@@ -23,9 +23,14 @@ namespace IRaCIS.Core.Application.Service
private readonly IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository;
public TrialEmailNoticeConfigService(IRepository<TrialEmailNoticeConfig> trialEmailNoticeConfigRepository)
public IRepository<VisitTask> _visitTaskRepository { get; }
public IRepository<TrialUser> _trialUserRepository { get; }
public TrialEmailNoticeConfigService(IRepository<TrialEmailNoticeConfig> trialEmailNoticeConfigRepository, IRepository<VisitTask> visitTaskRepository,IRepository<TrialUser> 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<List<TrialEmailNoticeConfigView>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery)
{
@@ -276,12 +288,57 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig)
{
addOrEditTrialEmailNoticeConfig.ReceiveEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.ReceiveEmailList);
addOrEditTrialEmailNoticeConfig.CopyEmailsStr = String.Join('|', addOrEditTrialEmailNoticeConfig.CopyEmailList);
List<TrialEmailNoticeUser> trialEmailNoticeUsers = new List<TrialEmailNoticeUser>();
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<TrialEmailNoticeConfig>(addOrEditTrialEmailNoticeConfig);
entity.TrialEmailNoticeUserList = trialEmailNoticeUsers;
await _trialEmailNoticeConfigRepository.AddAsync(entity, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
else
{
await _repository.BatchDeleteAsync<TrialEmailNoticeUser>(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();
}
}
@@ -69,10 +69,17 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.SystemDocumentId, c => c.Ignore());
CreateMap<TrialEmailNoticeConfig, TrialEmailNoticeConfigView>();
CreateMap<TrialEmailNoticeConfig, TrialEmailNoticeConfigView>()
.ForMember(d => d.TrialEmailNoticeUserList, c => c.MapFrom(t => t.TrialEmailNoticeUserList));
CreateMap<TrialEmailNoticeConfigAddOrEdit, TrialEmailNoticeConfig>();
CreateMap<TrialEmailNoticeUser, EmailUserInfoDto>()
.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));
}
}