public async Task <IActionResult> RemoveItemsFromOrder([FromODataUri] string id, ODataActionParameters parameters)
        {
            var order = await orderStore.FindByIdAsync(id);

            var items = (IEnumerable <Item>)parameters.SingleOrDefault(p => p.Key == Constants.Actions.Parameters.Items).Value;

            if (order == null || items == null)
            {
                return(BadRequest());
            }

            await removeItemsFromOrder.ExecuteAsync(order, items.ToList());

            return(Ok());
        }
        public async Task <IActionResult> ClearOrder([FromODataUri] string id, ODataActionParameters parameters)
        {
            var order = await orderStore.FindByIdAsync(id);

            var delete = (bool)parameters.SingleOrDefault(p => p.Key == Constants.Actions.Parameters.Delete).Value;

            if (order == null)
            {
                return(BadRequest());
            }

            await clearOrder.ExecuteAsync(order, delete);

            return(Ok());
        }
        public async Task <IActionResult> ProcessOrder([FromODataUri] string id, ODataActionParameters parameters)
        {
            var order = await orderStore.FindByIdAsync(id);

            var billing = (Billing)parameters.SingleOrDefault(p => p.Key == Constants.Actions.Parameters.Billing).Value;

            if (order == null || billing == null)
            {
                return(BadRequest());
            }

            await processOrder.ExecuteAsync(order, billing);

            return(Ok());
        }