in src/Modules/SimplCommerce.Module.Shipments/Areas/Shipments/Controllers/ShipmentApiController.cs [96:153]
public async Task<IActionResult> List([FromBody] SmartTableParam param)
{
var query = _shipmentRepository.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.TrackingNumber != null)
{
string trackingNumber = search.TrackingNumber;
query = query.Where(x => x.TrackingNumber.Contains(trackingNumber));
}
if (search.OrderId != null)
{
string orderIdString = search.OrderId;
if (long.TryParse(orderIdString, out long orderId))
{
query = query.Where(x => x.OrderId == orderId);
}
}
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 shipments = query.ToSmartTableResult(
param,
x => new
{
x.Id,
x.TrackingNumber,
x.OrderId,
WarehouseName = x.Warehouse.Name,
x.CreatedOn
});
return Json(shipments);
}