public async Task <IActionResult> CreateMenuItem(String RestaurantName, String MenuName, [Bind("Name,Ingredients,Alergens,Price,Image")] MenuItem entity)
        {
            var checkIfExistsExpr = from selectRestaurant in RestaurantDomain.GetRestaurant(RestaurantName)
                                    let restaurant = (selectRestaurant as RestaurantSelected)?.RestaurantAgg.Restaurant
                                                     from selectMenu in RestaurantDomain.GetMenu(MenuName, restaurant.Id)
                                                     let menu = (selectMenu as MenuSelected)?.MenuAgg.Menu
                                                                from selectMenuItem in RestaurantDomain.GetMenuItem(entity.Name, menu.Id)
                                                                select selectMenuItem;

            var checkIfExistsResult = await interpreter.Interpret(checkIfExistsExpr, Unit.Default);

            return(await checkIfExistsResult.MatchAsync <IActionResult>(
                       async exists =>
            {
                return BadRequest();
            },
                       async inexistent =>
            {
                var expr = from selectRestaurant in RestaurantDomain.GetRestaurant(RestaurantName)
                           let restaurant = (selectRestaurant as RestaurantSelected)?.RestaurantAgg.Restaurant
                                            from selectMenu in RestaurantDomain.GetMenu(MenuName, restaurant.Id)
                                            let menu = (selectMenu as MenuSelected)?.MenuAgg.Menu
                                                       from createEntity in RestaurantDomain.CreateAndPersistMenuItem(menu, entity)
                                                       let entityC = (createEntity as MenuItemCreated)?.MenuItemAgg
                                                                     select createEntity;

                var result = await interpreter.Interpret(expr, Unit.Default);
                return await result.MatchAsync <IActionResult>(
                    async(created) =>
                {
                    await interpreter.Interpret(Database.AddOrUpdateEntity(created.MenuItemAgg.MenuItem), Unit.Default);
                    return (IActionResult)Ok(created.MenuItemAgg.MenuItem);
                },
                    async(notCreated) =>
                {
                    return BadRequest();
                });
            }
                       ));
        }