예제 #1
0
        private async void ToCity_TextChanged(object sender, AutoSuggestBoxTextChangedEventArgs args)
        {
            var suggest = sender as AutoSuggestBox;

            if (args == null || args.Reason != AutoSuggestionBoxTextChangeReason.UserInput || string.IsNullOrEmpty(suggest.Text))
            {
                suggest.ItemsSource = null;
                _viewModel.ToCity   = new CityDto();
                return;
            }

            var namePart = new NamePartDto
            {
                Part      = suggest.Text,
                CountryId = _viewModel.ToCountry.Id
            };
            var serializedNamePart = JsonConvert.SerializeObject(namePart);

            var(_, content) = await _network.LoadDataPostAsync(Url.CityList, serializedNamePart, null);

            if (string.IsNullOrEmpty(content))
            {
                return;
            }

            var cityList = JsonConvert.DeserializeObject <List <CityDto> >(content);

            suggest.ItemsSource = cityList;
            if (suggest.Text.Length == 0)
            {
                suggest.ItemsSource = null;
            }
        }
예제 #2
0
        public async Task <IEnumerable <CountryDto> > GetListAsync([FromBody, BindRequired] NamePartDto namePartDto)
        {
            if (namePartDto == null)
            {
                throw new ArgumentNullException(nameof(namePartDto));
            }
            var currentCulture = _customRequestCultureProvider.DetermineProviderCultureResult(HttpContext);

            return(await _countryService.GetCountryListByNamePartAsync(namePartDto, currentCulture));
        }
예제 #3
0
        public async Task <IEnumerable <CityDto> > GetCityListByNamePartAsync(NamePartDto namePartDto, string currentCulture)
        {
            if (namePartDto == null)
            {
                throw new ArgumentNullException(nameof(namePartDto));
            }
            if (string.IsNullOrEmpty(namePartDto.Part))
            {
                throw new ArgumentNullException(nameof(namePartDto.Part));
            }

            var namePart = namePartDto.Part;

            List <City> cityList;

            switch (currentCulture)
            {
            case Cultures.En:
                cityList = await _cityStorage.GetCityListByNamePartAsNoTrackingAsync(namePart, namePartDto.CountryId);

                break;

            case Cultures.Ru:
                cityList = await _cityStorage.GetCityListByNamePartRuAsNoTrackingAsync(namePart, namePartDto.CountryId);

                break;

            default:
                cityList = await _cityStorage.GetCityListByNamePartRuAsNoTrackingAsync(namePart, namePartDto.CountryId);

                break;
            }

            var cityDtoList = cityList.Select(x => new CityDto
            {
                Id      = x.Id,
                Name    = $"{x.Name}, {x.Country.Name}",
                Country = x.Country
            });

            return(cityDtoList);
        }
예제 #4
0
        private async void FromCity_TextChanged(object sender, AutoSuggestBoxTextChangedEventArgs args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            var suggest = sender as AutoSuggestBox;

            if (args.Reason != AutoSuggestionBoxTextChangeReason.UserInput || string.IsNullOrEmpty(suggest?.Text))
            {
                if (suggest != null)
                {
                    suggest.ItemsSource = null;
                }
                _viewModel.FromCity = null;
                return;
            }

            var namePart = new NamePartDto
            {
                Part = suggest.Text
            };
            var serializedNamePart = JsonConvert.SerializeObject(namePart);

            var(_, content) = await _network.LoadDataPostAsync(Url.CityList, serializedNamePart, null);

            if (string.IsNullOrEmpty(content))
            {
                return;
            }

            var cityList = JsonConvert.DeserializeObject <List <CityDto> >(content);

            suggest.ItemsSource = cityList;
            if (suggest.Text.Length == 0)
            {
                suggest.ItemsSource = null;
            }
        }