public async virtual Task <PagedResultDto <TEntityDto> > GetAll(TGetAllInput input) { Expression <Func <TEntity, bool> > expression = null; Tuple <Expression <Func <TEntity, object> >[], bool> sorting = null; int pageNumber = 0; int itemsPerPage = 0; int totalCount = 0; IEnumerable <TEntity> list = null; expression = ApplyFiltering(input); sorting = ApplySorting(input); var pageInput = input as IPagedResultRequest; if (pageInput != null) { pageNumber = pageInput.PageIndex - 1; if (pageNumber < 0) { pageNumber = 0; } itemsPerPage = pageInput.PageSize; list = await Repository.GetAllPagedAsync(expression, pageNumber, itemsPerPage, sorting.Item2, sorting.Item1); } else { list = await Repository.GetAllAsync(expression, sorting.Item2, sorting.Item1); } totalCount = await Repository.CountAsync(expression); return(new PagedResultDto <TEntityDto>(pageNumber, itemsPerPage, totalCount, MapToEntityDtoList(list.ToList()))); }