Merge branch 'Test.Study' of http://192.168.3.69:3000/XCKJ/irc-netcore-api into Test.Study

Uat_Study
he 2023-08-30 11:10:47 +08:00
commit 27634b5aac
7 changed files with 19 additions and 168 deletions

View File

@ -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();

View File

@ -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);
}

View File

@ -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)

View File

@ -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();
}

View File

@ -317,6 +317,8 @@ namespace IRaCIS.Core.Application.Contracts
copy.State = TrialSiteSurveyEnum.ToSubmit;
copy.IsDeleted = false;
copy.Phone=string.Empty;
copy.UserName=string.Empty;
copy.Email = userInfo.EmailOrPhone;
copy.Id = Guid.Empty;
copy.CreateTime = DateAndTime.Now;

View File

@ -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
{

View File

@ -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
}) ;
}