修改医学审核
parent
788c24a6f3
commit
b84abaa0a9
|
@ -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();
|
||||
|
|
|
@ -25,7 +25,6 @@ namespace IRaCIS.Core.Application.Interfaces
|
|||
|
||||
Task<string> BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isMedicalReviewAndSuggestApplyReReading = null, EmailStoreSendMode emailStoreMode = EmailStoreSendMode.StoreLocalSend, string sendFileRelativePath="");
|
||||
|
||||
Task CommonBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? IsEnrollment, bool? IsPDConfirm);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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<TrialSiteUser>(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<TrialUser>(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<bool> DealMedicalReviewTasKGenerateAndIsSendAsync(Guid trialId, bool? isHandSend, string pdAnswer, List<Guid> taskIdList, List<Guid> minUserIdList)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
///TrialEmailNoticeConfig
|
||||
///</summary>
|
||||
[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
|
||||
{
|
||||
|
|
|
@ -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<TrialEmailNoticeConfig>(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
|
||||
}) ;
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue