Example #1
0
        public ActionResult CreateComment(CommentsRecipeViewModel vm)
        {
            using (var context = new ModelsContext())
            {
                try
                {

                    Models.Comment comment = new Comment();
                    comment.Recipe_Name = vm.BeerName;
                    comment.Timestamp = DateTime.Now;
                    comment.UserProfile_UserID = WebSecurity.GetUserId(User.Identity.Name);
                    comment.Text = vm.Text;
                    comment.FlavorProfile_Name = vm.Flavor;

                    context.Comments.Add(comment);
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    return RedirectToAction("Show", new { name = vm.BeerName, tab = "comments" });
                }
            }

            return RedirectToAction("Show", new { name = vm.BeerName, tab="comments" });
        }
Example #2
0
        public CommentsRecipeViewModel CreateCommentsRecipeViewModel(string name)
        {
            using (var context = new Models.ModelsContext())
            {
                var flavorCounts = from c in context.Comments where c.Recipe_Name == name group c by c.FlavorProfile.Name into g select new { Key = g.Key, Count = g.LongCount() };
                var recipeComments = from c in context.Comments where c.Recipe_Name == name select c.Timestamp;
                var recipeModel = context.Recipes.Find(name);

                var siteAverages = Utilities.StatisticsUtils.GetSiteAvg();
                var localAverages = Utilities.StatisticsUtils.GetLocalAvg();

                double siteRating = 0;
                siteAverages.TryGetValue(name, out siteRating);

                double avgRating = 0;
                localAverages.TryGetValue(name, out avgRating);

                CommentsRecipeViewModel viewModel = new CommentsRecipeViewModel
                {
                    BeerName = recipeModel.Name,
                    AvgRating = Math.Round(avgRating, 2),
                    SiteRating = Math.Round(siteRating, 2),
                    FlavorCounts = flavorCounts.ToDictionary(g => g.Key, g => g.Count),
                    CommentsCount = recipeComments.Count()
                };

                viewModel.Comments = context.Comments.Where(c => c.Recipe_Name == name).Select(c => new CommentViewModel
                {
                    Flavor = c.FlavorProfile.Name,
                    Text = c.Text,
                    Poster = c.UserProfile.UserName
                }).ToList();

                viewModel.Flavors = context.FlavorProfiles.Select(c => c.Name).ToList();
                viewModel.Top3Flavors = GetTop3Flavors(viewModel.FlavorCounts);

                return viewModel;
            }
        }