项目邮件配置修改--015
parent
a4e26f9895
commit
e05f43b0b8
|
@ -5,6 +5,7 @@ using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using MailKit;
|
using MailKit;
|
||||||
|
using Microsoft.VisualBasic;
|
||||||
using MimeKit;
|
using MimeKit;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -38,23 +39,25 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
public async Task TrialImageQCTaskEmail(Guid trialId)
|
public async Task TrialImageQCTaskEmail(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();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//找到 该项目的IQC 用户Id
|
//找到 该项目的IQC 用户Id
|
||||||
var userIdList = await _repository.Where<TrialUser>(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => t.UserId).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();
|
||||||
|
|
||||||
//判断是否任务可以领取 ,可以的话 发送邮件
|
//判断是否任务可以领取 ,可以的话 发送邮件
|
||||||
|
|
||||||
foreach (var userId in userIdList)
|
foreach (var user in userList)
|
||||||
{
|
{
|
||||||
|
var userId = user.UserId;
|
||||||
|
|
||||||
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
//过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id
|
||||||
var query = _trialRepository.Where(t=>t.Id==trialId)
|
var query = _trialRepository.Where(t => t.Id == trialId)
|
||||||
.Where(t => t.TrialUserList.Any(t => t.UserId == userId))
|
.Where(t => t.TrialUserList.Any(t => t.UserId == userId))
|
||||||
.Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit)
|
.Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit)
|
||||||
.Select(t => new
|
.Select(t => new
|
||||||
{
|
{
|
||||||
//待领取量
|
//待领取量
|
||||||
ToBeClaimedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != userId && u.ReviewAuditUserId == null))).Count(),
|
ToBeClaimedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != userId && u.ReviewAuditUserId == null))).Count(),
|
||||||
|
|
||||||
|
@ -63,26 +66,28 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var sendStat= await query.FirstOrDefaultAsync();
|
var sendStat = await query.FirstOrDefaultAsync();
|
||||||
|
|
||||||
//当前人 有待领取的或者有待审核的才发邮件
|
//当前人 有待领取的或者有待审核的才发邮件
|
||||||
if (sendStat != null && (sendStat.ToBeClaimedCount > 0 || sendStat.ToBeReviewedCount>0))
|
if (sendStat != null && (sendStat.ToBeClaimedCount > 0 || sendStat.ToBeReviewedCount > 0))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc = trialEmailConfig =>
|
||||||
|
{
|
||||||
|
var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||||
|
var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeClaimedCount, sendStat.ToBeReviewedCount);
|
||||||
|
return (topicStr, htmlBodyStr);
|
||||||
|
};
|
||||||
|
|
||||||
|
await SendTrialEmailAsync(trialId, CommonDocumentBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public async Task SendTrialEmail(Guid trialId, CommonDocumentBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc, Guid? trialReadingCriterionId, Guid? subjectId)
|
public async Task SendTrialEmailAsync(Guid trialId, CommonDocumentBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr)> topicAndHtmlFunc, Guid? trialReadingCriterionId = null, Guid? subjectId = null)
|
||||||
{
|
{
|
||||||
//找到配置
|
//找到配置
|
||||||
var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true)
|
var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true)
|
||||||
|
|
|
@ -1519,9 +1519,16 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialId"></param>
|
/// <param name="trialId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<List<Guid>> GetTrialUserIdSelectList(Guid trialId)
|
public async Task<List<TrialSelectUser>> GetTrialUserIdSelectList(Guid trialId)
|
||||||
{
|
{
|
||||||
var query = _trialUserRepository.Where(t => t.TrialId == trialId, false, true).IgnoreQueryFilters().Select(t => t.UserId).Distinct();
|
var query = _trialUserRepository.Where(t => t.TrialId == trialId, false, true).IgnoreQueryFilters()
|
||||||
|
.Select(t => new TrialSelectUser()
|
||||||
|
{
|
||||||
|
UserId = t.UserId,
|
||||||
|
UserName = t.User.UserName,
|
||||||
|
RealName = t.User.FullName,
|
||||||
|
UserTypeEnum = t.User.UserTypeEnum
|
||||||
|
}).Distinct();
|
||||||
|
|
||||||
return await query.ToListAsync();
|
return await query.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,16 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class TrialSelectUser
|
||||||
|
{
|
||||||
|
public Guid UserId { get; set; }
|
||||||
|
|
||||||
|
public string UserName { get; set; }
|
||||||
|
|
||||||
|
public string RealName { get; set; }
|
||||||
|
|
||||||
|
public UserTypeEnum UserTypeEnum { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class TrialUserType
|
public class TrialUserType
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,6 +44,14 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
Trial=3,
|
Trial=3,
|
||||||
|
|
||||||
Reviewer=4,
|
Reviewer=4,
|
||||||
|
|
||||||
|
QCTask=5,
|
||||||
|
|
||||||
|
QCQuestion=6,
|
||||||
|
|
||||||
|
ImageQuestion = 7,
|
||||||
|
|
||||||
|
ClinicalDataQuestion=8,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue