Esempio n. 1
0
        public IActionResult Reviews(DataSourceRequest command, string vendorId, [FromServices] IWorkContext workContext)
        {
            var vendor = _vendorService.GetVendorById(vendorId);

            if (vendor == null)
            {
                throw new ArgumentException("No vendor found with the specified id");
            }

            //a vendor should have access only to his own profile
            if (workContext.CurrentVendor != null && vendor.Id != workContext.CurrentVendor.Id)
            {
                return(Content("This is not your vendor"));
            }

            var vendorReviews = _vendorService.GetAllVendorReviews("", null,
                                                                   null, null, "", vendorId, command.Page - 1, command.PageSize);

            var gridModel = new DataSourceResult
            {
                Data = vendorReviews.Select(x =>
                {
                    var m = new VendorReviewModel();
                    _vendorViewModelService.PrepareVendorReviewModel(m, x, false, true);
                    return(m);
                }),
                Total = vendorReviews.TotalCount,
            };

            return(Json(gridModel));
        }
Esempio n. 2
0
        public async Task <IActionResult> Reviews(DataSourceRequest command, string vendorId, [FromServices] IWorkContext workContext)
        {
            var vendor = await _vendorService.GetVendorById(vendorId);

            if (vendor == null)
            {
                throw new ArgumentException("No vendor found with the specified id");
            }

            //a vendor should have access only to his own profile
            if (workContext.CurrentVendor != null && vendor.Id != workContext.CurrentVendor.Id)
            {
                return(Content("This is not your vendor"));
            }

            var vendorReviews = await _vendorService.GetAllVendorReviews("", null,
                                                                         null, null, "", vendorId, command.Page - 1, command.PageSize);

            var items = new List <VendorReviewModel>();

            foreach (var item in vendorReviews)
            {
                var m = new VendorReviewModel();
                await _vendorViewModelService.PrepareVendorReviewModel(m, item, false, true);

                items.Add(m);
            }
            var gridModel = new DataSourceResult
            {
                Data  = items,
                Total = vendorReviews.TotalCount,
            };

            return(Json(gridModel));
        }
        public ActionResult VendorReview(int vendorId)
        {
            var vendor = _vendorService.GetVendorById(vendorId);

            if (vendor == null || vendor.Deleted)
            {
                return(RedirectToRoute("HomePage"));
            }

            var model = new VendorReviewModel();

            model.VendorID     = vendor.Id;
            model.VendorName   = _localizationService.GetLocalized(vendor, x => x.Name);
            model.VendorSeName = _urlRecordService.GetSeName(vendor);

            //only registered users can leave review
            if (_workContext.CurrentCustomer.IsGuest() && !_catalogSettings.AllowAnonymousUsersToReviewProduct)
            {
                ModelState.AddModelError("", _localizationService.GetResource("Reviews.OnlyRegisteredUsersCanWriteReviews"));
            }

            //default value
            model.Rating = _catalogSettings.DefaultProductRatingValue;

            return(View("~/Plugins/Nop.Plugin.Misc.VendorEnhanced/Views/VendorReview.cshtml", 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;
            }
        }
Esempio n. 5
0
        //edit
        public async Task <IActionResult> Edit(string id)
        {
            var vendorReview = await _vendorService.GetVendorReviewById(id);

            if (vendorReview == null)
            {
                //No vendor review found with the specified id
                return(RedirectToAction("List"));
            }

            var model = new VendorReviewModel();
            await _vendorViewModelService.PrepareVendorReviewModel(model, vendorReview, false, false);

            return(View(model));
        }
        public IActionResult List(DataSourceRequest command, VendorReviewListModel model)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendorReviews))
            {
                return(AccessDeniedView());
            }

            DateTime?createdOnFromValue = (model.CreatedOnFrom == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnFrom.Value, _dateTimeHelper.CurrentTimeZone);

            DateTime?createdToFromValue = (model.CreatedOnTo == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnTo.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);

            IPagedList <VendorReview> vendorReviews;

            //vendor
            if (_workContext.CurrentVendor != null)
            {
                vendorReviews = _vendorService.GetAllVendorReviews("", null,
                                                                   createdOnFromValue, createdToFromValue, model.SearchText, _workContext.CurrentVendor.Id, command.Page - 1, command.PageSize);
            }
            //admin
            else if (_workContext.CurrentCustomer.IsAdmin())
            {
                vendorReviews = _vendorService.GetAllVendorReviews("", null,
                                                                   createdOnFromValue, createdToFromValue, model.SearchText, model.SearchVendorId, command.Page - 1, command.PageSize);
            }
            else
            {
                return(AccessDeniedView());
            }

            var gridModel = new DataSourceResult
            {
                Data = vendorReviews.Select(x =>
                {
                    var m = new VendorReviewModel();
                    PrepareVendorReviewModel(m, x, false, true);
                    return(m);
                }),
                Total = vendorReviews.TotalCount,
            };

            return(Json(gridModel));
        }
Esempio n. 7
0
        public virtual (IEnumerable <VendorReviewModel> vendorReviewModels, int totalCount) PrepareVendorReviewModel(VendorReviewListModel model, int pageIndex, int pageSize)
        {
            DateTime?createdOnFromValue = (model.CreatedOnFrom == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnFrom.Value, _dateTimeHelper.CurrentTimeZone);

            DateTime?createdToFromValue = (model.CreatedOnTo == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnTo.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);

            IPagedList <VendorReview> vendorReviews = _vendorService.GetAllVendorReviews("", null,
                                                                                         createdOnFromValue, createdToFromValue, model.SearchText, model.SearchVendorId, pageIndex - 1, pageSize);

            return(vendorReviews.Select(x =>
            {
                var m = new VendorReviewModel();
                PrepareVendorReviewModel(m, x, false, true);
                return m;
            }).ToList(), vendorReviews.TotalCount);
        }
        public virtual async Task<(IEnumerable<VendorReviewModel> vendorReviewModels, int totalCount)> PrepareVendorReviewModel(VendorReviewListModel model, int pageIndex, int pageSize)
        {
            DateTime? createdOnFromValue = (model.CreatedOnFrom == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnFrom.Value, _dateTimeHelper.CurrentTimeZone);

            DateTime? createdToFromValue = (model.CreatedOnTo == null) ? null
                            : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnTo.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);

            IPagedList<VendorReview> vendorReviews = await _vendorService.GetAllVendorReviews("", null,
                     createdOnFromValue, createdToFromValue, model.SearchText, model.SearchVendorId, pageIndex - 1, pageSize);
            var items = new List<VendorReviewModel>();
            foreach (var x in vendorReviews)
            {
                var m = new VendorReviewModel();
                await PrepareVendorReviewModel(m, x, false, true);
                items.Add(m);
            }
            return (items, vendorReviews.TotalCount);
        }
        public IActionResult Edit(VendorReviewModel model, bool continueEditing)
        {
            var vendorReview = _vendorService.GetVendorReviewById(model.Id);

            if (vendorReview == null)
            {
                //No vendor review found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                vendorReview = _vendorViewModelService.UpdateVendorReviewModel(vendorReview, model);
                SuccessNotification(_localizationService.GetResource("Admin.VendorReviews.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = vendorReview.Id, VendorId = vendorReview.VendorId }) : RedirectToAction("List"));
            }

            //If we got this far, something failed, redisplay form
            _vendorViewModelService.PrepareVendorReviewModel(model, vendorReview, true, false);
            return(View(model));
        }
        //edit
        public IActionResult Edit(string id)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendorReviews))
            {
                return(AccessDeniedView());
            }

            var vendorReview = _vendorService.GetVendorReviewById(id);
            var vendor       = _vendorService.GetVendorById(vendorReview.VendorId);

            if (vendorReview == null)
            {
                //No vendor review found with the specified id
                return(RedirectToAction("List"));
            }

            var model = new VendorReviewModel();

            PrepareVendorReviewModel(model, vendorReview, false, false);
            return(View(model));
        }
        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 IActionResult VendorReviewAdd(VendorReviewModel model)
        {
            var vendor = _vendorService.GetVendorById(model.VendorID);

            if (vendor != null)
            {
                model.VendorName   = vendor.Name;
                model.VendorSeName = _urlRecordService.GetSeName(vendor);
            }

            var customerID = _workContext.CurrentCustomer.Id;

            if (ModelState.IsValid)
            {
                var vendorReview = new VendorReviewRecord
                {
                    CustomerID = customerID,
                    VendorID   = model.VendorID,
                    StoreID    = model.StoreID,
                    IsApproved = model.IsApproved,
                    Title      = model.Title,
                    ReviewText = model.ReviewText,
                    ReplyText  = model.ReplyText,
                    CustomerNotifiedOfReply = model.CustomerNotifiedOfReply,
                    Rating          = model.Rating,
                    HelpfulYesTotal = model.HelpfulYesTotal,
                    HelpfulNoTotal  = model.HelpfulNoTotal,
                    CreatedOnUtc    = DateTime.Now
                };

                _vendorReviewService.InsertVendorReview(vendorReview);

                model.SuccessfullyVendorReviewed = true;
                model.Result = _localizationService.GetResource("VendorEnhanced.SuccessfullyVendorReviewed");
            }

            return(View("~/Plugins/Nop.Plugin.Misc.VendorEnhanced/Views/VendorReview.cshtml", model));
        }
        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;
            }
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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 IActionResult Edit(VendorReviewModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendorReviews) || _workContext.CurrentVendor != null)
            {
                return(AccessDeniedView());
            }

            var vendorReview = _vendorService.GetVendorReviewById(model.Id);
            var vendor       = _vendorService.GetVendorById(vendorReview.VendorId);


            if (vendorReview == null)
            {
                //No vendor review found with the specified id
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                vendorReview.Title      = model.Title;
                vendorReview.ReviewText = model.ReviewText;
                vendorReview.IsApproved = model.IsApproved;

                _vendorService.UpdateVendorReview(vendorReview);

                //update vendor totals
                _vendorService.UpdateVendorReviewTotals(vendor);

                SuccessNotification(_localizationService.GetResource("Admin.VendorReviews.Updated"));
                return(continueEditing ? RedirectToAction("Edit", new { id = vendorReview.Id, VendorId = vendorReview.VendorId }) : RedirectToAction("List"));
            }


            //If we got this far, something failed, redisplay form
            PrepareVendorReviewModel(model, vendorReview, true, false);
            return(View(model));
        }
        public ActionResult UpdateReview(VendorReviewModel model)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendors))
            {
                return(Content("Access denied"));
            }


            var review = _extendedVendorService.GetVendorReview(model.Id);

            if (review == null)
            {
                return(new NullJsonResult());
            }

            review.IsApproved          = model.IsApproved;
            review.Rating              = model.Rating;
            review.ReviewText          = model.ReviewText;
            review.Title               = model.Title;
            review.HelpfulnessNoTotal  = model.HelpfulnessNoTotal;
            review.HelpfulnessYesTotal = model.HelpfulnessYesTotal;
            _extendedVendorService.SaveVendorReview(review);
            return(new NullJsonResult());
        }
Esempio n. 18
0
        public IActionResult Reviews(DataSourceRequest command, string vendorId)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageVendors))
            {
                return(AccessDeniedView());
            }

            var vendor = _vendorService.GetVendorById(vendorId);

            if (vendor == null)
            {
                throw new ArgumentException("No vendor found with the specified id");
            }

            //a vendor should have access only to his own profile
            if (_workContext.CurrentVendor != null && vendor.Id != _workContext.CurrentVendor.Id)
            {
                return(Content("This is not your vendor"));
            }

            var vendorReviews = _vendorService.GetAllVendorReviews("", null,
                                                                   null, null, "", vendorId, command.Page - 1, command.PageSize);

            var gridModel = new DataSourceResult
            {
                Data = vendorReviews.Select(x =>
                {
                    var m = new VendorReviewModel();
                    PrepareVendorReviewModel(m, x, false, true);
                    return(m);
                }),
                Total = vendorReviews.TotalCount,
            };

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