项目邮件配置修改--015

Uat_Study
hang 2023-08-22 14:54:30 +08:00
parent a4e26f9895
commit e05f43b0b8
4 changed files with 47 additions and 17 deletions

View File

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

View File

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

View File

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

View File

@ -44,6 +44,14 @@ namespace IRaCIS.Core.Domain.Share
Trial=3,
Reviewer=4,
QCTask=5,
QCQuestion=6,
ImageQuestion = 7,
ClinicalDataQuestion=8,
}