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 })); }
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(); }