private IQueryable <RegionInfo> GetFilteredQuery(GetRegionInfoInput input)
        {
            var query = QueryableExtensions.WhereIf(
                _regionInfoRepository.GetAll()
                .Include(p => p.CityInfo)
                .ThenInclude(p => p.StateInfo),
                !input.Filter.IsNullOrWhiteSpace(), u =>
                u.CityInfo.StateInfo.Name.Contains(input.Filter) ||
                u.CityInfo.Name.Contains(input.Filter) ||
                u.Name.Contains(input.Filter) ||
                u.Code.Contains(input.Filter));

            return(query);
        }
        public async Task <PagedResultDto <RegionInfoListDto> > GetRegionInfo(GetRegionInfoInput input)
        {
            var query     = GetFilteredQuery(input);
            var userCount = await query.CountAsync();

            var regionInfos = await query
                              .OrderBy(input.Sorting)
                              .PageBy(input)
                              .ToListAsync();

            var regionInfosListDto = ObjectMapper.Map <List <RegionInfoListDto> >(regionInfos);

            return(new PagedResultDto <RegionInfoListDto>(
                       userCount,
                       regionInfosListDto
                       ));
        }