public ActionResult RecipePrint(int recipeId) { var recipe = this.RecipeService.GetRecipeById(recipeId); if (recipe == null) return this.Issue404(); var recipeViewModel = Mapper.Map(recipe, new RecipeViewModel()); recipeViewModel.CommentWrapperViewModel = new CommentWrapperViewModel { CommentViewModels = new List<CommentViewModel>() }; // Get Additional Data var user = this.UserService.GetUserById(recipe.CreatedBy); var recipeDetailViewModel = new RecipeDetailViewModel { RecipeViewModel = recipeViewModel, UserSummary = Mapper.Map(user, new UserSummary()), TastingNotes = new List<TastingNote>() }; return this.View(recipeDetailViewModel); }
/// <summary> /// Executes the View for RecipeDetail /// </summary> public ActionResult RecipeDetail(int recipeId) { var recipe = this.RecipeService.GetRecipeById(recipeId); if(recipe == null) { return this.Issue404(); } // Auto Redirect to EDIT page for owner if (this.ActiveUser != null && recipe.CreatedBy == this.ActiveUser.UserId && string.IsNullOrWhiteSpace(Request["public"])) { return this.Redirect(Url.RecipeEditUrl(recipeId)); } // Notify use if the recipe is not public if(!recipe.IsPublic) { this.AppendMessage(new WarnMessage { Text = "This recipe is not complete and only you can see it. Add Fermentables and Yeast to make it public."}); } // Get Similar Recipes ViewBag.SimilarRecipes = this.RecipeService.GetSimilarRecipes(recipe, 4); var recipeViewModel = Mapper.Map(recipe, new RecipeViewModel()); // Fetch Brew Session Count (this should really go in a service as part of recipe get) recipeViewModel.BrewSessionCount = this.RecipeService.GetRecipeBrewSessionsCount(recipeId); // Fetch most recent brew session if(recipeViewModel.BrewSessionCount > 0) { recipeViewModel.MostRecentBrewSession = this.RecipeService.GetMostRecentBrewSession(recipeId); } // Fetch Tasting Notes var tastingNotes = this.RecipeService.GetRecipeTastingNotes(recipe.RecipeId); // Get Additional Data var user = this.UserService.GetUserById(recipe.CreatedBy); if ((recipeViewModel.OriginalRecipeId ?? 0) != 0) { var originalRecipe = this.RecipeService.GetRecipeById((recipeViewModel.OriginalRecipeId ?? 0)); if(originalRecipe != null) { recipeViewModel.OriginalRecipe = Mapper.Map(originalRecipe, new RecipeViewModel()); } } var recipeDetailViewModel = new RecipeDetailViewModel(); recipeDetailViewModel.RecipeViewModel = recipeViewModel; recipeDetailViewModel.UserSummary = Mapper.Map(user, new UserSummary()); recipeDetailViewModel.TastingNotes = tastingNotes; var commentWrapperViewModel = new CommentWrapperViewModel(); commentWrapperViewModel.CommentViewModels = Mapper.Map(this.RecipeService.GetRecipeComments(recipeId), new List<CommentViewModel>()); commentWrapperViewModel.GenericId = recipeId; commentWrapperViewModel.CommentType = CommentType.Recipe; recipeDetailViewModel.RecipeViewModel.CommentWrapperViewModel = commentWrapperViewModel; // TODO: Check if the name passed in the URL is different than what // TODO: is in the DB. If it is....do a 301 Redirect. This is for SEO. ViewData["DisableEditing"] = true; // Get Send To Shop Settings (if any) ViewBag.SendToShopSettings = this.SendToShopService.GetRecipeCreationSendToShopSettings(false); return View(recipeDetailViewModel); }