public IHttpActionResult CheckOut([FromBody] CheckOutModel model)
        {
            var cmd = new CheckOutBasket(model.BasketId, model.ShippingAddress);

            var basket = _commandDispatcher.ExecuteCommand <BasketAggregate>(cmd);

            return(Ok(BasketModel.FromAggregate(basket)));
        }
        public IHttpActionResult CreateBasket()
        {
            var basketId = Guid.NewGuid();
            var cmd      = new CreateBasket(basketId);
            var basket   = _commandDispatcher.ExecuteCommand <BasketAggregate>(cmd);

            return(Ok(BasketModel.FromAggregate(basket)));
        }
        public IHttpActionResult RemoveItem([FromBody] RemoveItemModel model)
        {
            var cmd = new RemoveItemFromBasket(
                model.BasketId,
                model.ProductId,
                model.Quantity);

            var basket = _commandDispatcher.ExecuteCommand <BasketAggregate>(cmd);

            return(Ok(BasketModel.FromAggregate(basket)));
        }
        public IHttpActionResult GetBasket(Guid basketId)
        {
            var basket = _aggregateRepository.GetAggregateById <BasketAggregate>(basketId);

            if (basket == null)
            {
                return(CreateBasket());
            }

            return(Ok(BasketModel.FromAggregate(basket)));
        }
Пример #5
0
        private BasketModel GetBasketAggregate(Guid basketId)
        {
            var res = Reader.getBasket(AggregateId.NewAggregateId(basketId));

            if (res.IsOk)
            {
                var b = (res as Result <State, IError> .Ok).Item1;
                return(BasketModel.FromAggregate(basketId, b));
            }

            return(null);
        }
        public IHttpActionResult AddItem([FromBody] AddItemModel model)
        {
            var basketId = model.BasketId;

            if (model.BasketId == Guid.Empty)
            {
                basketId = Guid.NewGuid();
                _commandDispatcher.ExecuteCommand <BasketAggregate>(new CreateBasket(basketId));
            }

            // TODO: get model price and name from api by id
            var cmd = new AddItemToBasket(
                basketId,
                model.ProductId,
                model.Name,
                model.Price,
                model.Quantity);

            var basket = _commandDispatcher.ExecuteCommand <BasketAggregate>(cmd);

            return(Ok(BasketModel.FromAggregate(basket)));
        }