Example #1
0
 public void Handle(AddOrderLineRequest command)
 {
     using (IUnitOfWork uow = this.CreateUnitOfWork <OrderAggregate>())
     {
         IOrderRepository repository = IoC.Container.Resolve <IOrderRepository>(uow);
         OrderAggregate   order      = repository.GetById(command.OrderId.ToString(), "OrderLines");
         order.AddOrderLineItem(command.ProductId, command.ProductName, command.Quantity, command.Price);
         repository.Update(order);
         uow.Commit();
         order.PublishEvents();
     }
 }
Example #2
0
 public void Handle(ActivateOrder command)
 {
     using (IUnitOfWork uow = this.CreateUnitOfWork <OrderAggregate>())
     {
         IOrderRepository repository = IoC.Container.Resolve <IOrderRepository>(uow);
         OrderAggregate   order      = repository.GetById(command.OrderId.ToString(), "OrderLines");
         order.Activate();
         repository.Update(order);
         uow.Commit();
         order.PublishEvents();
     }
 }
Example #3
0
        public void Handle(CreateOrderRequest command)
        {
            OrderAggregate order = AggregateFactory.Create <OrderAggregate>();

            order.AddCustomerDetail(command.CustomerDetail);
            order.AddOrderLineItems(command.OrderLines);
            using (IUnitOfWork uow = this.CreateUnitOfWork <OrderAggregate>())
            {
                IOrderRepository repository = IoC.Container.Resolve <IOrderRepository>(uow);
                repository.Add(order);
                uow.Commit();
                order.AddEvent(new OnOrderCreated(order.Id));
            }
            order.PublishEvents();
        }