Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ public static IEnumerable<DefaultPermission> DefaultPermissions()
StandardPermission.ManageProducts,
StandardPermission.ManageProductAttributes,
StandardPermission.ManageSpecificationAttributes,
StandardPermission.ManageProductReviews,
StandardPermission.ManageFiles,
StandardPermission.ManagePictures,
StandardPermission.ManageCategories,
Expand Down
48 changes: 10 additions & 38 deletions src/Web/Grand.Web.Admin/Controllers/ProductReviewController.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Grand.Business.Core.Interfaces.Catalog.Products;
using Grand.Business.Core.Interfaces.Common.Directory;
using Grand.Business.Core.Interfaces.Common.Localization;
using Grand.Domain.Permissions;
using Grand.Infrastructure;
using Grand.Web.AdminShared.Interfaces;
using Grand.Web.AdminShared.Models.Catalog;
using Grand.Web.Common.DataSource;
Expand All @@ -20,15 +18,11 @@ public class ProductReviewController : BaseAdminController
public ProductReviewController(
IProductReviewViewModelService productReviewViewModelService,
IProductReviewService productReviewService,
ITranslationService translationService,
IContextAccessor contextAccessor,
IGroupService groupService)
ITranslationService translationService)
{
_productReviewViewModelService = productReviewViewModelService;
_productReviewService = productReviewService;
_translationService = translationService;
_contextAccessor = contextAccessor;
_groupService = groupService;
}

#endregion
Expand All @@ -38,8 +32,6 @@ public ProductReviewController(
private readonly IProductReviewViewModelService _productReviewViewModelService;
private readonly IProductReviewService _productReviewService;
private readonly ITranslationService _translationService;
private readonly IContextAccessor _contextAccessor;
private readonly IGroupService _groupService;

#endregion Fields

Expand All @@ -53,19 +45,14 @@ public IActionResult Index()

public async Task<IActionResult> List()
{
var model = await _productReviewViewModelService.PrepareProductReviewListModel(_contextAccessor.WorkContext.CurrentCustomer
.StaffStoreId);
var model = await _productReviewViewModelService.PrepareProductReviewListModel();
return View(model);
}

[PermissionAuthorizeAction(PermissionActionName.List)]
[HttpPost]
public async Task<IActionResult> List(DataSourceRequest command, ProductReviewListModel model)
{
//limit for store manager
if (await _groupService.IsStoreManager(_contextAccessor.WorkContext.CurrentCustomer))
model.SearchStoreId = _contextAccessor.WorkContext.CurrentCustomer.StaffStoreId;

var (productReviewModels, totalCount) =
await _productReviewViewModelService.PrepareProductReviewsModel(model, command.Page, command.PageSize);
var gridModel = new DataSourceResult {
Expand All @@ -86,9 +73,6 @@ public async Task<IActionResult> Edit(string id)
//No product review found with the specified id
return RedirectToAction("List");

if (await _groupService.IsStoreManager(_contextAccessor.WorkContext.CurrentCustomer) &&
productReview.StoreId != _contextAccessor.WorkContext.CurrentCustomer.StaffStoreId) return RedirectToAction("List");

var model = new ProductReviewModel();
await _productReviewViewModelService.PrepareProductReviewModel(model, productReview, false, false);
return View(model);
Expand All @@ -104,15 +88,12 @@ public async Task<IActionResult> Edit(ProductReviewModel model, bool continueEdi
//No product review found with the specified id
return RedirectToAction("List");

if (await _groupService.IsStoreManager(_contextAccessor.WorkContext.CurrentCustomer) &&
productReview.StoreId != _contextAccessor.WorkContext.CurrentCustomer.StaffStoreId) return RedirectToAction("List");

if (ModelState.IsValid)
{
productReview = await _productReviewViewModelService.UpdateProductReview(productReview, model);
Success(_translationService.GetResource("Admin.Catalog.ProductReviews.Updated"));
return continueEditing
? RedirectToAction("Edit", new { id = productReview.Id, productReview.ProductId })
? RedirectToAction("Edit", new { productReview.Id, productReview.ProductId })
: RedirectToAction("List");
}

Expand All @@ -131,9 +112,6 @@ public async Task<IActionResult> Delete(string id)
//No product review found with the specified id
return RedirectToAction("List");

if (await _groupService.IsStoreManager(_contextAccessor.WorkContext.CurrentCustomer) &&
productReview.StoreId != _contextAccessor.WorkContext.CurrentCustomer.StaffStoreId) return RedirectToAction("List");

if (ModelState.IsValid)
{
await _productReviewViewModelService.DeleteProductReview(productReview);
Expand All @@ -150,8 +128,7 @@ public async Task<IActionResult> Delete(string id)
public async Task<IActionResult> ApproveSelected(ICollection<string> selectedIds)
{
if (selectedIds != null)
await _productReviewViewModelService.ApproveSelected(selectedIds.ToList(),
_contextAccessor.WorkContext.CurrentCustomer.StaffStoreId);
await _productReviewViewModelService.ApproveSelected(selectedIds.ToList());

return Json(new { Result = true });
}
Expand All @@ -161,8 +138,7 @@ await _productReviewViewModelService.ApproveSelected(selectedIds.ToList(),
public async Task<IActionResult> DisapproveSelected(ICollection<string> selectedIds)
{
if (selectedIds != null)
await _productReviewViewModelService.DisapproveSelected(selectedIds.ToList(),
_contextAccessor.WorkContext.CurrentCustomer.StaffStoreId);
await _productReviewViewModelService.DisapproveSelected(selectedIds.ToList());

return Json(new { Result = true });
}
Expand All @@ -175,23 +151,19 @@ public async Task<IActionResult> ProductSearchAutoComplete(string term,
if (string.IsNullOrWhiteSpace(term) || term.Length < searchTermMinimumLength)
return Content("");

var storeId = string.Empty;
if (await _groupService.IsStoreManager(_contextAccessor.WorkContext.CurrentCustomer))
storeId = _contextAccessor.WorkContext.CurrentCustomer.StaffStoreId;

//products
const int productNumber = 15;
var products = (await productService.SearchProducts(
storeId: storeId,
keywords: term,
pageSize: productNumber,
showHidden: true)).products;

var result = (from p in products
select new {
label = p.Name,
productid = p.Id
})
select new
{
label = p.Name,
productid = p.Id
})
.ToList();
return Json(result);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ Task PrepareProductReviewModel(ProductReviewModel model,
ProductReviewListModel model, int pageIndex, int pageSize);

Task<ProductReview> UpdateProductReview(ProductReview productReview, ProductReviewModel model);
Task<ProductReviewListModel> PrepareProductReviewListModel(string storeId);
Task<ProductReviewListModel> PrepareProductReviewListModel(string storeId = "");
Task DeleteProductReview(ProductReview productReview);
Task ApproveSelected(IEnumerable<string> selectedIds, string storeId);
Task DisapproveSelected(IEnumerable<string> selectedIds, string storeId);
Task ApproveSelected(IEnumerable<string> selectedIds, string storeId = "");
Task DisapproveSelected(IEnumerable<string> selectedIds, string storeId = "");
}
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public virtual async Task PrepareProductReviewModel(ProductReviewModel model,
}
}

public virtual async Task<ProductReviewListModel> PrepareProductReviewListModel(string storeId)
public virtual async Task<ProductReviewListModel> PrepareProductReviewListModel(string storeId = "")
{
var model = new ProductReviewListModel();

Expand Down Expand Up @@ -146,7 +146,7 @@ public virtual async Task DeleteProductReview(ProductReview productReview)
await _mediator.Send(new UpdateProductReviewTotalsCommand { Product = product });
}

public virtual async Task ApproveSelected(IEnumerable<string> selectedIds, string storeId)
public virtual async Task ApproveSelected(IEnumerable<string> selectedIds, string storeId = "")
{
foreach (var id in selectedIds)
{
Expand All @@ -170,7 +170,7 @@ public virtual async Task ApproveSelected(IEnumerable<string> selectedIds, strin
}
}

public virtual async Task DisapproveSelected(IEnumerable<string> selectedIds, string storeId)
public virtual async Task DisapproveSelected(IEnumerable<string> selectedIds, string storeId = "")
{
foreach (var id in selectedIds)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
@model ProductReviewModel
@{
//page title
ViewBag.Title = Loc["Admin.Catalog.ProductReviews.EditProductReviewDetails"];
}
<form asp-area="@Constants.AreaStore" asp-controller="ProductReview" asp-action="Edit" method="post" asp-route-ProductId="@HtmlExtensions.HtmlEncodeSafe(Context.Request.Query["ProductId"])">

<div class="row">
<div class="col-md-12">
<div class="x_panel light form-fit">
<div class="x_title">
<div class="caption">
<i class="fa fa-cube"></i>
@Loc["Admin.Catalog.ProductReviews.EditProductReviewDetails"]
<small>
<i class="fa fa-arrow-circle-left"></i>@Html.ActionLink(Loc["Admin.Catalog.ProductReviews.BackToList"], "List")
</small>
</div>
<div class="actions">
<div class="btn-group btn-group-devided">
<button class="btn btn-success" type="submit" name="save">
<i class="fa fa-check"></i> @Loc["Admin.Common.Save"]
</button>
<button class="btn btn-success" type="submit" name="save-continue">
<i class="fa fa-check-circle"></i> @Loc["Admin.Common.SaveContinue"]
</button>
<span id="productreview-delete" class="btn red">
<i class="fa fa-trash-o"></i> @Loc["Admin.Common.Delete"]
</span>
<vc:admin-widget widget-zone="product_review_details_buttons" additional-data="Model"/>
</div>
</div>
</div>
<div class="x_content form">
<partial name="Partials/CreateOrUpdate" model="Model"/>
</div>
</div>
</div>
</div>
</form>
<admin-delete-confirmation button-id="productreview-delete"/>
Loading