public static VendorReviewListModel ToListModel(this VendorReview Review, IPictureService _pictureService, Product Product, Vendor Vendor, Order Order) { var model = new VendorReviewListModel() { CreatedOnUTC = Review.CreatedOnUTC, CustomerId = Review.CustomerId, HelpfulnessNoTotal = Review.HelpfulnessNoTotal, HelpfulnessYesTotal = Review.HelpfulnessYesTotal, Id = Review.Id, IsApproved = Review.IsApproved, ProductId = Review.ProductId, Rating = Review.Rating, ReviewText = Review.ReviewText, Title = Review.Title, VendorId = Review.VendorId, OrderId = Review.OrderId, CertifiedBuyerReview = Review.CertifiedBuyerReview, DisplayCertifiedBadge = Review.DisplayCertifiedBadge, }; if (Product != null) { model.ProductName = Product.Name; model.ProductSeName = Product.GetSeName(); model.ProductImageUrl = _pictureService.GetPictureUrl(Product.ProductPictures.FirstOrDefault().Picture); } if (Vendor != null) { model.VendorName = Vendor.Name; model.VendorSeName = Vendor.GetSeName(); } return(model); }
public virtual async Task PrepareVendorReviewModel(VendorReviewModel model, VendorReview vendorReview, bool excludeProperties, bool formatReviewText) { if (model == null) throw new ArgumentNullException("model"); if (vendorReview == null) throw new ArgumentNullException("vendorReview"); var vendor = await _vendorService.GetVendorById(vendorReview.VendorId); var customer = await _customerService.GetCustomerById(vendorReview.CustomerId); model.Id = vendorReview.Id; model.VendorId = vendorReview.VendorId; model.VendorName = vendor.Name; model.CustomerId = vendorReview.CustomerId; model.CustomerInfo = customer != null ? customer.IsRegistered() ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest") : ""; model.Rating = vendorReview.Rating; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(vendorReview.CreatedOnUtc, DateTimeKind.Utc); if (!excludeProperties) { model.Title = vendorReview.Title; if (formatReviewText) model.ReviewText = FormatText.ConvertText(vendorReview.ReviewText); else model.ReviewText = vendorReview.ReviewText; model.IsApproved = vendorReview.IsApproved; } }
public async Task BuilderTest() { var builder = new LiquidObjectBuilder(_mediatorMock.Object); var vendor = new Vendor() { Id = "VendorId", Name = "vendorName" }; var product = new Product() { Id = "productId", Name = "ProductName" }; var vendorReview = new VendorReview() { Id = "RevId" }; _mediatorMock.Setup(c => c.Send <LiquidVendor>(It.IsAny <IRequest <LiquidVendor> >(), default)).ReturnsAsync(new LiquidVendor(vendor)); var liquidObject = await builder .AddVendorReviewTokens(vendor, vendorReview) .AddVendorTokens(vendor, new Language()) .AddOutOfStockTokens(product, new OutOfStockSubscription(), new Store(), new Language()) .BuildAsync(); Assert.IsTrue(liquidObject.Vendor != null); Assert.IsTrue((liquidObject.Vendor as LiquidVendor).Name.Equals(vendor.Name)); Assert.IsNotNull(liquidObject.VendorReview as LiquidVendorReview); Assert.IsTrue((liquidObject.VendorReview as LiquidVendorReview).VendorName.Equals(vendor.Name)); Assert.IsTrue((liquidObject.OutOfStockSubscription as LiquidOutOfStockSubscription).ProductName.Equals(product.Name)); _mediatorMock.Verify(c => c.Publish(It.IsAny <INotification>(), default), Times.Exactly(3)); }
public LiquidVendorReview(Vendor vendor, VendorReview vendorReview) { this._vendorReview = vendorReview; this._vendor = vendor; AdditionalTokens = new Dictionary <string, string>(); }
public virtual async Task DeleteVendorReview(VendorReview vendorReview) { await _vendorService.DeleteVendorReview(vendorReview); var vendor = await _vendorService.GetVendorById(vendorReview.VendorId); //update vendor totals await _vendorService.UpdateVendorReviewTotals(vendor); }
public void AddVendorReviewTokens(LiquidObject liquidObject, VendorReview vendorReview) { var liquidVendorReview = new LiquidVendorReview(vendorReview); liquidObject.VendorReview = liquidVendorReview; _eventPublisher.EntityTokensAdded(vendorReview, liquidVendorReview, liquidObject); }
public virtual void DeleteVendorReview(VendorReview vendorReview) { _vendorService.DeleteVendorReview(vendorReview); var vendor = _vendorService.GetVendorById(vendorReview.VendorId); //update vendor totals _vendorService.UpdateVendorReviewTotals(vendor); }
public LiquidObjectBuilder AddVendorReviewTokens(Vendor vendor, VendorReview vendorReview) { _chain.Add(async liquidObject => { var liquidVendorReview = new LiquidVendorReview(vendor, vendorReview); liquidObject.VendorReview = liquidVendorReview; await _mediator.EntityTokensAdded(vendorReview, liquidVendorReview, liquidObject); }); return(this); }
public void SaveVendorReview(VendorReview VendorReview) { if (VendorReview.Id == 0) { _vendorReviewRepository.Insert(VendorReview); } else { _vendorReviewRepository.Update(VendorReview); } }
/// <summary> /// Deletes a vendor review /// </summary> /// <param name="vendorReview">Vendor review</param> public virtual void DeleteVendorReview(VendorReview vendorReview) { if (vendorReview == null) { throw new ArgumentNullException("vendorReview"); } _vendorReviewRepository.Delete(vendorReview); //event notification _eventPublisher.EntityDeleted(vendorReview); }
/// <summary> /// Inserts a vendor review /// </summary> /// <param name="vendorPicture">Vendor picture</param> public virtual void InsertVendorReview(VendorReview vendorReview) { if (vendorReview == null) { throw new ArgumentNullException("vendorPicture"); } _vendorReviewRepository.Insert(vendorReview); //event notification _eventPublisher.EntityInserted(vendorReview); }
/// <summary> /// Inserts a vendor review /// </summary> /// <param name="vendorPicture">Vendor picture</param> public virtual async Task InsertVendorReview(VendorReview vendorReview) { if (vendorReview == null) { throw new ArgumentNullException("vendorPicture"); } await _vendorReviewRepository.InsertAsync(vendorReview); //event notification await _mediator.EntityInserted(vendorReview); }
/// <summary> /// Deletes a vendor review /// </summary> /// <param name="vendorReview">Vendor review</param> public virtual async Task DeleteVendorReview(VendorReview vendorReview) { if (vendorReview == null) { throw new ArgumentNullException("vendorReview"); } await _vendorReviewRepository.DeleteAsync(vendorReview); //event notification await _mediator.EntityDeleted(vendorReview); }
public virtual async Task<VendorReview> UpdateVendorReviewModel(VendorReview vendorReview, VendorReviewModel model) { vendorReview.Title = model.Title; vendorReview.ReviewText = model.ReviewText; vendorReview.IsApproved = model.IsApproved; await _vendorService.UpdateVendorReview(vendorReview); var vendor = await _vendorService.GetVendorById(vendorReview.VendorId); //update vendor totals await _vendorService.UpdateVendorReviewTotals(vendor); return vendorReview; }
public virtual VendorReview UpdateVendorReviewModel(VendorReview vendorReview, VendorReviewModel model) { vendorReview.Title = model.Title; vendorReview.ReviewText = model.ReviewText; vendorReview.IsApproved = model.IsApproved; _vendorService.UpdateVendorReview(vendorReview); var vendor = _vendorService.GetVendorById(vendorReview.VendorId); //update vendor totals _vendorService.UpdateVendorReviewTotals(vendor); return(vendorReview); }
public virtual void UpdateVendorReview(VendorReview vendorreview) { if (vendorreview == null) { throw new ArgumentNullException("vendorreview"); } var builder = Builders <VendorReview> .Filter; var filter = builder.Eq(x => x.Id, vendorreview.Id); var update = Builders <VendorReview> .Update .Set(x => x.Title, vendorreview.Title) .Set(x => x.ReviewText, vendorreview.ReviewText) .Set(x => x.IsApproved, vendorreview.IsApproved); var result = _vendorReviewRepository.Collection.UpdateManyAsync(filter, update).Result; //event notification _eventPublisher.EntityUpdated(vendorreview); }
public virtual async Task UpdateVendorReview(VendorReview vendorreview) { if (vendorreview == null) { throw new ArgumentNullException(nameof(vendorreview)); } var update = UpdateBuilder <VendorReview> .Create() .Set(x => x.Title, vendorreview.Title) .Set(x => x.ReviewText, vendorreview.ReviewText) .Set(x => x.IsApproved, vendorreview.IsApproved) .Set(x => x.HelpfulYesTotal, vendorreview.HelpfulYesTotal) .Set(x => x.HelpfulNoTotal, vendorreview.HelpfulNoTotal); await _vendorReviewRepository.UpdateOneAsync(x => x.Id == vendorreview.Id, update); //event notification await _mediator.EntityUpdated(vendorreview); }
public virtual VendorReview InsertVendorReview(Vendor vendor, VendorReviewsModel model) { //save review int rating = model.AddVendorReview.Rating; if (rating < 1 || rating > 5) { rating = _vendorSettings.DefaultVendorRatingValue; } bool isApproved = !_vendorSettings.VendorReviewsMustBeApproved; var vendorReview = new VendorReview { VendorId = vendor.Id, CustomerId = _workContext.CurrentCustomer.Id, Title = model.AddVendorReview.Title, ReviewText = model.AddVendorReview.ReviewText, Rating = rating, HelpfulYesTotal = 0, HelpfulNoTotal = 0, IsApproved = isApproved, CreatedOnUtc = DateTime.UtcNow, }; _vendorService.InsertVendorReview(vendorReview); if (!_workContext.CurrentCustomer.IsHasVendorReview) { _workContext.CurrentCustomer.IsHasVendorReview = true; EngineContext.Current.Resolve <ICustomerService>().UpdateHasVendorReview(_workContext.CurrentCustomer.Id); } //update vendor totals _vendorService.UpdateVendorReviewTotals(vendor); //notify store owner if (_vendorSettings.NotifyVendorAboutNewVendorReviews) { _workflowMessageService.SendVendorReviewNotificationMessage(vendorReview, _localizationSettings.DefaultAdminLanguageId); } return(vendorReview); }
public virtual async Task UpdateVendorReview(VendorReview vendorreview) { if (vendorreview == null) { throw new ArgumentNullException("vendorreview"); } var builder = Builders <VendorReview> .Filter; var filter = builder.Eq(x => x.Id, vendorreview.Id); var update = Builders <VendorReview> .Update .Set(x => x.Title, vendorreview.Title) .Set(x => x.ReviewText, vendorreview.ReviewText) .Set(x => x.IsApproved, vendorreview.IsApproved) .Set(x => x.HelpfulYesTotal, vendorreview.HelpfulYesTotal) .Set(x => x.HelpfulNoTotal, vendorreview.HelpfulNoTotal); await _vendorReviewRepository.Collection.UpdateManyAsync(filter, update); //event notification await _mediator.EntityUpdated(vendorreview); }
public ActionResult SaveReview(VendorReviewModel model) { //only requested review var custId = _workContext.CurrentCustomer.Id; if (!_extendedVendorService.IsVendorReviewDone(model.VendorId, custId, model.OrderId, model.ProductId)) { //check if customer can review this vendor for this order if (_extendedVendorService.CanCustomerReviewVendor(model.VendorId, custId, model.OrderId)) { //yes he can var review = new VendorReview { CreatedOnUTC = DateTime.Now, CustomerId = custId, HelpfulnessNoTotal = 0, HelpfulnessYesTotal = 0, IsApproved = false, OrderId = model.OrderId, ProductId = model.ProductId, Rating = model.Rating, ReviewText = model.ReviewText, Title = model.Title, VendorId = model.VendorId }; _extendedVendorService.SaveVendorReview(review); } } else { return(Json(new { success = false, error = "You have already reviewed this order" })); } return(Json(new { success = false, error = "You need to login to review a vendor" })); }
public virtual async Task PrepareVendorReviewModel(VendorReviewModel model, VendorReview vendorReview, bool excludeProperties, bool formatReviewText) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (vendorReview == null) { throw new ArgumentNullException(nameof(vendorReview)); } var vendor = await _vendorService.GetVendorById(vendorReview.VendorId); var customer = await _customerService.GetCustomerById(vendorReview.CustomerId); model.Id = vendorReview.Id; model.VendorId = vendorReview.VendorId; model.VendorName = vendor.Name; model.CustomerId = vendorReview.CustomerId; model.CustomerInfo = customer != null ? !string.IsNullOrEmpty(customer.Email) ? customer.Email : _translationService.GetResource("Admin.Customers.Guest") : ""; model.Rating = vendorReview.Rating; model.CreatedOn = _dateTimeService.ConvertToUserTime(vendorReview.CreatedOnUtc, DateTimeKind.Utc); if (!excludeProperties) { model.Title = vendorReview.Title; if (formatReviewText) { model.ReviewText = FormatText.ConvertText(vendorReview.ReviewText); } else { model.ReviewText = vendorReview.ReviewText; } model.IsApproved = vendorReview.IsApproved; } }
public static VendorReviewModel ToModel(this VendorReview Review, Order Order, Product Product) { var model = new VendorReviewModel() { CreatedOnUTC = Review.CreatedOnUTC, CustomerId = Review.CustomerId, HelpfulnessNoTotal = Review.HelpfulnessNoTotal, HelpfulnessYesTotal = Review.HelpfulnessYesTotal, Id = Review.Id, IsApproved = Review.IsApproved, ProductId = Review.ProductId, Rating = Review.Rating, ReviewText = Review.ReviewText, Title = Review.Title, VendorId = Review.VendorId, OrderId = Review.OrderId, ProductName = Product.Name, CertifiedBuyerReview = Review.CertifiedBuyerReview, DisplayCertifiedBadge = Review.DisplayCertifiedBadge }; return(model); }
protected virtual void PrepareVendorReviewModel(VendorReviewModel model, VendorReview vendorReview, bool excludeProperties, bool formatReviewText) { if (model == null) { throw new ArgumentNullException("model"); } if (vendorReview == null) { throw new ArgumentNullException("vendorReview"); } var vendor = _vendorService.GetVendorById(vendorReview.VendorId); var customer = _customerService.GetCustomerById(vendorReview.CustomerId); model.Id = vendorReview.Id; model.VendorId = vendorReview.VendorId; model.VendorName = vendor.Name; model.CustomerId = vendorReview.CustomerId; model.CustomerInfo = customer != null?customer.IsRegistered() ? customer.Email : _localizationService.GetResource("Admin.Customers.Guest") : ""; model.Rating = vendorReview.Rating; model.CreatedOn = _dateTimeHelper.ConvertToUserTime(vendorReview.CreatedOnUtc, DateTimeKind.Utc); if (!excludeProperties) { model.Title = vendorReview.Title; if (formatReviewText) { model.ReviewText = Core.Html.HtmlHelper.FormatText(vendorReview.ReviewText, false, true, false, false, false, false); } else { model.ReviewText = vendorReview.ReviewText; } model.IsApproved = vendorReview.IsApproved; } }
public async Task AddVendorReviewTokens(LiquidObject liquidObject, Vendor vendor, VendorReview vendorReview) { var liquidVendorReview = new LiquidVendorReview(vendor, vendorReview); liquidObject.VendorReview = liquidVendorReview; await _mediator.EntityTokensAdded(vendorReview, liquidVendorReview, liquidObject); }
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 VendorReviewApprovedEvent(VendorReview vendorReview) { VendorReview = vendorReview; }
public void DeleteVendorReview(VendorReview VendorReview) { _vendorReviewRepository.Delete(VendorReview); }