private void ParseAddress(List <Company> companies, trustmeContext trustmeContext)
 {
     for (int i = 0; i < companies.Count; i++)
     {
         Guid     uuidCompany      = companies[i].Id;
         string[] fullAddressArray = companies[i].Address.Split(",");
         string[] shortAddresArray = null;
         if (fullAddressArray.Length == 1) // нет адреса
         {
             Console.WriteLine("не найден №" + i);
             AddRegionAndCityIdZero(uuidCompany, trustmeContext);
         }
         else // есть адрес
         {
             shortAddresArray = GetShortAddress(fullAddressArray);
             if (shortAddresArray[0] == "Не указан регион")
             {
                 AddRegionAndCityIdZero(uuidCompany, trustmeContext);
             }
             else
             {
                 Console.WriteLine("№" + i);
                 AddRegionAndCityId(uuidCompany, shortAddresArray, trustmeContext);
             }
         }
     }
 }
        private void AddRegionAndCityIdZero(Guid idCompany, trustmeContext context)
        {
            var currentCompany = context.Companies.FirstOrDefault(c => c.Id == idCompany);

            currentCompany.RegionId = 18;
            currentCompany.CityId   = 86;
            context.SaveChanges();
        }
        public ParsingManager()
        {
            var            companies   = GetCompanies();
            trustmeContext datacontext = new trustmeContext();

            //GetRegionsAndCitiesNames(datacontext);
            ParseAddress(companies, datacontext);
        }
 public List <Company> GetCompanies()
 {
     using (trustmeContext db = new trustmeContext())
     {
         return(db.Companies.Select(x => new Company {
             Id = x.Id, Address = x.Address, NameRu = x.NameRu, Bin = x.Bin
         }).ToList());
     }
 }
示例#5
0
 private string CityParser(string city, trustmeContext context)
 {
     city = city.Trim();
     if (city.Contains("Г.") || city.Contains("г.") || city.Contains("ГОРОД") || city.Contains("Город") || city.Contains("город")) // если город возвращаем название города
     {
         // корректировка слова город
         city = city.Replace("Г.", "");
         city = city.Replace("г.", "");
         city = city.Replace("ГОРОД", "");
         city = city.Replace("Город", "");
         city = city.Replace("город", "");
         city = city.Replace("А.", "");
         city = city.Replace("а.", "");
         city = city.Trim();
         // корректировка регистра
         char[] cityArr = city.ToCharArray();
         for (int i = 0; i < city.Length; i++)
         {
             if (i == 0)
             {
                 cityArr[i] = char.ToUpper(cityArr[i]);
             }
             else
             {
                 cityArr[i] = char.ToLower(cityArr[i]);
             }
         }
         city = String.Concat <char>(cityArr);
         if (city.Contains("Усть-каменогорск"))
         {
             city = "Усть-Каменогорск";
         }
         if (city.Contains("Форт-шевченко"))
         {
             city = "Форт-Шевченко";
         }
         if (city.Contains("Караганда"))
         {
             city = "Караганды";
         }
         foreach (var cityDB in context.Cities)
         {
             if (city.Contains(cityDB.Name))
             {
                 city = cityDB.Name;
                 break;
             }
         }
     }
     else // если район возвращаем слово "Район"
     {
         city = "Район";
     }
     return(city);
 }
示例#6
0
        private void ParseAddress(List <Company> companies, trustmeContext trustmeContext)
        {
            string noAddressSpecified = Directory.GetCurrentDirectory() + "\\noAddressSpecified.txt";
            string noRegionsFound     = Directory.GetCurrentDirectory() + "\\noRegionsFound.txt";
            string noCityFound        = Directory.GetCurrentDirectory() + "\\noCityFound.txt";
            string noAddressFound     = Directory.GetCurrentDirectory() + "\\noAddressFound.txt";
            string exc = Directory.GetCurrentDirectory() + "\\exc.txt";

            //if (System.IO.File.Exists(noAddressSpecified))
            //    System.IO.File.Delete(noAddressSpecified);
            //if (System.IO.File.Exists(noRegionsFound))
            //    System.IO.File.Delete(noRegionsFound);
            //if (System.IO.File.Exists(noCityFound))
            //    System.IO.File.Delete(noCityFound);
            //if (System.IO.File.Exists(noAddressFound))
            //    System.IO.File.Delete(noAddressFound);
            //if (System.IO.File.Exists(exc))
            //    System.IO.File.Delete(exc);

            for (int i = 0; i < companies.Count; i++)
            {
                //if(((companies[i].RegionId == 18) && (companies[i].CityId == 86)) || companies[i].Address.ToLower().Contains("семипалатинск"))
                //{
                Guid     uuidCompany       = companies[i].Id;
                string   fullAddress       = companies[i].Address;
                string[] fullAddressArray  = companies[i].Address.Split(",");
                string[] shortAddressArray = null;
                if (fullAddressArray.Length == 1 || fullAddressArray.Length == 2)     // нет адреса
                {
                    System.IO.File.AppendAllText(noAddressFound, companies[i].Id + "\n");
                    System.IO.File.AppendAllText(noAddressFound, companies[i].Address + "\n");
                    AddRegionAndCityIdZero(uuidCompany, trustmeContext);
                }
                else     // есть адрес
                {
                    shortAddressArray = GetShortAddress(fullAddressArray, trustmeContext);
                    shortAddressArray[shortAddressArray.Length - 1] = companies[i].Address;
                    if (shortAddressArray[0] == "Не указан регион")
                    {
                        AddRegionAndCityIdZero(uuidCompany, trustmeContext);
                        System.IO.File.AppendAllText(noAddressSpecified, companies[i].Id + "\n");
                        System.IO.File.AppendAllText(noAddressSpecified, companies[i].Address + "\n\n");
                    }
                    else
                    {
                        AddRegionAndCityId(uuidCompany, shortAddressArray, trustmeContext);
                        if (i % 1000 == 0)
                        {
                            Console.WriteLine("№" + i + $", текущее время - {DateTime.Now.ToShortTimeString()}");
                        }
                    }
                }
                //}
            }
        }
 private void GetRegionsAndCitiesNames(trustmeContext context)
 {
     Console.WriteLine("Регионы: ");
     foreach (var region in context.Regions.OrderBy(r => r.Id))
     {
         Console.WriteLine(region.Name);
     }
     Console.WriteLine("\nГорода: ");
     foreach (var city in context.Cities.OrderBy(r => r.Id))
     {
         Console.WriteLine(city.Name);
     }
 }
        private void AddRegionAndCityId(Guid uuidCompany, string[] address, trustmeContext context)
        {
            var currentCompany = context.Companies.FirstOrDefault(c => c.Id == uuidCompany);

            try
            {
                if (address.Length < 3) // только область
                {
                    currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                    currentCompany.CityId   = 86;
                    context.SaveChanges();
                }
                else // область и город/район
                {
                    if (address[1] != "Район") // область и город
                    {
                        Console.WriteLine("address[0]" + address[0]);
                        Console.WriteLine("address[1]" + address[address.Length - 1]);
                        foreach (var region in context.Regions.OrderBy(r => r.Id))
                        {
                            Console.WriteLine(region.Name);
                        }
                        currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                        currentCompany.CityId   = FindCityId(address[1], context);
                        context.SaveChanges();
                    }
                    else // область и район
                    {
                        currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                        currentCompany.CityId   = 86;
                        context.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
 private int FindCityId(string verifiableCity, trustmeContext context)
 {
     Console.WriteLine("ищем айди города: " + verifiableCity);
     if (context.Cities.FirstOrDefault(c => c.Name.ToLower().Contains(verifiableCity.ToLower())) != null)
     {
         return(context.Cities.FirstOrDefault(c => c.Name == verifiableCity).Id);
     }
     else
     {
         if (verifiableCity == "Ақкөл")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Акколь").Id);
         }
         else if (verifiableCity == "Ақсай")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Аксай").Id);
         }
         else if (verifiableCity == "Ақсу")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Аксу").Id);
         }
         else if (verifiableCity == "Ақтау")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Актау").Id);
         }
         else if (verifiableCity == "Ақтөбе")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Актобе").Id);
         }
         else if (verifiableCity == "Алға")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Алга").Id);
         }
         else if (verifiableCity == "Арқалық")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Аркалык").Id);
         }
         else if (verifiableCity == "Аягөз")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Аягоз").Id);
         }
         else if (verifiableCity == "Байқоңыр")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Байконыр").Id);
         }
         else if (verifiableCity == "Балқаш")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Балхаш").Id);
         }
         else if (verifiableCity == "Булаев")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Булаево").Id);
         }
         else if (verifiableCity == "Державин")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Державинск").Id);
         }
         else if (verifiableCity == "Есік")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Есик").Id);
         }
         else if (verifiableCity == "Есіл")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Есиль").Id);
         }
         else if (verifiableCity == "Жаңаөзен")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Жанаозен").Id);
         }
         else if (verifiableCity == "Жаңатас")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Жанатас").Id);
         }
         else if (verifiableCity == "Жезқазған")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Жезказган").Id);
         }
         else if (verifiableCity == "Жетісай")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Жетысай").Id);
         }
         else if (verifiableCity == "Жітіқара")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Житикара").Id);
         }
         else if (verifiableCity == "Зайсаң")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Зайсан").Id);
         }
         else if (verifiableCity == "Қазалы")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Казалинск").Id);
         }
         else if (verifiableCity == "Қандыағаш")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Кандыагаш").Id);
         }
         else if (verifiableCity == "Қапшағай")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Капшагай").Id);
         }
         else if (verifiableCity == "Қарағанды")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Караганды").Id);
         }
         else if (verifiableCity == "Қаражал")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Каражал").Id);
         }
         else if (verifiableCity == "Қаратау")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Каратау").Id);
         }
         else if (verifiableCity == "Қарқаралы")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Каркаралинск").Id);
         }
         else if (verifiableCity == "Қаскелең")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Каскелен").Id);
         }
         else if (verifiableCity == "Көкшетау")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Кокшетау").Id);
         }
         else if (verifiableCity == "Қостанай")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Костанай").Id);
         }
         else if (verifiableCity == "Құлсары")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Кулсары").Id);
         }
         else if (verifiableCity == "Қызылорда")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Кызылорда").Id);
         }
         else if (verifiableCity == "Леңгір")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Ленгер").Id);
         }
         else if (verifiableCity == "Мамлют")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Мамлютка").Id);
         }
         else if (verifiableCity == "Петропавл")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Петропавловск").Id);
         }
         else if (verifiableCity == "Приозер")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Приозёрск").Id);
         }
         else if (verifiableCity == "Саран")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Сарань").Id);
         }
         else if (verifiableCity == "Сарқант")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Сарканд").Id);
         }
         else if (verifiableCity == "Сарыағаш")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Сарыагаш").Id);
         }
         else if (verifiableCity == "Сәтбаев")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Сатпаев").Id);
         }
         else if (verifiableCity == "Сергеев")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Сергеевка").Id);
         }
         else if (verifiableCity == "Талғар")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Талгар").Id);
         }
         else if (verifiableCity == "Талдықорған")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Талдыкорган").Id);
         }
         else if (verifiableCity == "Текелі")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Текели").Id);
         }
         else if (verifiableCity == "Темір")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Темир").Id);
         }
         else if (verifiableCity == "Теміртау")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Темиртау").Id);
         }
         else if (verifiableCity == "Түркістан")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Туркестан").Id);
         }
         else if (verifiableCity == "Орал")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Уральск").Id);
         }
         else if (verifiableCity == "Өскемен")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Усть-Каменогорск").Id);
         }
         else if (verifiableCity == "Үшарал")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Ушарал").Id);
         }
         else if (verifiableCity == "Үштөбе")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Уштобе").Id);
         }
         else if (verifiableCity == "Шалқар")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Шалкар").Id);
         }
         else if (verifiableCity == "Екібастұз")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Экибастуз").Id);
         }
         else if (verifiableCity == "Ембі")
         {
             return(context.Cities.FirstOrDefault(c => c.Name == "Эмба").Id);
         }
         else
         {
             return(86);
         }
     }
 }
示例#10
0
        private string[] GetShortAddress(string[] fullAddressArray, trustmeContext context)
        {
            string[] shortAddress = null;
            string   address      = null;

            if (string.IsNullOrEmpty(fullAddressArray[1]) || fullAddressArray[1] == " ") // если после индекса пустая строчка, удаляем первый элемент
            {
                string[] changedAddressArray = new string[fullAddressArray.Length - 1];
                for (int i = 0; i < changedAddressArray.Length; i++)
                {
                    changedAddressArray[i] = fullAddressArray[i + 1];
                }
                shortAddress = GetShortAddress(changedAddressArray, context);
            }
            else
            {
                address = RegionParser(fullAddressArray[1], context);
                if (address.Contains("Город"))
                {
                    shortAddress    = new string[2];
                    shortAddress[0] = RegionParser(fullAddressArray[1], context);
                }
                else if (address.Contains("область"))
                {
                    shortAddress    = new string[4];
                    shortAddress[0] = RegionParser(fullAddressArray[1], context); // Область
                    shortAddress[1] = CityParser(fullAddressArray[2], context);   // Район/Город
                    if (shortAddress[1] == "Шымкент")                             // если городом оказался Шымкент, то ему нужно присвоить RegionId
                    {
                        shortAddress    = new string[2];
                        shortAddress[0] = RegionParser(fullAddressArray[1], context); // меняем на слово "Город Шымкент"
                    }
                    else if (shortAddress[1] != "Район")                              // если город
                    {
                        shortAddress[2] = "Улица";
                    }
                    else // если район
                    {
                        if (fullAddressArray.Length > 3)
                        {
                            shortAddress[2] = CityParser(fullAddressArray[3], context);
                            if (shortAddress[2] == "Район") // если район
                            {
                                shortAddress[1] = "Район";
                                shortAddress[2] = "Село";
                            }
                            else if (shortAddress[2] == "Шымкент") // если городом оказался Шымкент, то ему нужно присвоить RegionId
                            {
                                shortAddress    = new string[2];
                                shortAddress[0] = RegionParser(fullAddressArray[1], context); // меняем на слово "Город Шымкент"
                            }
                            else // если город
                            {
                                shortAddress[1] = CityParser(fullAddressArray[3], context);
                                shortAddress[2] = "Улица";
                            }
                        }
                    }
                }
                else // если не указан ни город, ни область
                {
                    shortAddress    = new string[2];
                    shortAddress[0] = "Не указан регион";
                }
            }
            return(shortAddress);
        }
示例#11
0
        private void AddRegionAndCityId(Guid uuidCompany, string[] address, trustmeContext context)
        {
            string noRegionsFound = Directory.GetCurrentDirectory() + "\\noRegionsFound.txt";
            string noCityFound    = Directory.GetCurrentDirectory() + "\\noCityFound.txt";
            string exc            = Directory.GetCurrentDirectory() + "\\exc.txt";
            var    currentCompany = context.Companies.FirstOrDefault(c => c.Id == uuidCompany);
            string region         = null;

            try
            {
                if (address.Length < 3) // только область
                {
                    region = context.Regions.FirstOrDefault(r => r.Name == address[0]).Name;
                    if (region == null)
                    {
                        System.IO.File.AppendAllText(noRegionsFound, currentCompany.Id + "\n");
                        System.IO.File.AppendAllText(noRegionsFound, address[address.Length - 1] + "\n\n");
                    }
                    else
                    {
                        currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                        currentCompany.CityId   = 86;
                        context.SaveChanges();
                    }
                }
                else // область и город/район
                {
                    if (address[1] != "Район") // область и город
                    {
                        region = context.Regions.FirstOrDefault(r => r.Name == address[0]).Name;
                        if (region == null)
                        {
                            System.IO.File.AppendAllText(noRegionsFound, currentCompany.Id + "\n");
                            System.IO.File.AppendAllText(noRegionsFound, address[address.Length - 1] + "\n\n");
                        }
                        else
                        {
                            currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                        }
                        int cityId = FindCityId(address[1], context);
                        if (cityId == 86)
                        {
                            System.IO.File.AppendAllText(noCityFound, currentCompany.Id + "\n");
                            System.IO.File.AppendAllText(noCityFound, address[address.Length - 1] + "\n\n");
                        }
                        else
                        {
                            currentCompany.CityId = cityId;
                            context.SaveChanges();
                        }
                    }
                    else // область и район
                    {
                        region = context.Regions.FirstOrDefault(r => r.Name == address[0]).Name;
                        if (region == null)
                        {
                            System.IO.File.AppendAllText(noRegionsFound, currentCompany.Id + "\n");
                            System.IO.File.AppendAllText(noRegionsFound, address[address.Length - 1] + "\n\n");
                        }
                        else
                        {
                            currentCompany.RegionId = context.Regions.FirstOrDefault(r => r.Name == address[0]).Id;
                        }
                        currentCompany.CityId = 86;
                        context.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(exc, currentCompany.Id + "\n");
                System.IO.File.AppendAllText(exc, ex.Message + "\n\n");
                Console.WriteLine(ex);
            }
        }
示例#12
0
        private string RegionParser(string region, trustmeContext context)
        {
            region = region.Trim();
            // корректировка слова Город
            if (region.Contains("Г.") || region.Contains("г.") || region.Contains("ГОРОД") || region.Contains("Город") || region.Contains("город") || region.Contains("Г ") || region.Contains("г "))
            {
                // корректировка города Алматы
                if (region.ToLower().Contains("алматы") || region.ToLower().Contains("алма-ата"))
                {
                    region = "Город Алматы";
                }

                // корректировка города Нур-Султан
                if (region.ToLower().Contains("астана") || region.ToLower().Contains("нур-султан"))
                {
                    region = "Город Нур-Султан";
                }

                // корректировка города Шымкент
                if (region.ToLower().Contains("шымкент"))
                {
                    region = "Город Шымкент";
                }
            }
            else if (region.Contains("ОБЛАСТЬ") || region.Contains("Область") || region.Contains("область") || region.Contains("ОБЛ ") || region.Contains("Обл ") || region.Contains("обл ") || region.Contains("ОБЛ.") || region.Contains("Обл.") || region.Contains("обл."))
            {
                // корректировка слова область
                region = region.Replace("ОБЛАСТЬ", "область");
                region = region.Replace("Область", "область");
                region = region.Replace("ОБЛ ", "область");
                region = region.Replace("Обл ", "область");
                region = region.Replace("обл ", "область");
                region = region.Replace("ОБЛ.", "область");
                region = region.Replace("Обл.", "область");
                region = region.Replace("обл.", "область");

                // корректировка положения слова область
                if (region.IndexOf("область") == 0)
                {
                    region = region.Remove(0, 8);
                    region = region.Insert(region.Length, " область");
                }

                // корректировка регистра областей
                char[] addressArr = region.ToCharArray();
                for (int i = 0; i < addressArr.Length; i++)
                {
                    if (i == 0)
                    {
                        addressArr[i] = char.ToUpper(addressArr[i]);
                    }
                    else
                    {
                        addressArr[i] = char.ToLower(addressArr[i]);
                    }
                }
                region = String.Concat <char>(addressArr);
            }
            if (region.ToLower().Contains("восточно"))
            {
                region = "Восточно-Казахстанская область";
            }
            if (region.ToLower().Contains("западно"))
            {
                region = "Западно-Казахстанская область";
            }
            if (region.ToLower().Contains("северо"))
            {
                region = "Северо-Казахстанская область";
            }
            if (region.ToLower().Contains("южно"))
            {
                region = "Туркестанская область";
            }

            foreach (var regionDB in context.Regions)
            {
                if (region.Contains(regionDB.Name))
                {
                    region = regionDB.Name;
                    break;
                }
            }
            return(region);
        }