Exemplo n.º 1
0
        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())));
        }