private static void VerifyItems(IEnumerable <OrderItem> items, LookupAggregate lookup) { foreach (var orderItem in items) { VerifyAggregateExists <Product>(orderItem.ProductId, lookup); } }
public IAggregate Handle(PlaceOrder command) { var lookup = new LookupAggregate(_domainRepository); var order = Order.Create(command.Id, command.CustomerId, command.Items, lookup); return(order); }
private static void VerifyAggregateExists <TAggregate>(Guid aggregateId, LookupAggregate lookup) where TAggregate : IAggregate, new() { lookup.GetById <TAggregate>(aggregateId); }
public static IAggregate Create(Guid id, Guid customerId, FSharpList <OrderItem> items, LookupAggregate lookup) { VerifyAggregateExists <Customer>(customerId, lookup); VerifyItems(items, lookup); return(new Order(id, customerId, items)); }