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())); } }
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())); } }