Beispiel #1
0
        private CleanAddressDto ConvertCleanAnswerResponse(DaDataCleanAddressAnswer answer)
        {
            string region = null;

            if (!string.IsNullOrEmpty(answer?.Region))
            {
                region = $"{answer?.Region} {answer?.RegionType}";
            }

            string area = null;

            if (!string.IsNullOrEmpty(answer?.Area))
            {
                area = $"{answer?.Area} {answer?.AreaType}";
            }

            string city = null;

            if (!string.IsNullOrEmpty(answer?.City))
            {
                city = $"{answer?.CityType} {answer?.City}";
            }

            string settlement = null;

            if (!string.IsNullOrEmpty(answer?.Settlement))
            {
                settlement = $"{answer?.SettlementType} {answer?.Settlement}";
            }

            string street = null;

            if (!string.IsNullOrEmpty(answer?.Street))
            {
                street = $"{answer?.StreetType} {answer?.Street}";
            }

            var address = new CleanAddressDto
            {
                ResultAddress        = answer?.Result,
                PostalCode           = answer?.PostalCode,
                Region               = region,
                Area                 = area,
                City                 = city,
                Settlement           = settlement,
                Street               = street,
                House                = answer?.House,
                Block                = answer?.Block,
                UnparsedAddressParts = answer?.UnparsedParts
            };

            return(address);
        }
Beispiel #2
0
        public CleanAddressDto CleanAddress(string address)
        {
            CleanAddressDto result          = null;
            bool            isDaDataEnabled = _configuration.GetValue("Dadata:Enabled", true);

            if (isDaDataEnabled)
            {
                WebRequest request = CreateCleanAnswerRequest(address);

                WebResponse response = request.GetResponse();
                string      responseData;
                using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                {
                    responseData = reader.ReadToEnd();
                }

                Log.Information("Разбор адреса через КЛАДР запрошен для {address}", address);

                DaDataCleanAddressAnswer[] answer;
                answer = JsonConvert.DeserializeObject <DaDataCleanAddressAnswer[]>(responseData);

                if (answer != null && answer.Length > 0)
                {
                    if (!string.IsNullOrEmpty(answer[0].PostalCode) || !string.IsNullOrEmpty(answer[0].Fias))
                    {
                        result = ConvertCleanAnswerResponse(answer[0]);
                        Log.Information("Адрес {address} разобран как: {PostalCode}, {Region}, {City}, {Street}, {House}, не разобрано: {UnparsedAddressParts}",
                                        address, result.PostalCode, result.Region, result.City, result.Street, result.House, result.UnparsedAddressParts);
                    }
                    else
                    {
                        Log.Warning("В КЛАДР не определился ни почтовый индекс, ни ФИАС для {address}", address);
                    }
                }
                else
                {
                    Log.Warning("В КЛАДР не найдено вариантов для {address}", address);
                }
            }
            return(result);
        }