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>()); }
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); }
//[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() )); }
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); }
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()); }