public ActionResult Write(WriteReviewBindingModel wrbm)
        {
            if (!ModelState.IsValid || _service.HasUserReviewedProduct(User.Identity.GetUserId(), wrbm.ProductId))
            {
                return(RedirectToAction("Details", "Products", new { id = wrbm.ProductId }));
            }
            var currentUserId = this.User.Identity.GetUserId();

            this._service.CreateReview(currentUserId, wrbm);
            return(RedirectToAction("Details", "Products", new { id = wrbm.ProductId }));
        }
Example #2
0
        public void CreateReview(string currentUserId, WriteReviewBindingModel wrbm)
        {
            var    customer = this.Context.Customers.First(c => c.UserId == currentUserId);
            var    product  = this.Context.Products.Find(wrbm.ProductId);
            Review review   = Mapper.Instance.Map <Review>(wrbm);

            review.Reviewer = customer;
            review.Product  = product;
            if (product.Rating == 0 && !product.Reviews.Any())
            {
                product.Rating = review.Rating;
            }
            else
            {
                product.Rating = (decimal)(product.Reviews.Sum(r => r.Rating) + wrbm.Rating) / (product.Reviews.Count() + 1);
            }
            this.Context.Reviews.Add(review);
            this.Context.SaveChanges();
        }