public async Task <ResultsAndTotalCount <WalletDTO> > GetResultAndTotalCountWalletsAsync(string propertyValueContains, OrderBySettings <Wallet> orderBySettings, int skip, int take) { Expression <Func <Wallet, bool> > filterExpression; if (string.IsNullOrEmpty(propertyValueContains)) { filterExpression = null; } else { string uppercasePropertyValueContains = propertyValueContains.ToUpper(); filterExpression = Wallet => Wallet.PersonalData.FirstName.ToUpper().Contains(uppercasePropertyValueContains) || Wallet.PersonalData.LastName.ToUpper().Contains(uppercasePropertyValueContains) || Wallet.UniqueMasterCitizenNumber.Value.ToUpper().Contains(uppercasePropertyValueContains) || Wallet.SupportedBank.Name.ToUpper().Contains(uppercasePropertyValueContains); } ResultsAndTotalCount <Wallet> resultsAndTotalCount = await _unitOfWork .WalletRepository .GetResultsAndTotalCountAsync( filterExpression, orderBySettings, skip, take, Wallet => Wallet.SupportedBank ); List <WalletDTO> wallets = resultsAndTotalCount.Results.ToWalletDTOs().ToList(); return(new ResultsAndTotalCount <WalletDTO>(wallets, resultsAndTotalCount.TotalCount)); }
public async Task <ResultsAndTotalCount <SupportedBankDTO> > GetResultAndTotalCountSupportedBanksAsync( string propertyValueContains, OrderBySettings <SupportedBank> orderBySettings = null, int skip = 0, int?take = null) { Expression <Func <SupportedBank, bool> > filterExpression; if (string.IsNullOrEmpty(propertyValueContains)) { filterExpression = null; } else { string uppercasePropertyValueContains = propertyValueContains.ToUpper(); filterExpression = SupportedBank => SupportedBank.Name.ToUpper().Contains(uppercasePropertyValueContains); } ResultsAndTotalCount <SupportedBank> resultsAndTotalCount = await _unitOfWork .SupportedBankRepository .GetResultsAndTotalCountAsync( filterExpression, orderBySettings, skip, take ); List <SupportedBankDTO> supportedBanks = resultsAndTotalCount.Results.ToSupportedBankDTOs().ToList(); return(new ResultsAndTotalCount <SupportedBankDTO>(supportedBanks, resultsAndTotalCount.TotalCount)); }
public async Task <ResultsAndTotalCount <TEntity> > GetResultsAndTotalCountAsync( Expression <Func <TEntity, bool> > filterExpression = null, OrderBySettings <TEntity> orderBySettings = null, int skip = 0, int?take = null, params Expression <Func <TEntity, object> >[] includes ) { IQueryable <TEntity> query = DbSet.AsQueryable(); if (filterExpression != null) { query = query.Where(filterExpression); } int?totalCount = (skip > 0 || take.HasValue) ? (int?)await query.CountAsync() : (int?)null; if (orderBySettings != null) { query = orderBySettings.IsAscending ? query.OrderBy(orderBySettings.PropertySelector) : query.OrderByDescending(orderBySettings.PropertySelector); } if (skip > 0) { query = query.Skip(skip); } if (take.HasValue) { query = query.Take(take.Value); } foreach (Expression <Func <TEntity, object> > includeExpression in includes) { query = query.Include(includeExpression); } ICollection <TEntity> entities = await query.ToListAsync(); if (!totalCount.HasValue) { totalCount = entities.Count; } ResultsAndTotalCount <TEntity> resultsAndTotalCountDTO = new ResultsAndTotalCount <TEntity>(entities, totalCount.Value); return(resultsAndTotalCountDTO); }