public async Task <IActionResult> CreateOrder(Order order)
        {
            var expr = from createOrder in RestaurantDomain.CreateAndPersistOrder(order)
                       let orderE = (createOrder as OrderCreated)?.OrderAgg.Order
                                    select createOrder;

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

            return(await result.MatchAsync <IActionResult>(
                       async created =>
            {
                return (IActionResult)Ok(created.OrderAgg.Order);
            },
                       async badReq =>
            {
                return BadRequest();
            }
                       ,
                       async notCreated =>
            {
                return BadRequest();
            }
                       ));
        }