项目邮件配置修改--017
parent
4338481f9f
commit
6c6b18818a
|
@ -1,4 +1,5 @@
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using DocumentFormat.OpenXml.Spreadsheet;
|
||||||
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
@ -19,10 +20,14 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
public interface IEmailSendService
|
public interface IEmailSendService
|
||||||
{
|
{
|
||||||
|
Task SendClinicalDataQuestionAsync(Guid visitTaskId, string content);
|
||||||
|
Task SendTrialImageQCTaskEmailAsync(Guid trialId);
|
||||||
|
|
||||||
|
Task SendTrialQCQuestionEmailAsync(Guid trialId);
|
||||||
|
Task SendTrialImageQuestionAsync(Guid trialId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class EmailSendService : BaseService
|
public class EmailSendService : BaseService, IEmailSendService
|
||||||
{
|
{
|
||||||
private readonly IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository;
|
private readonly IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository;
|
||||||
|
|
||||||
|
@ -41,7 +46,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task SendTrialImageQCTaskEmail(Guid trialId)
|
public async Task SendTrialImageQCTaskEmailAsync(Guid trialId)
|
||||||
{
|
{
|
||||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||||
|
|
||||||
|
@ -49,7 +54,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var userList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
var userList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||||
|
|
||||||
//判断是否任务可以领取 ,可以的话 发送邮件
|
//判断是否任务可以领取 ,可以的话 发送邮件
|
||||||
var userIdList=userList.Select(t=>t.UserId).ToList();
|
var userIdList = userList.Select(t => t.UserId).ToList();
|
||||||
|
|
||||||
foreach (var user in userList)
|
foreach (var user in userList)
|
||||||
{
|
{
|
||||||
|
@ -81,7 +86,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return (topicStr, htmlBodyStr);
|
return (topicStr, htmlBodyStr);
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCTask, topicAndHtmlFunc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +96,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task SendTrialQCQuestionEmail(Guid trialId)
|
public async Task SendTrialQCQuestionEmailAsync(Guid trialId)
|
||||||
{
|
{
|
||||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||||
|
|
||||||
|
@ -106,15 +111,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||||
var query = _trialRepository
|
var query = _trialRepository
|
||||||
.Select(t => new
|
.Select(t => new
|
||||||
{
|
{
|
||||||
ReUploadTobeDealedCount= t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
ReUploadTobeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.ReuploadEnum==QCChanllengeReuploadEnum.CRCRequestReupload).Count(),
|
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload).Count(),
|
||||||
|
|
||||||
//质疑待处理
|
//质疑待处理
|
||||||
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
|
||||||
});
|
});
|
||||||
|
|
||||||
var sendStat = await query.FirstOrDefaultAsync();
|
var sendStat = await query.FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
@ -139,7 +144,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task SendTrialImageQuestino(Guid trialId)
|
public async Task SendTrialImageQuestionAsync(Guid trialId)
|
||||||
{
|
{
|
||||||
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
var trialInfo = _repository.Where<Trial>(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstOrDefault();
|
||||||
|
|
||||||
|
@ -154,7 +159,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||||
var query = _trialRepository
|
var query = _trialRepository
|
||||||
.Select(t => new
|
.Select(t => new
|
||||||
{
|
{
|
||||||
//质疑待处理
|
//质疑待处理
|
||||||
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
||||||
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
.Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
||||||
|
@ -164,7 +169,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var sendStat = await query.FirstOrDefaultAsync();
|
var sendStat = await query.FirstOrDefaultAsync();
|
||||||
|
|
||||||
//当前人
|
//当前人
|
||||||
if (sendStat != null && (sendStat.ToBeDealedCount > 0 ))
|
if (sendStat != null && (sendStat.ToBeDealedCount > 0))
|
||||||
{
|
{
|
||||||
|
|
||||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
||||||
|
@ -174,16 +179,26 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return (topicStr, htmlBodyStr);
|
return (topicStr, htmlBodyStr);
|
||||||
};
|
};
|
||||||
|
|
||||||
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.ImageQuestion, topicAndHtmlFunc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//临床数据质询
|
//临床数据质询
|
||||||
public async Task SendClinicalDataQuestion(Guid trialId,Guid visitTaskId,string content)
|
public async Task SendClinicalDataQuestionAsync(Guid visitTaskId, string content)
|
||||||
{
|
{
|
||||||
|
var info = await _repository.Where<VisitTask>(t => t.Id == visitTaskId, ignoreQueryFilters: true).Select(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.SourceSubjectVisit.VisitName, t.Subject.Code }).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
||||||
|
{
|
||||||
|
var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, info.ResearchProgramNo,info.Code,info.VisitName);
|
||||||
|
var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content);
|
||||||
|
return (topicStr, htmlBodyStr);
|
||||||
|
};
|
||||||
|
|
||||||
|
await SendTrialEmailAsync(info.TrialId, CommonDocumentBusinessScenario.ClinicalDataQuestion, topicAndHtmlFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue