public async Task <IActionResult> UpdateOrder(Order order)
        {
            var expr = from updateOrder in RestaurantDomain.UpdateAndPersistOrder(order)
                       let item = (updateOrder as OrderUpdated)?.Order
                                  select updateOrder;

            var result = await interpreter.Interpret(expr, Unit.Default);

            return(await result.MatchAsync <IActionResult>(
                       async updated =>
            {
                return (IActionResult)Ok(updated.Order);
            },
                       async notUpdated =>
            {
                return BadRequest();
            }
                       ));
        }