public async Task <IPagedList <TraceLog> > GetTraceLogs(TraceLogPagedDataRequest request) { var query = _traceLogRepository.Entities.AsQueryable(); if (!string.IsNullOrWhiteSpace(request.Controller)) { query = query.Where(x => x.Controller.Contains(request.Controller)); } if (!string.IsNullOrWhiteSpace(request.Action)) { query = query.Where(x => x.Action == request.Action); } if (!string.IsNullOrWhiteSpace(request.Message)) { query = query.Where(x => x.Message.Contains(request.Message)); } if (!string.IsNullOrWhiteSpace(request.PerformedBy)) { query = query.Where(x => x.PerformedBy == request.PerformedBy); } if (request.FromDate.HasValue) { query = query.Where(x => x.PerformedOn >= request.FromDate.Value); } if (request.ToDate.HasValue) { query = query.Where(x => x.PerformedOn <= request.ToDate.Value); } string orderBy = request.SortField.ToString(); if (QueryHelper.PropertyExists <Log>(orderBy)) { query = request.SortOrder == SortOrder.Ascending ? query.OrderByProperty(orderBy) : query.OrderByPropertyDescending(orderBy); } else { query = query.OrderByDescending(x => x.PerformedOn); } var result = new PagedList <TraceLog>(); await result.CreateAsync(query, request.PageIndex, request.PageSize); return(result); }
private TraceLogPagedDataRequest ParsePagedDataRequest(DataSourceRequest request, TraceLogSearchModel model) { var dataRequest = new TraceLogPagedDataRequest { Controller = model.Controller, Action = model.Action, Message = model.Message, PerformedBy = model.PerformedBy, PageIndex = request.Page - 1, PageSize = request.PageSize }; if (model.FromDate.HasValue) { dataRequest.FromDate = model.FromDate.Value; } if (model.ToDate.HasValue) { dataRequest.ToDate = model.ToDate.Value.ToEndOfDay(); } SortDescriptor sort = request.Sorts.FirstOrDefault(); if (sort != null) { TraceLogSortField sortField; if (!Enum.TryParse(sort.Member, out sortField)) { sortField = TraceLogSortField.PerformedOn; } dataRequest.SortField = sortField; dataRequest.SortOrder = sort.SortDirection == ListSortDirection.Ascending ? SortOrder.Ascending : SortOrder.Descending; } return(dataRequest); }