in src/Modules/SimplCommerce.Module.Catalog/Areas/Catalog/Controllers/ProductApiController.cs [213:282]
public async Task<IActionResult> List([FromBody] SmartTableParam param)
{
var query = _productRepository.Query().Where(x => !x.IsDeleted);
var currentUser = await _workContext.GetCurrentUser();
if (!User.IsInRole("admin"))
{
query = query.Where(x => x.VendorId == currentUser.VendorId);
}
if (param.Search.PredicateObject != null)
{
dynamic search = param.Search.PredicateObject;
if (search.Name != null)
{
string name = search.Name;
query = query.Where(x => x.Name.Contains(name));
}
if (search.HasOptions != null)
{
bool hasOptions = search.HasOptions;
query = query.Where(x => x.HasOptions == hasOptions);
}
if (search.IsVisibleIndividually != null)
{
bool isVisibleIndividually = search.IsVisibleIndividually;
query = query.Where(x => x.IsVisibleIndividually == isVisibleIndividually);
}
if (search.IsPublished != null)
{
bool isPublished = search.IsPublished;
query = query.Where(x => x.IsPublished == isPublished);
}
if (search.CreatedOn != null)
{
if (search.CreatedOn.before != null)
{
DateTimeOffset before = search.CreatedOn.before;
query = query.Where(x => x.CreatedOn <= before);
}
if (search.CreatedOn.after != null)
{
DateTimeOffset after = search.CreatedOn.after;
query = query.Where(x => x.CreatedOn >= after);
}
}
}
var gridData = query.ToSmartTableResult(
param,
x => new ProductListItem
{
Id = x.Id,
Name = x.Name,
HasOptions = x.HasOptions,
IsVisibleIndividually = x.IsVisibleIndividually,
IsFeatured = x.IsFeatured,
IsAllowToOrder = x.IsAllowToOrder,
IsCallForPricing = x.IsCallForPricing,
StockQuantity = x.StockQuantity,
CreatedOn = x.CreatedOn,
IsPublished = x.IsPublished
});
return Json(gridData);
}