public async Task <PagedResults <PasswordSiteModel> > Handle(GetPasswordSiteListRequest request, CancellationToken cancellationToken) { var user = await userManager.FindByNameAsync(request.GetUserName()); var totalPasswordList = await passwordSiteRepository.GetAllPasswordsCount(user.Id, request.SearchValue); var passwordList = await passwordSiteRepository.GetAllPasswords(user.Id, request.SearchValue, request.SortParams, request.PageParams); var passwordSiteModelList = passwordList.Select(x => new PasswordSiteModel() { NameSite = x.NameSite, Password = x.Password, UserNameSite = x.UserNameSite, PasswordSiteId = x.Id }); var inmutableList = ImmutableList.CreateRange(passwordSiteModelList); return(PagedResults.Create(inmutableList, totalPasswordList)); }
private static async Task <PagedResults <TEntity> > PaginateAsync <TEntity, TQuery>(this IMongoQueryable <TEntity> collection, int page, int resultsPerPage, string orderbyKey, SortOrder sortOrder) { page = page <= 0 ? 1 : page; resultsPerPage = resultsPerPage <= 0 ? 10 : resultsPerPage; var isEmpty = await collection.AnyAsync() == false; if (isEmpty) { return(PagedResults <TEntity> .Empty); } var totalResults = await collection.CountAsync(); var totalPages = (int)(totalResults / resultsPerPage) + 1; var skip = (page - 1) * resultsPerPage; var data = await collection.OrderData(orderbyKey, sortOrder).Skip(skip).Take(resultsPerPage).ToListAsync(); return(PagedResults <TEntity> .Create(data, page, resultsPerPage, totalPages, totalResults)); }