public PagedResultDto <NotificationDto> GetAll(NotificationPaginableInput input) { var all = _repository.GetAllIncluding(a => a.SendNotificationsStatuses); var filtered = GetFilteredQuery(all, input); var ordered = GetOrderedQuery(filtered, input); var paged = ordered.Skip(input.offset).Take(input.limit).ToList(); return(new PagedResultDto <NotificationDto>(filtered.Count(), paged.Select(a => a.MapTo <NotificationDto>()).ToList())); }
public IQueryable <PhoneNotification> GetOrderedQuery(IQueryable <PhoneNotification> all, NotificationPaginableInput input) { switch (input.sort) { case "title": return(input.order == "desc" ? all.OrderByDescending(a => a.Title) : all.OrderBy(a => a.Title)); default: return(input.order == "desc" ? all.OrderByDescending(a => a.CreationTime) : all.OrderBy(a => a.CreationTime)); } }
public IQueryable <PhoneNotification> GetFilteredQuery(IQueryable <PhoneNotification> all, NotificationPaginableInput input) { all = all.WhereIf(!string.IsNullOrEmpty(input.search), a => a.Title.Contains(input.search)); return(all); }