Example #1
0
        private static void UpdateArea(int areaNumber, IReadOnlyDictionary <Street, List <House> > streetHouses, string city)
        {
            using (var context = new ElectorContext())
            {
                var dbAreaId = context.Areas.FirstOrDefault(a => a.City.Name == city && a.AreaNumber == areaNumber).id;
                foreach (var street in streetHouses)
                {
                    var dbStreetId = AddOrUpdateStreet(city, street.Key, context);
                    foreach (var house in street.Value)
                    {
                        var dbHouseId     = AddOrUpdateHouse(dbStreetId, house, context);
                        var dbStreetHouse = context.AreaStreetHouses.FirstOrDefault(h => h.idArea == dbAreaId &&
                                                                                    h.idStreet == dbStreetId &&
                                                                                    h.idHouse == dbHouseId);

                        if (dbStreetHouse != null)
                        {
                            continue;
                        }

                        context.AreaStreetHouses.Add(new AreaStreetHouse()
                        {
                            idArea   = dbAreaId,
                            idStreet = dbStreetId,
                            idHouse  = dbHouseId
                        });

                        context.SaveChanges();
                    }
                }
            }
        }
Example #2
0
        private static int AddOrUpdateStreet(string city, Street street, ElectorContext context)
        {
            var dbCity = context.Citys.FirstOrDefault(c => c.Name == city);

            if (dbCity == null)
            {
                dbCity = new City()
                {
                    Name = city
                };
                context.Citys.Add(dbCity);
                context.SaveChanges();
            }


            Street dbStreet = context.Streets.FirstOrDefault(s =>
                                                             s.idCity == dbCity.id &&
                                                             s.FullName == street.FullName);

            if (dbStreet != null)
            {
                return(dbStreet.id);
            }

            dbStreet = context.Streets.FirstOrDefault(s =>
                                                      s.idCity == dbCity.id &&
                                                      s.FullName == street.GetRevertName);

            if (dbStreet != null)
            {
                return(dbStreet.id);
            }

            street.idCity = dbCity.id;
            context.Streets.Add(street);
            context.SaveChanges();

            return(street.id);
        }
Example #3
0
        private static int?AddOrUpdateFlat(int idHouse, Flat flat, ElectorContext context)
        {
            var dbFlat = context.Flats.FirstOrDefault(f =>
                                                      f.idHouse == idHouse &&
                                                      f.Number == flat.Number
                                                      );

            if (dbFlat != null)
            {
                return(dbFlat.id);
            }

            flat.idHouse = idHouse;
            context.Flats.Add(flat);
            context.SaveChanges();
            return(flat.id);
        }
Example #4
0
        private static int?AddOrUpdateHouse(int idStreet, House house, ElectorContext context)
        {
            var dbHouse = context.Houses.FirstOrDefault(h =>
                                                        h.idStreet == idStreet &&
                                                        h.Number == house.Number &&
                                                        h.SubNumber == house.SubNumber
                                                        );

            if (dbHouse != null)
            {
                return(dbHouse.id);
            }

            house.idStreet = idStreet;
            context.Houses.Add(house);
            context.SaveChanges();
            return(house.id);
        }
Example #5
0
        private static void UpdateProblems(string city, IReadOnlyList <Problem> problems)
        {
            using (var context = new ElectorContext())
            {
                int total = problems.Count;
                int cntr  = 0;
                foreach (var problem in problems)
                {
                    Console.WriteLine("Processinng problem {0} from {1}", cntr++, total);

                    if (problem.Street != null)
                    {
                        problem.idStreet = AddOrUpdateStreet(city, problem.Street, context);
                        if (problem.House != null)
                        {
                            problem.idHouse = AddOrUpdateHouse(problem.idStreet.Value, problem.House, context);

                            if (problem.Flat != null)
                            {
                                problem.idFlat = AddOrUpdateFlat(problem.idHouse.Value, problem.Flat, context);
                            }
                        }
                    }

                    var dbProblem = context.Problems.FirstOrDefault(p => p.idStreet == problem.idStreet &&
                                                                    p.idHouse == problem.idHouse && p.idFlat == problem.idFlat &&
                                                                    p.Text == problem.Text && p.FIO == problem.FIO);

                    if (dbProblem == null)
                    {
                        context.Problems.Add(new Problem()
                        {
                            Text     = problem.Text,
                            FIO      = problem.FIO,
                            idStreet = problem.idStreet,
                            idHouse  = problem.idHouse,
                            idFlat   = problem.idFlat
                        });
                        context.SaveChanges();
                    }
                }
            }
        }