Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }