Example #1
0
        internal IAggregate MakePayment(int payment)
        {
            var expectedPayment = _orderLines.Sum(y => y.DiscountedPrice * y.Quantity);

            if (expectedPayment != payment)
            {
                throw new UnexpectedPaymentException();
            }
            return(new Order(Id, _orderLines));
        }
Example #2
0
 internal Order(Guid basketId, FSharpList<OrderLine> orderLines)
     : this()
 {
     var id = IdGenerator.GenerateGuid();
     RaiseEvent(new OrderCreated(id, basketId, orderLines));
     var totalPrice = orderLines.Sum(y => y.DiscountedPrice);
     if (totalPrice > 100000)
     {
         RaiseEvent(new NeedsApproval(id));
     }
     else
     {
         RaiseEvent(new OrderApproved(id));
     }
 }
Example #3
0
        internal Order(Guid basketId, FSharpList <OrderLine> orderLines) : this()
        {
            var id = IdGenerator.GenerateGuid();

            RaiseEvent(new OrderCreated(id, basketId, orderLines));
            var totalPrice = orderLines.Sum(y => y.DiscountedPrice);

            if (totalPrice > 100000)
            {
                RaiseEvent(new NeedsApproval(id));
            }
            else
            {
                RaiseEvent(new OrderApproved(id));
            }
        }