using IRaCIS.Core.Application.MassTransit.Command; using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Domain; using IRaCIS.Core.Domain.BaseModel; using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; using Microsoft.Extensions.Options; using MimeKit; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IRaCIS.Core.Application.MassTransit.Consumer; /// /// CRC 提交了 通知QC进行质控 Code005,006 /// public class CRCSubmitedAndQCToAuditEventConsumer( IRepository _userRepository, IRepository _trialUseRepository, IRepository _subjectVisitRepository, IRepository _trialRepository, IRepository _readingQuestionCriterionTrialRepository, IRepository _visitTaskRepository, IRepository _dictionaryRepository, IRepository _emailNoticeConfigrepository, IOptionsMonitor systemEmailConfig) : IConsumer { private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue; public async Task Consume(ConsumeContext context) { //Console.WriteLine("发送(005,006) 【加急项目所有IQC待领取质控任务】邮件!!!"); //var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; //var subjectVisitId = context.Message.SubjectVisitId; //var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x=>x.Subject).FirstOrDefaultAsync(); //var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); //var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.IQC).ToList(); //var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == subjectVisit.TrialId); //foreach (var userinfo in userinfoList) //{ // var messageToSend = new MimeMessage(); // //发件地址 // messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); // messageToSend.To.Add(new MailboxAddress(String.Empty, userinfo.EMail)); // var companyName = isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN; // var dictionValue = await CommonEmailHelper.TranslationDictionary(new TranslationDictionaryDto() // { // DictionaryRepository = _dictionaryRepository, // IsEn_US = isEn_US, // DictionaryList = new List() // { // new DictionaryDto (){DictionaryCode= "ReadingCategory",EnumValue=subjectVisit.AuditState.GetEnumInt(), }, //审核状态 // } // }); // Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => // { // var subjectCode = subjectVisit.Subject.Code; // var topicStr = string.Format(input.topicStr, trialInfo.ResearchProgramNo, subjectCode, taskInfo.TaskBlindName); // var htmlBodyStr = string.Format( // CommonEmailHelper.ReplaceCompanyName(_systemEmailConfig, input.htmlBodyStr), // userinfo.FullName, // 用户名 {0} // trialInfo.ExperimentName, // 项目 {1} // subjectCode, // 受试者 {2} // subjectVisit.VisitName, // 访视 {3} // dictionValue[0], // 审核状态 {4} // _systemEmailConfig.SiteUrl // 链接 {5} // ); // return (topicStr, htmlBodyStr); // }; // await CommonEmailHelper.GetEmailSubejctAndHtmlInfoAndBuildAsync(_emailNoticeConfigrepository, // context.Message.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed ? EmailBusinessScenario.ReReadFromPMApproval : EmailBusinessScenario.ReReadFromIRApproval, // messageToSend, emailConfigFunc); // await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig); //} } } /// /// CRC 回复质控质疑 通知QC /// public class CRCRepliedQCChallengeEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } } /// /// QC回复 质控质疑,通知CRC /// public class QCRepliedQCChallengeEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } } /// /// CRC 回复一致性核查质疑 通知PM /// public class CRCRepliedCheckChallengeEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } } /// /// PM 一致性核查 通知CRC /// public class PMRepliedCheckChallengeEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } } /// /// 通知PM 进行一致性核查 /// public class CheckStateChangedToAuditEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } } /// /// QC 领取了质控任务 /// public class QCClaimTaskEventConsumer : IConsumer { public Task Consume(ConsumeContext context) { throw new NotImplementedException(); } }