/// <summary> /// Prepare product review search model /// </summary> /// <param name="searchModel">Product review search model</param> /// <returns>Product review search model</returns> public virtual ProductReviewSearchModel PrepareProductReviewSearchModel(ProductReviewSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } searchModel.IsLoggedInAsVendor = _workContext.CurrentVendor != null; //prepare available stores _baseAdminModelFactory.PrepareStores(searchModel.AvailableStores); //prepare "approved" property (0 - all; 1 - approved only; 2 - disapproved only) searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.ProductReviews.List.SearchApproved.All"), Value = "0" }); searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.ProductReviews.List.SearchApproved.ApprovedOnly"), Value = "1" }); searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.ProductReviews.List.SearchApproved.DisapprovedOnly"), Value = "2" }); //prepare page parameters searchModel.SetGridPageSize(); return(searchModel); }
/// <summary> /// Prepare paged product review list model /// </summary> /// <param name="searchModel">Product review search model</param> /// <returns>Product review list model</returns> public virtual ProductReviewListModel PrepareProductReviewListModel(ProductReviewSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter reviews var createdOnFromValue = !searchModel.CreatedOnFrom.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.CreatedOnFrom.Value, _dateTimeHelper.CurrentTimeZone); var createdToFromValue = !searchModel.CreatedOnTo.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.CreatedOnTo.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1); var isApprovedOnly = searchModel.SearchApprovedId == 0 ? null : searchModel.SearchApprovedId == 1 ? true : (bool?)false; var vendorId = _workContext.CurrentVendor?.Id ?? 0; //get product reviews var productReviews = _productService.GetAllProductReviews(showHidden: true, customerId: 0, approved: isApprovedOnly, fromUtc: createdOnFromValue, toUtc: createdToFromValue, message: searchModel.SearchText, storeId: searchModel.SearchStoreId, productId: searchModel.SearchProductId, vendorId: vendorId, pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize); //prepare list model var model = new ProductReviewListModel { Data = productReviews.Select(productReview => { //fill in model values from the entity var productReviewModel = productReview.ToModel <ProductReviewModel>(); //convert dates to the user time productReviewModel.CreatedOn = _dateTimeHelper.ConvertToUserTime(productReview.CreatedOnUtc, DateTimeKind.Utc); //fill in additional values (not existing in the entity) productReviewModel.StoreName = productReview.Store.Name; productReviewModel.ProductName = productReview.Product.Name; productReviewModel.CustomerInfo = productReview.Customer.IsRegistered() ? productReview.Customer.Email : _localizationService.GetResource("Admin.Customers.Guest"); productReviewModel.ReviewText = HtmlHelper.FormatText(productReview.ReviewText, false, true, false, false, false, false); productReviewModel.ReplyText = HtmlHelper.FormatText(productReview.ReplyText, false, true, false, false, false, false); return(productReviewModel); }), Total = productReviews.TotalCount }; return(model); }
public virtual IActionResult List(ProductReviewSearchModel searchModel) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageProductReviews)) { return(AccessDeniedDataTablesJson()); } //prepare model var model = _productReviewModelFactory.PrepareProductReviewListModel(searchModel); return(Json(model)); }
public virtual async Task <IActionResult> List(ProductReviewSearchModel searchModel) { if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageProductReviews)) { return(await AccessDeniedDataTablesJson()); } //prepare model var model = await _productReviewModelFactory.PrepareProductReviewListModelAsync(searchModel); return(Json(model)); }
/// <summary> /// Prepare product review search model /// </summary> /// <param name="searchModel">Product review search model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the product review search model /// </returns> public virtual async Task <ProductReviewSearchModel> PrepareProductReviewSearchModelAsync(ProductReviewSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } searchModel.IsLoggedInAsVendor = await _workContext.GetCurrentVendorAsync() != null; //prepare available stores await _baseAdminModelFactory.PrepareStoresAsync(searchModel.AvailableStores); //prepare "approved" property (0 - all; 1 - approved only; 2 - disapproved only) searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = await _localizationService.GetResourceAsync("Admin.Catalog.ProductReviews.List.SearchApproved.All"), Value = "0" }); searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = await _localizationService.GetResourceAsync("Admin.Catalog.ProductReviews.List.SearchApproved.ApprovedOnly"), Value = "1" }); searchModel.AvailableApprovedOptions.Add(new SelectListItem { Text = await _localizationService.GetResourceAsync("Admin.Catalog.ProductReviews.List.SearchApproved.DisapprovedOnly"), Value = "2" }); searchModel.HideStoresList = _catalogSettings.IgnoreStoreLimitations || searchModel.AvailableStores.SelectionIsNotPossible(); //prepare page parameters searchModel.SetGridPageSize(); return(searchModel); }
/// <summary> /// Prepare paged product review list model /// </summary> /// <param name="searchModel">Product review search model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the product review list model /// </returns> public virtual async Task <ProductReviewListModel> PrepareProductReviewListModelAsync(ProductReviewSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get parameters to filter reviews var createdOnFromValue = !searchModel.CreatedOnFrom.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.CreatedOnFrom.Value, await _dateTimeHelper.GetCurrentTimeZoneAsync()); var createdToFromValue = !searchModel.CreatedOnTo.HasValue ? null : (DateTime?)_dateTimeHelper.ConvertToUtcTime(searchModel.CreatedOnTo.Value, await _dateTimeHelper.GetCurrentTimeZoneAsync()).AddDays(1); var isApprovedOnly = searchModel.SearchApprovedId == 0 ? null : searchModel.SearchApprovedId == 1 ? true : (bool?)false; var vendor = await _workContext.GetCurrentVendorAsync(); var vendorId = vendor?.Id ?? 0; //get product reviews var productReviews = await _productService.GetAllProductReviewsAsync(showHidden : true, customerId : 0, approved : isApprovedOnly, fromUtc : createdOnFromValue, toUtc : createdToFromValue, message : searchModel.SearchText, storeId : searchModel.SearchStoreId, productId : searchModel.SearchProductId, vendorId : vendorId, pageIndex : searchModel.Page - 1, pageSize : searchModel.PageSize); //prepare list model var model = await new ProductReviewListModel().PrepareToGridAsync(searchModel, productReviews, () => { return(productReviews.SelectAwait(async productReview => { //fill in model values from the entity var productReviewModel = productReview.ToModel <ProductReviewModel>(); //convert dates to the user time productReviewModel.CreatedOn = await _dateTimeHelper.ConvertToUserTimeAsync(productReview.CreatedOnUtc, DateTimeKind.Utc); //fill in additional values (not existing in the entity) productReviewModel.StoreName = (await _storeService.GetStoreByIdAsync(productReview.StoreId))?.Name; productReviewModel.ProductName = (await _productService.GetProductByIdAsync(productReview.ProductId))?.Name; productReviewModel.CustomerInfo = (await _customerService.GetCustomerByIdAsync(productReview.CustomerId)) is Customer customer && (await _customerService.IsRegisteredAsync(customer)) ? customer.Email : await _localizationService.GetResourceAsync("Admin.Customers.Guest"); productReviewModel.ReviewText = _htmlFormatter.FormatText(productReview.ReviewText, false, true, false, false, false, false); productReviewModel.ReplyText = _htmlFormatter.FormatText(productReview.ReplyText, false, true, false, false, false, false); return productReviewModel; })); });