public void Handle(PayForOrder message)
        {
            var order = repository.GetById <Domain.Order>(message.Id);
            int committableVersion = message.Version;

            order.PayForOrder(committableVersion);
            repository.Save(order);
        }
        public void Handle(OrderPriced message)
        {
            var payForOrder = new PayForOrder(message.Order)
            {
                MessageId     = Guid.NewGuid(),
                CorrelationId = message.CorrelationId,
                CausationId   = message.MessageId
            };

            _bus.Publish(payForOrder);
        }
Esempio n. 3
0
        private void HandlePayForOrder(PayForOrder cmd)
        {
            var order = this.QueryOrder(cmd.OrderId);

            var orderPaid = new OrderPaid {
                Order = order
            };

            // like Forward
            Context.ActorSelection("akka://ec/user/inventory").Tell(orderPaid, this.Sender);

            Context.System.EventStream.Publish(orderPaid);
        }
Esempio n. 4
0
        public async Task Pay(string orderId, string correlationId)
        {
            var state = new Domain.Model.Payment.Payment(StreamNumbering.NewStreamId <Domain.Model.Payment.Payment>());
            var order = await this.persistence.GetState <DomainOrder>(orderId);

            var payed = new PayForOrder(correlationId, DateTime.Now)
            {
                OrderStreamId = order.StreamId,
                Total         = order.TotalCost,
                Description   = order.Items.Aggregate((acc, x) => acc + ',' + x)
            }.Execute(state);

            await this.persistence.Save(payed);

            var _ = myPay.SendPaymentRequest(payed.StreamId, payed.Total, payed.Description).ConfigureAwait(false);
        }
Esempio n. 5
0
 public void Handle(OrderPriced message)
 {
     if (_expectedNextCausationId == message.CausationId)
     {
         var payForOrder = new PayForOrder(message.Order)
         {
             MessageId     = Guid.NewGuid(),
             CorrelationId = message.CorrelationId,
             CausationId   = message.MessageId
         };
         _expectedNextCausationId = payForOrder.MessageId;
         _bus.Publish(payForOrder);
     }
     else
     {
         Console.WriteLine("Received Evil Message: Order Priced {0}", message.Order.Id);
     }
 }
Esempio n. 6
0
 public async Task HandleAsync(PayForOrder command)
 {
     await ExecuteAsync(command.OrderId, order => order.Pay());
 }