public static PagedListResult <TOutput> PaginateListResult <TInput, TOutput>( this IQueryable <TInput> queriable, OffsetBasedContinuationToken continuationToken, int pageSize, Func <TInput, TOutput> conversion) { int offset = Math.Clamp(continuationToken.Offset, 0, int.MaxValue); var list = queriable.Skip(offset) .Take(pageSize + 1) .ToList() .Select(x => conversion(x)) .Where(x => x != null) .ToList(); OffsetBasedContinuationToken token = null; if (list.Count > pageSize) { token = new OffsetBasedContinuationToken { Offset = offset + pageSize, }; list.RemoveAt(list.Count - 1); // keep it for the next page } return(new PagedListResult <TOutput> { Items = list, ContinuationToken = token?.IntoToken() }); }
public Task <PagedListResult <ClassifiedUserSearchResultItem> > FindClassifiedUsersByEmailAsync2(string email, string continuationToken) { var query = appDBContext_.Users .Where(x => x.NormalizedEmail.Contains(userManager_.NormalizeEmail(email))) .OrderBy(x => x.NormalizedEmail); var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x.ToClassifiedUserSearchResultItem())); }
public Task <PagedListResult <ClassifiedUserInfo> > FindClassifiedUsersByEmailAsync(string email, string continuationToken) { var query = appDBContext_.UserSearch() .Where(x => x.Email.Contains(email)) .OrderBy(x => x.AccountId); var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x.ToClassifiedUserInfo())); }
public Task <PagedListResult <ClassifiedUserInfo> > DeprecatedFindClassifiedUsersByNameAsync(string name, string continuationToken) { var query = appDBContext_.UserSearch() .Where(x => x.NormalizedName.Contains(userManager_.NormalizeName(name))) .OrderBy(x => x.NormalizedName); var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x.ToClassifiedUserInfo())); }
private Task <PagedListResult <DBHardDeletedUserAccount> > GetHardDeletedUsers(string continuationToken) { var query = from dbDeletedUser in appDBContext_.HardDeletedUserAccounts orderby dbDeletedUser.TimeStamp ascending select dbDeletedUser; var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x)); }
public Task <PagedListResult <ClassifiedUserSearchResultItem> > FindClassifiedUsersByNameAsync(string name, string continuationToken) { var query = from user in appDBContext_.Users where user.NormalizedUserName.Contains(userManager_.NormalizeName(name)) orderby user.NormalizedUserName select user; var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x.ToClassifiedUserSearchResultItem())); }
private Task <PagedListResult <DBSoftDeletedUserAccount> > GetUsersToHardDeleteAsync(string continuationToken) { var hardDeletionDelay = configuration_.IsProductionSlot() ? TimeSpan.FromDays(7) : TimeSpan.FromMinutes(5); var threshold = DateTime.UtcNow.Subtract(hardDeletionDelay); var query = from dbDeletedUser in appDBContext_.SoftDeletedUserAccounts where dbDeletedUser.TimeStamp < threshold orderby dbDeletedUser.TimeStamp ascending select dbDeletedUser; var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x)); }
public Task <PagedListResult <ClassifiedUserInfo> > FindClassifiedUsersByRoleAsync(IEnumerable <string> roleList, string continuationToken) { if (!roleList.Any()) { throw new ArgumentException("Should provide roleList", nameof(roleList)); } var query = appDBContext_.UserSearch(); foreach (var r in roleList) { query = query.Where(x => x.Roles.Contains(r)); } query = query.OrderBy(x => x.AccountId); var token = new OffsetBasedContinuationToken(continuationToken); return(query.PaginateListResultAsync(token, 20, x => x.ToClassifiedUserInfo())); }