public ActionResult recipeDetail(Guid id) { double rate = 0; int rateCount = 0; var recipe = db.recipe.Find(id); if (recipe.enabled == false) { return(RedirectToAction("index", "home")); } var type = recipe.type; if (type != "Free") { if (Session["userId"] != null) { var u = db.user.Find(Session["userId"]); if (u.expireDate < DateTime.Now && u.role != "ROLE_ADMIN") { return(RedirectToAction("error", "home", new { msg = "Only vip user can see this recipe, go to profile to buy vip access!" })); } } else { return(RedirectToAction("error", "home", new { msg = "Only vip user can see this recipe, go to profile to buy vip access!" })); } } ViewBag.manager = db.user.Find(recipe.manager).email; var srate = db.ratting.Where(m => m.recipe_id == recipe.id).Select(m => m.rate); if (srate.Count() > 0) { rate = srate.Average(); rateCount = srate.Count(); } //random 3 recipe with same category var relate = db.recipe.Where(m => m.category == recipe.category).OrderBy(x => Guid.NewGuid()).Take(3); var comment = db.feedBack.Where(m => m.recipe_id == recipe.id).ToArray(); foreach (var item in comment) { item.ago = DateTimeConvert.TimeAgo(item.createAt); item.name = db.user.Find(item.own).name; } ViewBag.comment = comment; ViewBag.rateCount = rateCount; ViewBag.rate = rate; ViewBag.recipeId = id; ViewBag.relate = relate; //view count if (Request.Cookies["ViewedPage"] != null) { if (Request.Cookies["ViewedPage"][string.Format("pId_{0}", id)] == null) { HttpCookie cookie = (HttpCookie)Request.Cookies["ViewedPage"]; cookie[string.Format("pId_{0}", id)] = "1"; cookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(cookie); recipe.viewCount = recipe.viewCount + 1; db.SaveChanges(); } } else { HttpCookie cookie = new HttpCookie("ViewedPage"); cookie[string.Format("pId_{0}", id)] = "1"; cookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(cookie); recipe.viewCount = recipe.viewCount + 1; db.SaveChanges(); } return(View(recipe)); }