public ActionResult SaveReview(ReviewFormSaveReviewViewModel viewModel) { var product = _productRepository.SingleOrDefault(x => x.Guid.ToString() == viewModel.ProductGuid); var catalogGroup = _catalogContext.CurrentCatalogGroup; var catalogGroupV2 = ProductCatalogGroup.FirstOrDefault(x => x.Guid == catalogGroup.Guid); var request = System.Web.HttpContext.Current.Request; var basket = _orderContext.GetBasket(); var name = viewModel.Name; var email = viewModel.Email; var rating = viewModel.Rating * 20; var reviewHeadline = viewModel.Title; var reviewText = viewModel.Comments; if (basket.PurchaseOrder.Customer == null) { basket.PurchaseOrder.Customer = new Customer() { FirstName = name, LastName = String.Empty, EmailAddress = email }; } else { basket.PurchaseOrder.Customer.FirstName = name; if (basket.PurchaseOrder.Customer.LastName == null) { basket.PurchaseOrder.Customer.LastName = String.Empty; } basket.PurchaseOrder.Customer.EmailAddress = email; } basket.PurchaseOrder.Customer.Save(); var review = new ProductReview(); review.ProductCatalogGroup = catalogGroupV2; review.ProductReviewStatus = _productReviewStatusRepository.SingleOrDefault(s => s.Name == "New"); review.CreatedOn = DateTime.Now; review.CreatedBy = "System"; review.Product = product; review.Customer = basket.PurchaseOrder.Customer; review.Rating = rating; review.ReviewHeadline = reviewHeadline; review.ReviewText = reviewText; review.Ip = request.UserHostName; product.AddProductReview(review); _productReviewPipeline.Execute(review); return(Json(new { Rating = review.Rating, ReviewHeadline = review.ReviewHeadline, CreatedBy = review.CreatedBy, CreatedOn = review.CreatedOn.ToString("MMM dd, yyyy"), CreatedOnForMeta = review.CreatedOn.ToString("yyyy-MM-dd"), Comments = review.ReviewText }, JsonRequestBehavior.AllowGet)); }
public ActionResult Index(ProductReviewViewModel formReview) { var product = CatalogLibrary.GetProduct(formReview.ProductSku); var productV2 = Product.FirstOrDefault(x => x.Guid == product.Guid); var catalogGroup = CatalogContext.CurrentCatalogGroup; var catalogGroupV2 = ProductCatalogGroup.FirstOrDefault(x => x.Guid == catalogGroup.Guid); var request = System.Web.HttpContext.Current.Request; var basket = OrderContext.GetBasket(); if (request.Form.AllKeys.All(x => x != "review-product")) { return(RedirectToAction("Index")); } var name = formReview.Name; var email = formReview.Email; var rating = Convert.ToInt32(formReview.Rating) * 20; var reviewHeadline = formReview.Title; var reviewText = formReview.Comments; if (basket.PurchaseOrder.Customer == null) { basket.PurchaseOrder.Customer = new Customer() { FirstName = name, LastName = String.Empty, EmailAddress = email }; } else { basket.PurchaseOrder.Customer.FirstName = name; if (basket.PurchaseOrder.Customer.LastName == null) { basket.PurchaseOrder.Customer.LastName = String.Empty; } basket.PurchaseOrder.Customer.EmailAddress = email; } basket.PurchaseOrder.Customer.Save(); var review = new ProductReview() { ProductCatalogGroup = catalogGroupV2, ProductReviewStatus = ProductReviewStatus.SingleOrDefault(s => s.Name == "New"), CreatedOn = DateTime.Now, CreatedBy = "System", Product = productV2, Customer = basket.PurchaseOrder.Customer, Rating = rating, ReviewHeadline = reviewHeadline, ReviewText = reviewText, Ip = request.UserHostName }; productV2.AddProductReview(review); PipelineFactory.Create <ProductReview>("ProductReview").Execute(review); //TODO: Add Category to this url. return(Redirect(UrlService.GetUrl(CatalogContext.CurrentCatalog, product))); }