From 3ed136b00fd8ceafb6fb2a8d335a828115d91b5e Mon Sep 17 00:00:00 2001 From: Cesar De la Torre Date: Sat, 18 Mar 2017 11:44:18 -0700 Subject: [PATCH] Domain Event Handlers are now grouped by Domain Events, as any Domain Event could have 'n' handlers related. --- ...yerAndPaymentMethodVerifiedDomainEventHandler.cs} | 10 +++++----- ...ilToCustomerWhenOrderStartedDomainEventHandler.cs | 12 ++++++++++++ ...erAggregateWhenOrderStartedDomainEventHandler.cs} | 8 ++++---- .../Infrastructure/AutofacModules/MediatorModule.cs | 4 ++-- .../Infrastructure/Middlewares/FailingMiddleware.cs | 1 - .../Ordering/Ordering.API/Ordering.API.csproj | 4 ++++ .../AggregatesModel/BuyerAggregate/Buyer.cs | 4 ++-- .../Events/BuyerPaymentMethodVerifiedDomainEvent.cs | 4 ++-- 8 files changed, 31 insertions(+), 16 deletions(-) rename src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/{BuyerPaymentMethodVerifiedDomainEventHandler.cs => BuyerAndPaymentMethodVerified/UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler.cs} (70%) create mode 100644 src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/SendEmailToCustomerWhenOrderStartedDomainEventHandler.cs rename src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/{OrderStartedDomainEventHandler.cs => OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs} (74%) diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerPaymentMethodVerifiedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerAndPaymentMethodVerified/UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler.cs similarity index 70% rename from src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerPaymentMethodVerifiedDomainEventHandler.cs rename to src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerAndPaymentMethodVerified/UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler.cs index 70360ce32..ffcd4fb74 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerPaymentMethodVerifiedDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerAndPaymentMethodVerified/UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler.cs @@ -5,13 +5,13 @@ using Ordering.Domain.Events; using System; using System.Threading.Tasks; -namespace Ordering.API.Application.DomainEventHandlers +namespace Ordering.API.Application.DomainEventHandlers.BuyerAndPaymentMethodVerified { - public class BuyerPaymentMethodVerifiedDomainEventHandler : IAsyncNotificationHandler + public class UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler : IAsyncNotificationHandler { private readonly IOrderRepository _orderRepository; private readonly ILoggerFactory _logger; - public BuyerPaymentMethodVerifiedDomainEventHandler(IOrderRepository orderRepository, ILoggerFactory logger) + public UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler(IOrderRepository orderRepository, ILoggerFactory logger) { _orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -20,7 +20,7 @@ namespace Ordering.API.Application.DomainEventHandlers // Domain Logic comment: // When the Buyer and Buyer's payment method have been created or verified that they existed, // then we can update the original Order with the BuyerId and PaymentId (foreign keys) - public async Task Handle(BuyerPaymentMethodVerifiedDomainEvent buyerPaymentMethodVerifiedEvent) + public async Task Handle(BuyerAndPaymentMethodVerifiedDomainEvent buyerPaymentMethodVerifiedEvent) { var orderToUpdate = await _orderRepository.GetAsync(buyerPaymentMethodVerifiedEvent.OrderId); orderToUpdate.SetBuyerId(buyerPaymentMethodVerifiedEvent.Buyer.Id); @@ -29,7 +29,7 @@ namespace Ordering.API.Application.DomainEventHandlers await _orderRepository.UnitOfWork .SaveEntitiesAsync(); - _logger.CreateLogger(nameof(BuyerPaymentMethodVerifiedDomainEventHandler)) + _logger.CreateLogger(nameof(UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler)) .LogTrace($"Order with Id: {buyerPaymentMethodVerifiedEvent.OrderId} has been successfully updated with a payment method id: { buyerPaymentMethodVerifiedEvent.Payment.Id }"); } } diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/SendEmailToCustomerWhenOrderStartedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/SendEmailToCustomerWhenOrderStartedDomainEventHandler.cs new file mode 100644 index 000000000..1c6aaccd3 --- /dev/null +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/SendEmailToCustomerWhenOrderStartedDomainEventHandler.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent +{ + public class SendEmailToCustomerWhenOrderStartedDomainEventHandler + { + //TO DO + } +} diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs similarity index 74% rename from src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedDomainEventHandler.cs rename to src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs index 249976f0c..e59c66578 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs @@ -6,15 +6,15 @@ using Ordering.Domain.Events; using System; using System.Threading.Tasks; -namespace Ordering.API.Application.DomainEventHandlers +namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent { - public class OrderStartedDomainEventHandler : IAsyncNotificationHandler + public class ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler : IAsyncNotificationHandler { private readonly ILoggerFactory _logger; private readonly IBuyerRepository _buyerRepository; private readonly IIdentityService _identityService; - public OrderStartedDomainEventHandler(ILoggerFactory logger, IBuyerRepository buyerRepository, IIdentityService identityService) + public ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler(ILoggerFactory logger, IBuyerRepository buyerRepository, IIdentityService identityService) { _buyerRepository = buyerRepository ?? throw new ArgumentNullException(nameof(buyerRepository)); _identityService = identityService ?? throw new ArgumentNullException(nameof(identityService)); @@ -46,7 +46,7 @@ namespace Ordering.API.Application.DomainEventHandlers await _buyerRepository.UnitOfWork .SaveEntitiesAsync(); - _logger.CreateLogger(nameof(OrderStartedDomainEventHandler)).LogTrace($"A new payment method has been successfully added for orderId: {orderNotification.Order.Id}."); + _logger.CreateLogger(nameof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler)).LogTrace($"A new payment method has been successfully added for orderId: {orderNotification.Order.Id}."); } } diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs b/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs index 0f0f8b098..353733df3 100644 --- a/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs +++ b/src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs @@ -3,7 +3,7 @@ using Autofac.Core; using MediatR; using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Decorators; -using Ordering.API.Application.DomainEventHandlers; +using Ordering.API.Application.DomainEventHandlers.OrderStartedEvent; using Ordering.Domain.Events; using System.Collections.Generic; using System.Linq; @@ -24,7 +24,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Autof .Select(i => new KeyedService("IAsyncRequestHandler", i))); builder - .RegisterAssemblyTypes(typeof(OrderStartedDomainEventHandler).GetTypeInfo().Assembly) + .RegisterAssemblyTypes(typeof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler).GetTypeInfo().Assembly) .Where(t => t.IsClosedTypeOf(typeof(IAsyncNotificationHandler<>))) .AsImplementedInterfaces(); diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/Middlewares/FailingMiddleware.cs b/src/Services/Ordering/Ordering.API/Infrastructure/Middlewares/FailingMiddleware.cs index 0206eaa38..2c82547e2 100644 --- a/src/Services/Ordering/Ordering.API/Infrastructure/Middlewares/FailingMiddleware.cs +++ b/src/Services/Ordering/Ordering.API/Infrastructure/Middlewares/FailingMiddleware.cs @@ -41,7 +41,6 @@ namespace Ordering.API.Infrastructure.Middlewares private async Task ProcessConfigRequest(HttpContext context) { - int i = 0; var enable = context.Request.Query.Keys.Any(k => k == "enable"); var disable = context.Request.Query.Keys.Any(k => k == "disable"); diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj index ce710c6a0..d0102c19f 100644 --- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj +++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj @@ -58,6 +58,10 @@ + + + + Always diff --git a/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs b/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs index 689122189..84040d8a1 100644 --- a/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs +++ b/src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs @@ -33,7 +33,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.B if (existingPayment != null) { - AddDomainEvent(new BuyerPaymentMethodVerifiedDomainEvent(this, existingPayment, orderId)); + AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, existingPayment, orderId)); return existingPayment; } else @@ -41,7 +41,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.B var payment = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); _paymentMethods.Add(payment); - AddDomainEvent(new BuyerPaymentMethodVerifiedDomainEvent(this, payment, orderId)); + AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, payment, orderId)); return payment; } } diff --git a/src/Services/Ordering/Ordering.Domain/Events/BuyerPaymentMethodVerifiedDomainEvent.cs b/src/Services/Ordering/Ordering.Domain/Events/BuyerPaymentMethodVerifiedDomainEvent.cs index 3a3a00a0a..86c828f7c 100644 --- a/src/Services/Ordering/Ordering.Domain/Events/BuyerPaymentMethodVerifiedDomainEvent.cs +++ b/src/Services/Ordering/Ordering.Domain/Events/BuyerPaymentMethodVerifiedDomainEvent.cs @@ -6,14 +6,14 @@ using System.Text; namespace Ordering.Domain.Events { - public class BuyerPaymentMethodVerifiedDomainEvent + public class BuyerAndPaymentMethodVerifiedDomainEvent : IAsyncNotification { public Buyer Buyer { get; private set; } public PaymentMethod Payment { get; private set; } public int OrderId { get; private set; } - public BuyerPaymentMethodVerifiedDomainEvent(Buyer buyer, PaymentMethod payment, int orderId) + public BuyerAndPaymentMethodVerifiedDomainEvent(Buyer buyer, PaymentMethod payment, int orderId) { Buyer = buyer; Payment = payment;