Paging Get
Paging Get
[HttpGet]
public async Task<IActionResult> GetList([FromQuery]OrderQueryModel model)
{
return ResponseHelper.Success(await orderService.GetOrders(model));
}
//helper
public static class ResponseHelper
{
public static ObjectResult Success(Object data = null)
{
return ToObjectResult(data, HttpStatusCode.OK);
}
}
//service
Task<object> GetOrders (OrderQueryModel query);
public async Task<object> GetOrders (OrderQueryModel query) {
var predicate = new List<Expression<Func<Order, bool>>> { x => true };
if (!string.IsNullOrEmpty (query.TextSearch))
predicate.Add (x => x.ShippingAddress.Address.Contains (query.TextSearch)
||
x.ShippingAddress.FullName.Contains (query.TextSearch) ||
x.ShippingAddress.FullName.Contains (query.TextSearch));
if (query.Status.HasValue)
predicate.Add (x => x.Status == query.Status);
return data;
}
//interface
Task<(int Total, List<T> Entities)> GetPaging(Expression<Func<T, bool>> predicate =
null, Dictionary<Expression<Func<T, object>>, bool> orderBy = null, int? skip =
null, int? take = null, List<Expression<Func<T, object>>> includes = null);
public virtual async Task<(int Total, List<T> Entities)>
GetPaging(Expression<Func<T, bool>> predicate = null,
Dictionary<Expression<Func<T, object>>, bool> orderBy = null,
int? skip = null, int? take = null,
List<Expression<Func<T, object>>> includes = null)
{
return await repository.GetPaging(predicate, orderBy, skip, take, includes);
}
responsitory
public async Task<(int Total, List<T> Entities)> GetPaging(Expression<Func<T,
bool>> predicate = null,
Dictionary<Expression<Func<T, object>>, bool> orderBy = null,
int? skip = null, int? take = null,
List<Expression<Func<T, object>>> includes = null)
{
var query = entities.AsQueryable();
if (predicate != null)
query = query.Where(predicate);