From b6459d2f9f1ef78a8aa339a7d1b8a8dc1d9a9895 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 27 Sep 2024 13:58:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86trigger=20=E5=88=B0=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/Progranm.cs | 4 +- IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 4 +- .../IRaCIS.Core.Application.csproj | 4 + .../IRaCIS.Core.Application.xml | 94 ++++++++++++------- .../Consumer/AddEntiryTriggerConsumer.cs | 26 +++++ .../AddSubjectTriggerConsumer.cs | 8 ++ .../AddCRCCliniaclDataTrigger.cs | 0 .../ChallengeStateTrigger.cs | 0 .../SubjectStateTrigger.cs | 0 .../SubjectVisitFinalVisitTrigger.cs | 0 ...askIsFrontTaskNeedSignButNotSignTrigger.cs | 0 .../AddSubjectTrigger.cs | 1 - .../AddlTrialUserTrigger.cs | 0 .../SubjectVisitCheckPassedTrigger.cs | 0 .../TableQuestionRowTrigger.cs | 0 .../TrialCriterionSignTrigger.cs | 0 .../{ => BeforeSaveTrigger}/UserLogTrigger.cs | 0 ...oreTrigger.cs => JudgeVisitTaskTrigger.cs} | 2 +- ...gger.cs => SubjectVisitScanDateTrigger.cs} | 14 ++- .../_DomainCommand/AddTriggerCommand.cs | 11 +++ .../Interceptor/AddDomainExt.cs | 35 ++++--- .../Interceptor/AuditEntityInterceptor.cs | 39 ++++---- 22 files changed, 170 insertions(+), 72 deletions(-) create mode 100644 IRaCIS.Core.Application/MassTransit/Consumer/AddEntiryTriggerConsumer.cs rename IRaCIS.Core.Application/MassTransit/Consumer/{ => NeedVerify}/AddSubjectTriggerConsumer.cs (79%) rename IRaCIS.Core.Application/Triggers/{ => AfterSaveTrigger}/AddCRCCliniaclDataTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => AfterSaveTrigger}/ChallengeStateTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => AfterSaveTrigger}/SubjectStateTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => AfterSaveTrigger}/SubjectVisitFinalVisitTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => AfterSaveTrigger}/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/AddSubjectTrigger.cs (99%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/AddlTrialUserTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/SubjectVisitCheckPassedTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/TableQuestionRowTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/TrialCriterionSignTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{ => BeforeSaveTrigger}/UserLogTrigger.cs (100%) rename IRaCIS.Core.Application/Triggers/{VisitTaskIbeforeTrigger.cs => JudgeVisitTaskTrigger.cs} (98%) rename IRaCIS.Core.Application/Triggers/{SubjectVisitTrigger.cs => SubjectVisitScanDateTrigger.cs} (94%) create mode 100644 IRaCIS.Core.Domain/_DomainCommand/AddTriggerCommand.cs diff --git a/IRaCIS.Core.API/Progranm.cs b/IRaCIS.Core.API/Progranm.cs index 3a017e98b..e90cbe6c8 100644 --- a/IRaCIS.Core.API/Progranm.cs +++ b/IRaCIS.Core.API/Progranm.cs @@ -34,6 +34,7 @@ using Microsoft.AspNetCore.Diagnostics; using IRaCIS.Core.Application.MassTransit.Command; using IRaCIS.Core.Application.MassTransit.Consumer; using DocumentFormat.OpenXml.InkML; +using IRaCIS.Core.Domain; AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); @@ -149,13 +150,14 @@ builder.Services.AddJWTAuthSetup(_configuration); builder.Services.AddMediator(cfg => { cfg.AddConsumer(); + cfg.AddConsumer(); }); // 添加 MassTransit 和 InMemory 传输 builder.Services.AddMassTransit(cfg => { // 注册消费者 - cfg.AddConsumer(); // 替换为你的消费者类 + //cfg.AddConsumer(); // 替换为你的消费者类 // 使用 InMemory 作为消息传递机制 cfg.UsingInMemory((context, cfg) => diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index 176ea178c..11ab31092 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -81,12 +81,12 @@ namespace IRaCIS.Core.API triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); - triggerOptions.AddTrigger(); + triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); //triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); - triggerOptions.AddTrigger(); + triggerOptions.AddTrigger(); triggerOptions.AddTrigger(); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 5d385a0b9..d495031f6 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -85,4 +85,8 @@ + + + + diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index df93ce8e4..7c31fe338 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -12648,6 +12648,24 @@ 构造函数注入 + + + 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃 + + + + + + + + + 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃 + + + + + + TaskAllocationRuleView 列表视图模型 @@ -16079,16 +16097,6 @@ - - - 添加访视计划 要给改项目下的所有Subject 添加该访视 - - - - - 添加访视计划 要给改项目下的所有Subject 添加该访视 - - @@ -16099,16 +16107,6 @@ - - - 处理 访视 末次评估 会影响Subject 状态 - - - - - 处理 访视 末次评估 会影响Subject 状态 - - 处理 访视 末次评估 会影响Subject 状态 @@ -16126,21 +16124,35 @@ - + - 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 + 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 - + - 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 + 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 - - 处理提交状态 + + + 添加访视计划 要给改项目下的所有Subject 添加该访视 + - - 处理拍片日期 + + + 添加访视计划 要给改项目下的所有Subject 添加该访视 + + + + + 处理 访视 末次评估 会影响Subject 状态 + + + + + 处理 访视 末次评估 会影响Subject 状态 + @@ -16152,7 +16164,7 @@ 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 - + 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 @@ -16162,7 +16174,7 @@ - + 比如 两个任务产生了裁判,然后其中一个人申请了重阅,影响了裁判,需要清理之前任务的上裁判id @@ -16173,16 +16185,30 @@ - + - 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 + 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 - + - 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 + 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 + + + 处理提交状态 + + + + + + + 处理访视拍片日期 + + + + Id(阅片期Id 或者 访视ID) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/AddEntiryTriggerConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/AddEntiryTriggerConsumer.cs new file mode 100644 index 000000000..899759d74 --- /dev/null +++ b/IRaCIS.Core.Application/MassTransit/Consumer/AddEntiryTriggerConsumer.cs @@ -0,0 +1,26 @@ + + +using AutoMapper; +using IP2Region.Net.Abstractions; +using IRaCIS.Core.Domain; +using IRaCIS.Core.Domain.Models; +using MassTransit; + +namespace IRaCIS.Core.Application.MassTransit.Consumer; + + +//国家|区域|省份|城市|ISP 缺省的地域信息默认是0 +//0|0|0|内网IP|内网IP +// 中国|0|湖北省|武汉市|电信 +public class AddUserLogTriggerConsumer(ISearcher _searcher) : IConsumer +{ + public async Task Consume(ConsumeContext context) + { + var userLog = context.Message.UserLog; + + var ipinfo = _searcher.Search(userLog.IP); + + userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3)); + + } +} diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/AddSubjectTriggerConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/NeedVerify/AddSubjectTriggerConsumer.cs similarity index 79% rename from IRaCIS.Core.Application/MassTransit/Consumer/AddSubjectTriggerConsumer.cs rename to IRaCIS.Core.Application/MassTransit/Consumer/NeedVerify/AddSubjectTriggerConsumer.cs index 646a0b38d..3e9ef7abc 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/AddSubjectTriggerConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/NeedVerify/AddSubjectTriggerConsumer.cs @@ -6,6 +6,13 @@ using MassTransit; namespace IRaCIS.Core.Application.MassTransit.Consumer; +/// +/// 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃 +/// +/// +/// +/// +/// public class AddSubjectTriggerConsumer(IRepository _subjectVisitRepository, IRepository _visitStageRepository, @@ -34,5 +41,6 @@ public class AddSubjectTriggerConsumer(IRepository _subjectVisitRe }); await _subjectVisitRepository.AddRangeAsync(svList); + await _subjectVisitRepository.SaveChangesAsync(); } } diff --git a/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/AddCRCCliniaclDataTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/AddCRCCliniaclDataTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/ChallengeStateTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/ChallengeStateTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/SubjectStateTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/SubjectStateTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/SubjectVisitFinalVisitTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/SubjectVisitFinalVisitTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs rename to IRaCIS.Core.Application/Triggers/AfterSaveTrigger/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/AddSubjectTrigger.cs similarity index 99% rename from IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/AddSubjectTrigger.cs index 5452498e2..d9b4cd2dd 100644 --- a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/AddSubjectTrigger.cs @@ -9,7 +9,6 @@ namespace IRaCIS.Core.Application.Triggers /// public class AddSubjectTrigger( IRepository _subjectVisitRepository, - IRepository _visitStageRepository, IRepository _trialRepository, IMapper _mapper) : IBeforeSaveTrigger diff --git a/IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/AddlTrialUserTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/AddlTrialUserTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/SubjectVisitCheckPassedTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/SubjectVisitCheckPassedTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TableQuestionRowTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TableQuestionRowTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TrialCriterionSignTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/TrialCriterionSignTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/UserLogTrigger.cs b/IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs similarity index 100% rename from IRaCIS.Core.Application/Triggers/UserLogTrigger.cs rename to IRaCIS.Core.Application/Triggers/BeforeSaveTrigger/UserLogTrigger.cs diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs b/IRaCIS.Core.Application/Triggers/JudgeVisitTaskTrigger.cs similarity index 98% rename from IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs rename to IRaCIS.Core.Application/Triggers/JudgeVisitTaskTrigger.cs index 2a86e0a82..e4c907da0 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/JudgeVisitTaskTrigger.cs @@ -4,7 +4,7 @@ using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Triggers { - public class VisitTaskIbeforeTrigger( + public class JudgeVisitTaskTrigger( IRepository _visitTaskRepository, IRepository _readingJudgeInfoRepository) : IBeforeSaveTrigger, IAfterSaveTrigger { diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitScanDateTrigger.cs similarity index 94% rename from IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs rename to IRaCIS.Core.Application/Triggers/SubjectVisitScanDateTrigger.cs index 66dfd2ca9..977643b74 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitScanDateTrigger.cs @@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Triggers /// /// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 /// - public class SubjectVisitTrigger( + public class SubjectVisitScanDateTrigger( IRepository _subjectVisitRepository, IClinicalAnswerService _iClinicalAnswerService, IRepository _dicomSeriesRepository, @@ -106,7 +106,11 @@ namespace IRaCIS.Core.Application.Triggers } - /// 处理提交状态 + /// + /// 处理提交状态 + /// + /// + /// public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId) { @@ -127,7 +131,11 @@ namespace IRaCIS.Core.Application.Triggers } } - /// 处理拍片日期 + /// + /// 处理访视拍片日期 + /// + /// + /// private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId) { var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new diff --git a/IRaCIS.Core.Domain/_DomainCommand/AddTriggerCommand.cs b/IRaCIS.Core.Domain/_DomainCommand/AddTriggerCommand.cs new file mode 100644 index 000000000..c693dbca1 --- /dev/null +++ b/IRaCIS.Core.Domain/_DomainCommand/AddTriggerCommand.cs @@ -0,0 +1,11 @@ + +using IRaCIS.Core.Domain.BaseModel; +using IRaCIS.Core.Domain.Models; + +namespace IRaCIS.Core.Domain; + + +public class AddUserLogTriggerCommand : DomainCommand +{ + public UserLog UserLog { get; set; } +} diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs index 0d724746a..f9b4b1f67 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AddDomainExt.cs @@ -23,19 +23,32 @@ public static class DBContext_Ext { var changeTracker = context.ChangeTracker; - // 遍历 ChangeTracker 中的实体 - foreach (var entry in changeTracker.Entries()) - { - var subject = entry.Entity; + //遍历 ChangeTracker 中的实体 + //foreach (var entry in changeTracker.Entries()) + //{ + // var userLog = entry.Entity; - if (entry.State == EntityState.Added) - { - // 受试者添加 触发访视自动添加 - var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId }; + // if (entry.State == EntityState.Added) + // { + // // 受试者添加 触发访视自动添加 + // var addCommand = new AddUserLogTriggerCommand { UserLog=userLog }; - subject.AddDomainCommand(addedEvent); - } - } + // userLog.AddDomainCommand(addCommand); + // } + //} + + //foreach (var entry in changeTracker.Entries()) + //{ + // var subject = entry.Entity; + + // if (entry.State == EntityState.Added) + // { + // // 受试者添加 触发访视自动添加 + // var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId }; + + // subject.AddDomainCommand(addedEvent); + // } + //} } diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs index 68d3242a5..1b6b389c3 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs @@ -3,6 +3,7 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; +using MassTransit.Mediator; using MassTransit.Transports; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; @@ -13,7 +14,7 @@ namespace IRaCIS.Core.Infra.EFCore; public class AuditEntityInterceptor(IUserInfo _userInfo, ILogger _logger - //, IBus _bus + , IMediator _mediator ) : SaveChangesInterceptor { @@ -30,7 +31,7 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, //领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑) eventData.Context.AddDomainCommands(); - //DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult(); + DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult(); //领域事件 eventData.Context.AddDomainEvents(); @@ -230,26 +231,26 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, #region 领域命令分发 - //private async Task DispatchDomainCommands(DbContext? context) - //{ - // if (context == null) return; + private async Task DispatchDomainCommands(DbContext? context) + { + if (context == null) return; - // var entities = context.ChangeTracker - // .Entries() - // .Where(e => e.Entity.DomainCommands.Any()) - // .Select(e => e.Entity) - // .ToList(); + var entities = context.ChangeTracker + .Entries() + .Where(e => e.Entity.DomainCommands.Any()) + .Select(e => e.Entity) + .ToList(); - // var domainCommands = entities - // .SelectMany(e => e.DomainCommands) - // .ToList(); + var domainCommands = entities + .SelectMany(e => e.DomainCommands) + .ToList(); - // entities.ForEach(e => e.ClearDomainCommands()); + entities.ForEach(e => e.ClearDomainCommands()); - // foreach (var domainCommand in domainCommands) - // { - // await _bus.Send(domainCommand.GetType(), domainCommand); - // } - //} + foreach (var domainCommand in domainCommands) + { + await _mediator.Send(domainCommand.GetType(), domainCommand); + } + } #endregion } \ No newline at end of file