public async Task <IActionResult> CreateMenuItem(string restaurantname, string menuname, [FromBody] MenuItems menuItem) { var menuExpr = from restaurant in RestaurantDomain.GetRestaurant(restaurantname) let restaurantFound = (restaurant as RestaurantFound)?.RestaurantAgg.Restaurant from menu in RestaurantDomain.GetSpecificMenu(restaurantFound, menuname) let foundMenuId = (menu as SpecificMenuFound)?.Menu.Id from menuitemPersisted in RestaurantDomain.CreateMenuItemAndPersist(menuItem, foundMenuId) select menuitemPersisted; var result = await _interpreter.Interpret(menuExpr, Unit.Default); return(result.Match( succesful => (IActionResult) new OkObjectResult(menuItem), failed => new NotFoundObjectResult(failed.Reason))); }