コード例 #1
0
        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));
        }