private ElasticSearchPagingOptions <PersistentEvent> GetPagingWithSortingOptions(PagingOptions paging) { var pagingOptions = new ElasticSearchPagingOptions <PersistentEvent>(paging); pagingOptions.SortBy.Add(s => s.OnField(f => f.Date).Descending()); pagingOptions.SortBy.Add(s => s.OnField("_uid").Descending()); return(pagingOptions); }
private ElasticSearchPagingOptions <PersistentEvent> GetPagingWithSortingOptions(PagingOptions paging, bool sortByAscending) { var pagingOptions = new ElasticSearchPagingOptions <PersistentEvent>(paging); if (sortByAscending) { pagingOptions.SortBy.Add(s => s.OnField(f => f.Date).Ascending()); pagingOptions.SortBy.Add(s => s.OnField("_uid").Ascending()); } else { pagingOptions.SortBy.Add(s => s.OnField(f => f.Date).Descending()); pagingOptions.SortBy.Add(s => s.OnField("_uid").Descending()); } if (!String.IsNullOrEmpty(pagingOptions.Before) && pagingOptions.Before.IndexOf('-') > 0) { var parts = pagingOptions.Before.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries); long beforeUtcTicks; if (parts.Length == 2 && Int64.TryParse(parts[0], out beforeUtcTicks) && !String.IsNullOrEmpty(parts[1])) { pagingOptions.BeforeFilter = ( Filter <PersistentEvent> .Term(e => e.Date, new DateTime(beforeUtcTicks, DateTimeKind.Utc)) && Filter <PersistentEvent> .Range(r => r.OnField("_uid").Lower(parts[1])) ) || Filter <PersistentEvent> .Range(r => r.OnField(e => e.Date).Lower(new DateTime(beforeUtcTicks, DateTimeKind.Utc))); } } if (!String.IsNullOrEmpty(pagingOptions.After) && pagingOptions.After.IndexOf('-') > 0) { var parts = pagingOptions.After.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries); long afterUtcTicks; if (parts.Length == 2 && Int64.TryParse(parts[0], out afterUtcTicks) && !String.IsNullOrEmpty(parts[1])) { pagingOptions.AfterFilter = ( Filter <PersistentEvent> .Term(e => e.Date, new DateTime(afterUtcTicks, DateTimeKind.Utc)) && Filter <PersistentEvent> .Range(r => r.OnField("_uid").Greater(parts[1])) ) || Filter <PersistentEvent> .Range(r => r.OnField(e => e.Date).Greater(new DateTime(afterUtcTicks, DateTimeKind.Utc))); } } return(pagingOptions); }