Skip to content

Commit 3ed136b

Browse files
Domain Event Handlers are now grouped by Domain Events, as any Domain Event could have 'n' handlers related.
1 parent c7e3174 commit 3ed136b

8 files changed

Lines changed: 31 additions & 16 deletions

File tree

src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerPaymentMethodVerifiedDomainEventHandler.cs renamed to src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/BuyerAndPaymentMethodVerified/UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
using System;
66
using System.Threading.Tasks;
77

8-
namespace Ordering.API.Application.DomainEventHandlers
8+
namespace Ordering.API.Application.DomainEventHandlers.BuyerAndPaymentMethodVerified
99
{
10-
public class BuyerPaymentMethodVerifiedDomainEventHandler : IAsyncNotificationHandler<BuyerPaymentMethodVerifiedDomainEvent>
10+
public class UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler : IAsyncNotificationHandler<BuyerAndPaymentMethodVerifiedDomainEvent>
1111
{
1212
private readonly IOrderRepository<Order> _orderRepository;
1313
private readonly ILoggerFactory _logger;
14-
public BuyerPaymentMethodVerifiedDomainEventHandler(IOrderRepository<Order> orderRepository, ILoggerFactory logger)
14+
public UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler(IOrderRepository<Order> orderRepository, ILoggerFactory logger)
1515
{
1616
_orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
1717
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
@@ -20,7 +20,7 @@ public BuyerPaymentMethodVerifiedDomainEventHandler(IOrderRepository<Order> orde
2020
// Domain Logic comment:
2121
// When the Buyer and Buyer's payment method have been created or verified that they existed,
2222
// then we can update the original Order with the BuyerId and PaymentId (foreign keys)
23-
public async Task Handle(BuyerPaymentMethodVerifiedDomainEvent buyerPaymentMethodVerifiedEvent)
23+
public async Task Handle(BuyerAndPaymentMethodVerifiedDomainEvent buyerPaymentMethodVerifiedEvent)
2424
{
2525
var orderToUpdate = await _orderRepository.GetAsync(buyerPaymentMethodVerifiedEvent.OrderId);
2626
orderToUpdate.SetBuyerId(buyerPaymentMethodVerifiedEvent.Buyer.Id);
@@ -29,7 +29,7 @@ public async Task Handle(BuyerPaymentMethodVerifiedDomainEvent buyerPaymentMetho
2929
await _orderRepository.UnitOfWork
3030
.SaveEntitiesAsync();
3131

32-
_logger.CreateLogger(nameof(BuyerPaymentMethodVerifiedDomainEventHandler))
32+
_logger.CreateLogger(nameof(UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler))
3333
.LogTrace($"Order with Id: {buyerPaymentMethodVerifiedEvent.OrderId} has been successfully updated with a payment method id: { buyerPaymentMethodVerifiedEvent.Payment.Id }");
3434
}
3535
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
6+
namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent
7+
{
8+
public class SendEmailToCustomerWhenOrderStartedDomainEventHandler
9+
{
10+
//TO DO
11+
}
12+
}

src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedDomainEventHandler.cs renamed to src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
using System;
77
using System.Threading.Tasks;
88

9-
namespace Ordering.API.Application.DomainEventHandlers
9+
namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent
1010
{
11-
public class OrderStartedDomainEventHandler : IAsyncNotificationHandler<OrderStartedDomainEvent>
11+
public class ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler : IAsyncNotificationHandler<OrderStartedDomainEvent>
1212
{
1313
private readonly ILoggerFactory _logger;
1414
private readonly IBuyerRepository<Buyer> _buyerRepository;
1515
private readonly IIdentityService _identityService;
1616

17-
public OrderStartedDomainEventHandler(ILoggerFactory logger, IBuyerRepository<Buyer> buyerRepository, IIdentityService identityService)
17+
public ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler(ILoggerFactory logger, IBuyerRepository<Buyer> buyerRepository, IIdentityService identityService)
1818
{
1919
_buyerRepository = buyerRepository ?? throw new ArgumentNullException(nameof(buyerRepository));
2020
_identityService = identityService ?? throw new ArgumentNullException(nameof(identityService));
@@ -46,7 +46,7 @@ public async Task Handle(OrderStartedDomainEvent orderNotification)
4646
await _buyerRepository.UnitOfWork
4747
.SaveEntitiesAsync();
4848

49-
_logger.CreateLogger(nameof(OrderStartedDomainEventHandler)).LogTrace($"A new payment method has been successfully added for orderId: {orderNotification.Order.Id}.");
49+
_logger.CreateLogger(nameof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler)).LogTrace($"A new payment method has been successfully added for orderId: {orderNotification.Order.Id}.");
5050

5151
}
5252
}

src/Services/Ordering/Ordering.API/Infrastructure/AutofacModules/MediatorModule.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using MediatR;
44
using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands;
55
using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Decorators;
6-
using Ordering.API.Application.DomainEventHandlers;
6+
using Ordering.API.Application.DomainEventHandlers.OrderStartedEvent;
77
using Ordering.Domain.Events;
88
using System.Collections.Generic;
99
using System.Linq;
@@ -24,7 +24,7 @@ protected override void Load(ContainerBuilder builder)
2424
.Select(i => new KeyedService("IAsyncRequestHandler", i)));
2525

2626
builder
27-
.RegisterAssemblyTypes(typeof(OrderStartedDomainEventHandler).GetTypeInfo().Assembly)
27+
.RegisterAssemblyTypes(typeof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler).GetTypeInfo().Assembly)
2828
.Where(t => t.IsClosedTypeOf(typeof(IAsyncNotificationHandler<>)))
2929
.AsImplementedInterfaces();
3030

src/Services/Ordering/Ordering.API/Infrastructure/Middlewares/FailingMiddleware.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ public async Task Invoke(HttpContext context)
4141

4242
private async Task ProcessConfigRequest(HttpContext context)
4343
{
44-
int i = 0;
4544
var enable = context.Request.Query.Keys.Any(k => k == "enable");
4645
var disable = context.Request.Query.Keys.Any(k => k == "disable");
4746

src/Services/Ordering/Ordering.API/Ordering.API.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
5959
</ItemGroup>
6060

61+
<ItemGroup>
62+
<None Include="Application\DomainEventHandlers\OrderStartedEvent\SendEmailToCustomerWhenOrderStartedDomainEventHandler.cs" />
63+
</ItemGroup>
64+
6165
<ItemGroup>
6266
<None Update="Dockerfile">
6367
<CopyToOutputDirectory>Always</CopyToOutputDirectory>

src/Services/Ordering/Ordering.Domain/AggregatesModel/BuyerAggregate/Buyer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ public PaymentMethod VerifyOrAddPaymentMethod(
3333

3434
if (existingPayment != null)
3535
{
36-
AddDomainEvent(new BuyerPaymentMethodVerifiedDomainEvent(this, existingPayment, orderId));
36+
AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, existingPayment, orderId));
3737
return existingPayment;
3838
}
3939
else
4040
{
4141
var payment = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration);
4242

4343
_paymentMethods.Add(payment);
44-
AddDomainEvent(new BuyerPaymentMethodVerifiedDomainEvent(this, payment, orderId));
44+
AddDomainEvent(new BuyerAndPaymentMethodVerifiedDomainEvent(this, payment, orderId));
4545
return payment;
4646
}
4747
}

src/Services/Ordering/Ordering.Domain/Events/BuyerPaymentMethodVerifiedDomainEvent.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
namespace Ordering.Domain.Events
88
{
9-
public class BuyerPaymentMethodVerifiedDomainEvent
9+
public class BuyerAndPaymentMethodVerifiedDomainEvent
1010
: IAsyncNotification
1111
{
1212
public Buyer Buyer { get; private set; }
1313
public PaymentMethod Payment { get; private set; }
1414
public int OrderId { get; private set; }
1515

16-
public BuyerPaymentMethodVerifiedDomainEvent(Buyer buyer, PaymentMethod payment, int orderId)
16+
public BuyerAndPaymentMethodVerifiedDomainEvent(Buyer buyer, PaymentMethod payment, int orderId)
1717
{
1818
Buyer = buyer;
1919
Payment = payment;

0 commit comments

Comments
 (0)