コード例 #1
0
        public Action <IEnvelope> Handle(AddMenuItem message)
        {
            try
            {
                var newItem = new MenuItem();
                using (var context = Context.CreateFor(newItem))
                {
                    newItem.Id          = message.Id;
                    newItem.Name        = message.Name;
                    newItem.Description = message.Description;

                    Couch.Save(newItem.Id, MementoProvider.GetMemento(newItem));

                    context.PublishOnCommit <MenuItemAdded>(x =>
                    {
                        x.ActorId     = message.Id.ToString();
                        x.Name        = message.Name;
                        x.Description = message.Description;
                    });

                    return(x => x.Acknowledge());
                }
            }
            catch (Exception ex)
            {
                return(x => x.Reject(ex.ToString()));
            }
        }
コード例 #2
0
        public Action <IEnvelope> Handle(CreateOrder message)
        {
            try
            {
                var order = new Order();
                using (var context = Context.CreateFor(order))
                {
                    order.Id           = message.Id;
                    order.CustomerName = message.CustomerName;
                    order.ItemIds      = message.Items.Select(s => new OrderItem()
                    {
                        ItemId = s.ItemId, Qty = s.Qty
                    }).ToList();

                    Couch.Save(order.Id, MementoProvider.GetMemento(order));

                    OrderAgent.RegisterActor(order.Id, order);

                    context.PublishOnCommit <OrderCreated>(x =>
                    {
                        x.ActorId      = message.Id.ToString();
                        x.Id           = message.Id;
                        x.CustomerName = message.CustomerName;
                        x.Items        = message.Items.Select(s => new OrderItemCreated()
                        {
                            ItemId      = s.ItemId,
                            Qty         = s.Qty,
                            Description = s.Description
                        }).ToList();
                    });

                    return(x => x.Acknowledge());
                }
            }
            catch (Exception ex)
            {
                return(x => x.Reject(ex.ToString()));
            }
        }