Added DDD comments about the CreateOrderCommandHandler

This commit is contained in:
CESARDL 2017-02-07 16:59:09 -08:00
parent 15f2cc7da1
commit 9f80be5ed9

View File

@ -12,6 +12,7 @@
private readonly IBuyerRepository _buyerRepository; private readonly IBuyerRepository _buyerRepository;
private readonly IOrderRepository _orderRepository; private readonly IOrderRepository _orderRepository;
// Using DI to inject infrastructure persistence Repositories
public CreateOrderCommandHandler(IBuyerRepository buyerRepository, IOrderRepository orderRepository) public CreateOrderCommandHandler(IBuyerRepository buyerRepository, IOrderRepository orderRepository)
{ {
if (buyerRepository == null) if (buyerRepository == null)
@ -29,8 +30,11 @@
} }
public async Task<bool> Handle(CreateOrderCommand message) public async Task<bool> Handle(CreateOrderCommand message)
{ {
//find buyer/payment or add a new one buyer/payment // Add/Update the Buyer AggregateRoot
// DDD patterns comment: Add child entities and value-objects through the Order Aggregate-Root
// methods and constructor so validations, invariants and business logic
// make sure that consistency is preserved across the whole aggregate
var buyer = await _buyerRepository.FindAsync(message.BuyerFullName); var buyer = await _buyerRepository.FindAsync(message.BuyerFullName);
@ -51,7 +55,10 @@
await _buyerRepository.UnitOfWork await _buyerRepository.UnitOfWork
.SaveChangesAsync(); .SaveChangesAsync();
//create order for buyer and payment method // Create the Order AggregateRoot
// DDD patterns comment: Add child entities and value-objects through the Order Aggregate-Root
// methods and constructor so validations, invariants and business logic
// make sure that consistency is preserved across the whole aggregate
var order = new Order(buyer.Id, payment.Id, new Address(message.Street, message.City, message.State, message.Country, message.ZipCode)); var order = new Order(buyer.Id, payment.Id, new Address(message.Street, message.City, message.State, message.Country, message.ZipCode));