Пример #1
0
        public async Task <List <City> > GetCities(LocaleDto locale, CityFilterDto filter = null, PaginationRequestDto pagination = null, OrderDto order = null)
        {
            var uri = string.Format(FormatUriForGetCities(filter, pagination, order), Secrets.GeoHelperApiKey, locale.Lang, locale.FallbackLang);

            Debug.WriteLine(uri);

            var res = await GetAsync <City>(uri);

            return(res ?? new List <City>());
        }
Пример #2
0
        protected virtual IQueryable <City> ApplyPaging(IQueryable <City> query, CityFilterDto input)
        {
            var pagedInput = input as IPagedResultRequest;

            if (pagedInput != null)
            {
                return(query.PageBy(pagedInput));
            }

            var limitedInput = input as ILimitedResultRequest;

            if (limitedInput != null)
            {
                return(query.Take(limitedInput.MaxResultCount));
            }

            return(query);
        }
Пример #3
0
        //[AbpAuthorize(PermissionNames.AdminPage_City)]
        public virtual async Task <PagedResultDto <CityDto> > GetAll(CityFilterDto input)
        {
            var query = cityRepository.GetAll()
                        .WhereIf(input.Id != null, p => p.Id == input.Id)
                        .WhereIf(input.Name != null, p => p.Name == input.Name);

            var totalCount = await query.CountAsync();

            query = ApplySorting(query, input);
            query = ApplyPaging(query, input);

            var entities = await query.ToListAsync();

            return(new PagedResultDto <CityDto>(
                       totalCount,
                       entities.Select(p => p.MapTo <CityDto>())
                       .ToList()
                       ));
        }
Пример #4
0
        protected virtual IQueryable <City> ApplySorting(IQueryable <City> query, CityFilterDto input)
        {
            var sortInput = input as ISortedResultRequest;

            if (sortInput != null)
            {
                if (sortInput.Sorting.IsNotNullOrEmpty())
                {
                    return(query.OrderBy(sortInput.Sorting));
                }
            }

            if (input is ILimitedResultRequest)
            {
                return(query.OrderByDescending(e => e.Id));
            }

            return(query);
        }
Пример #5
0
        private static string FormatUriForGetCities(CityFilterDto filter, PaginationRequestDto pagination, OrderDto order)
        {
            var sb = new StringBuilder(GetCitiesUri);

            if (filter != null)
            {
                if (!string.IsNullOrEmpty(filter.CountryIso))
                {
                    sb.Append("&filter[countryIso]=");
                    sb.Append(filter.CountryIso);
                }

                if (filter.Id > 0)
                {
                    sb.Append("&filter[id]=");
                    sb.Append(filter.Id);
                }

                if (filter.Ids != null)
                {
                    for (var i = 0; i < filter.Ids.Length; i++)
                    {
                        sb.Append("&filter[ids][");
                        sb.Append(i);
                        sb.Append("]=");
                        sb.Append(filter.Ids[i]);
                    }
                }

                if (!string.IsNullOrEmpty(filter.Name))
                {
                    sb.Append("&filter[name]=");
                    sb.Append(filter.Name);
                }

                if (!string.IsNullOrEmpty(filter.NameStrictLanguage))
                {
                    sb.Append("&filter[nameStrictLanguage]=");
                    sb.Append(filter.NameStrictLanguage);
                }

                if (filter.RegionId > 0)
                {
                    sb.Append("&filter[regionId]=");
                    sb.Append(filter.RegionId);
                }

                if (filter.RegionCodes != null)
                {
                    for (var i = 0; i < filter.RegionCodes.Length; i++)
                    {
                        sb.Append("&filter[regionCodes][");
                        sb.Append(i);
                        sb.Append("]=");
                        sb.Append(filter.RegionCodes[i]);
                    }
                }
            }

            if (pagination != null)
            {
                sb.Append("&pagination[page]=");
                sb.Append(pagination.Page);
                sb.Append("&pagination[limit]=");
                sb.Append(pagination.Limit);
            }

            if (order == null)
            {
                return(sb.ToString());
            }

            if (!string.IsNullOrEmpty(order.By))
            {
                sb.Append("&order[by]=");
                sb.Append(order.By);
            }

            if (string.IsNullOrEmpty(order.Dir))
            {
                return(sb.ToString());
            }

            sb.Append("&order[dir]=");
            sb.Append(order.Dir);

            return(sb.ToString());
        }