项目邮件配置修改--015
parent
a4e26f9895
commit
e05f43b0b8
|
@ -5,6 +5,7 @@ using IRaCIS.Core.Domain.Models;
|
|||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using MailKit;
|
||||
using Microsoft.VisualBasic;
|
||||
using MimeKit;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -38,19 +39,21 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
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
|
||||
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
|
||||
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.QCProcessEnum != TrialQCProcess.NotAudit)
|
||||
.Select(t => new
|
||||
|
@ -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)
|
||||
|
|
|
@ -1519,9 +1519,16 @@ namespace IRaCIS.Core.Application.Service
|
|||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -44,6 +44,14 @@ namespace IRaCIS.Core.Domain.Share
|
|||
Trial=3,
|
||||
|
||||
Reviewer=4,
|
||||
|
||||
QCTask=5,
|
||||
|
||||
QCQuestion=6,
|
||||
|
||||
ImageQuestion = 7,
|
||||
|
||||
ClinicalDataQuestion=8,
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue