Exemple #1
0
        public async Task <IActionResult> Cancel([FromBody] CancelModel model)
        {
            var useCase = new CancelBasket(model.BasketId);
            var cmd     = new Command <CancelBasket>(useCase);

            var basket = await _commandHandler.Execute <CancelledBasket>(cmd);

            return(Ok(BasketModel.FromAggregateRoot(basket)));
        }
Exemple #2
0
        public async Task <IActionResult> RemoveItem([FromBody] RemoveItemModel model)
        {
            var useCase = new RemoveItemFromBasket(model.BasketId, model.ProductId, model.Quantity);
            var cmd     = new Command <RemoveItemFromBasket>(useCase);

            var basket = await _commandHandler.Execute <PendingBasket>(cmd);

            return(Ok(BasketModel.FromAggregateRoot(basket)));
        }
Exemple #3
0
        public async Task <IActionResult> AddItem([FromBody] AddItemModel model)
        {
            // TODO: get product price and name from api
            var useCase = new AddItemToBasket(model.BasketId, model.ProductId, model.ProductName, model.Price, model.Quantity);
            var cmd     = new Command <AddItemToBasket>(useCase);

            var basket = await _commandHandler.Execute <PendingBasket>(cmd);

            return(Ok(BasketModel.FromAggregateRoot(basket)));
        }
Exemple #4
0
        public async Task <IActionResult> Create()
        {
            var basketId = Guid.NewGuid();
            var useCase  = new CreateBasket(basketId);
            var cmd      = new Command <CreateBasket>(useCase);

            var basket = await _commandHandler.Execute <PendingBasket>(cmd);

            return(Ok(BasketModel.FromAggregateRoot(basket)));
        }
Exemple #5
0
        public async Task <IActionResult> CheckOut([FromBody] CheckOutModel model)
        {
            var useCase = new CheckOutBasket(
                model.BasketId,
                new AddressDto(
                    model.ShippingAddress.StreetAndNumber,
                    model.ShippingAddress.ZipAndCity,
                    model.ShippingAddress.StateOrProvince,
                    model.ShippingAddress.Country
                    )
                );
            var cmd = new Command <CheckOutBasket>(useCase);

            var basket = await _commandHandler.Execute <CheckedOutBasket>(cmd);

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