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