in src/Modules/SimplCommerce.Module.Orders/Areas/Orders/Controllers/OrderApiController.cs [75:136]
public async Task<ActionResult> List([FromBody] SmartTableParam param)
{
var query = _orderRepository
.Query();
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.Id != null)
{
long id = search.Id;
query = query.Where(x => x.Id == id);
}
if (search.Status != null)
{
var status = (OrderStatus)search.Status;
query = query.Where(x => x.OrderStatus == status);
}
if (search.CustomerName != null)
{
string customerName = search.CustomerName;
query = query.Where(x => x.Customer.FullName.Contains(customerName));
}
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 orders = query.ToSmartTableResult(
param,
order => new
{
order.Id,
CustomerName = order.Customer.FullName,
order.OrderTotal,
OrderTotalString = _currencyService.FormatCurrency(order.OrderTotal),
OrderStatus = order.OrderStatus.ToString(),
order.CreatedOn
});
return Json(orders);
}