public ActionResult EditExtendedReviewPost(int OrderId, int ProductId, PublicReviewEditModel model) { var ProductReview = model.AddProductReviewModel; var VendorReview = model.VendorReviewListModel; var customer = _workContext.CurrentCustomer; var product = _productService.GetProductById(ProductId); if (product == null || product.Deleted || !product.Published || !product.AllowCustomerReviews) return RedirectToRoute("HomePage"); if (ModelState.IsValid) { var canCustomerReviewVendor = _extendedVendorService.CanCustomerReviewVendor(product.VendorId, customer.Id, OrderId); if (!canCustomerReviewVendor) { return InvokeHttp404(); } var customerProductReviews = product.ProductReviews.Where(m => m.CustomerId == customer.Id).OrderByDescending(m => m.CreatedOnUtc); var rating = ProductReview.Rating; if (rating < 1 || rating > 5) rating = _catalogSettings.DefaultProductRatingValue; var isApproved = !_catalogSettings.ProductReviewsMustBeApproved; ProductReview productReview; if (customerProductReviews.Any()) { productReview = customerProductReviews.First(); productReview.Title = ProductReview.Title; productReview.ReviewText = ProductReview.ReviewText; productReview.Rating = rating; productReview.IsApproved = isApproved; //updating } else { productReview = new ProductReview() { ProductId = product.Id, CustomerId = _workContext.CurrentCustomer.Id, Title = ProductReview.Title, ReviewText = ProductReview.ReviewText, Rating = rating, HelpfulYesTotal = 0, HelpfulNoTotal = 0, IsApproved = isApproved, CreatedOnUtc = DateTime.UtcNow, }; product.ProductReviews.Add(productReview); } _productService.UpdateProduct(product); //update product totals _productService.UpdateProductReviewTotals(product); //notify store owner if (_catalogSettings.NotifyStoreOwnerAboutNewProductReviews) _workflowMessageService.SendProductReviewNotificationMessage(productReview, _localizationSettings.DefaultAdminLanguageId); //activity log _customerActivityService.InsertActivity("PublicStore.AddProductReview", _localizationService.GetResource("ActivityLog.PublicStore.AddProductReview"), product.Name); rating = VendorReview.Rating; if (rating < 1 || rating > 5) rating = _catalogSettings.DefaultProductRatingValue; var vendorReview = _extendedVendorService.GetVendorReview(product.VendorId, customer.Id, OrderId, ProductId); if (vendorReview == null) { vendorReview = new VendorReview() { IsApproved = isApproved, CertifiedBuyerReview = true, DisplayCertifiedBadge = true, CreatedOnUTC = DateTime.Now, CustomerId = customer.Id, HelpfulnessNoTotal = 0, HelpfulnessYesTotal = 0, OrderId = OrderId, ProductId = product.Id, Rating = rating, ReviewText = VendorReview.ReviewText, Title = VendorReview.Title, VendorId = product.VendorId }; } else { vendorReview.IsApproved = isApproved; vendorReview.ReviewText = VendorReview.ReviewText; vendorReview.Title = VendorReview.Title; vendorReview.Rating = rating; vendorReview.HelpfulnessYesTotal = 0; vendorReview.HelpfulnessNoTotal = 0; } _extendedVendorService.SaveVendorReview(vendorReview); return RedirectToRoute("ExtendedVendorReviewCenterLoader", new { Redirection = true }); } else { return RedirectToRoute("HomePage"); } }
public ActionResult EditExtendedReview(int OrderId, int ProductId) { var product = _productService.GetProductById(ProductId); var customer = _workContext.CurrentCustomer; var customerProductReviews = product.ProductReviews.Where(m => m.CustomerId == customer.Id).OrderByDescending(m => m.CreatedOnUtc); var model = new PublicReviewEditModel(); if (!customerProductReviews.Any()) { model.AddProductReviewModel = new AddProductReviewModel(); } else { var pr = customerProductReviews.First(); model.AddProductReviewModel = new AddProductReviewModel() { Title = pr.Title, ReviewText = pr.ReviewText, Rating = pr.Rating, }; } var customerVendorReview = _extendedVendorService.GetVendorReview(product.VendorId, customer.Id, OrderId, product.Id); var vendor = _vendorService.GetVendorById(product.VendorId); if (customerVendorReview == null) { model.VendorReviewListModel = new VendorReviewListModel(); } else { var order = _orderService.GetOrderById(OrderId); model.VendorReviewListModel = customerVendorReview.ToListModel(_pictureService, product, vendor, order); } model.VendorReviewListModel.CustomerName = customer.FormatUserName(); var extendedVendor = _extendedVendorService.GetExtendedVendor(product.VendorId); model.VendorName = vendor.Name; model.ProductName = product.Name; model.ProductSeName = product.GetSeName(); model.VendorSeName = vendor.GetSeName(); if (product.ProductPictures.Count > 0) model.ProductImageUrl = _pictureService.GetPictureUrl(product.ProductPictures.First().Picture); if (extendedVendor != null && extendedVendor.LogoId > 0) { model.VendorImageUrl = _pictureService.GetPictureUrl(extendedVendor.LogoId); } model.VendorReviewListModel.ProductId = product.Id; model.VendorReviewListModel.OrderId = OrderId; return View("ExtendedVendor/EditExtendedReview", model); }