Ejemplo n.º 1
0
        public static ElectionFoo GetFoo(string fileName)
        {
            ElectionFoo electionFoo = null;

            if (fileName.EndsWith(Consts.Ending2003Txt))
            {
                electionFoo = Duma2003;
            }
            else
            if (fileName.EndsWith(Consts.Ending2007Txt))
            {
                electionFoo = Duma2007;
            }
            else
            if (fileName.EndsWith(Consts.Ending2011Txt))
            {
                electionFoo = Duma2011;
            }
            else
            if (fileName.EndsWith(Consts.Ending2004Txt))
            {
                electionFoo = President2004;
            }
            else
            if (fileName.EndsWith(Consts.Ending2008Txt))
            {
                electionFoo = President2008;
            }
            else
            if (fileName.EndsWith(Consts.Ending2012Txt))
            {
                electionFoo = President2012;
            }
            else
            if (fileName.EndsWith(Consts.Ending2016Txt))
            {
                electionFoo = Duma2016;
            }
            else
            if (fileName.EndsWith(Consts.Ending2018Txt))
            {
                electionFoo = President2018;
            }

            return(electionFoo);
        }
Ejemplo n.º 2
0
        public Tik Create(string fileName)
        {
            var electionFoo = ElectionFoo.GetFoo(fileName);

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var lineCounter = 0;

            //var firstTime = true;

            var tik = new Tik()
            {
                Name = StringUtils.GetTikName(fileName)
            };

            using (var sr = new StreamReader(fileName, Encoding.GetEncoding(1251)))
            {
                while (!sr.EndOfStream)
                {
                    lineCounter++;
                    var line = sr.ReadLine();

                    if (lineCounter == electionFoo.NumberOfElectorsInList.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfElectorsInList, (x, v) => x.NumberOfVoters = v);
                    }
                    if (lineCounter == electionFoo.NumberOfEarlier.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfEarlier, (x, v) => x.NumberOfEarlier = v);
                    }
                    if (lineCounter == electionFoo.NumberOfIn.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfIn, (x, v) => x.NumberOfInside = v);
                    }
                    if (lineCounter == electionFoo.NumberOfOut.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfOut, (x, v) => x.NumberOfOutside = v);
                    }
                    if (lineCounter == electionFoo.NumberOfValidBallot.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfValidBallot, (x, v) => x.Valid = v);
                    }
                    if (lineCounter == electionFoo.NumberOfInvalidBallot.LineNumber)
                    {
                        Set(tik, line, electionFoo.NumberOfInvalidBallot, (x, v) => x.InValid = v);
                    }
                    if (lineCounter == electionFoo.Stationary.LineNumber)
                    {
                        Set(tik, line, electionFoo.Stationary, (x, v) => x.Stationary = v);
                    }
                    if (lineCounter == electionFoo.Portable.LineNumber)
                    {
                        Set(tik, line, electionFoo.Portable, (x, v) => x.Portable = v);
                    }

                    if (lineCounter == electionFoo.RowLocalElectionCommittee)
                    {
                        tik.Uiks = GetUiks(line);
                    }
                    if (lineCounter >= electionFoo.MinRowNumberForFactions)
                    {
                        //if (firstTime)
                        //{
                        //    CheckZero();
                        //    firstTime = false;
                        //}
                        //if (!GetNewPartyData(line, sr, fileName)) break;
                    }
                }
            }

            //Presence = 100 * ((double)(NumberOfEarlier + NumberOfIn + NumberOfOut)) / NumberOfElectorsInList;
            //AllPresences = Enumerable
            //   .Range(0, allNumberOfEarlier.Count)
            //   .Select(
            //      i =>
            //      Math.Round(
            //         100.0 * (allNumberOfEarlier[i] + allNumberOfIn[i] + allNumberOfOut[i]) /
            //         AllNumberOfElectorsInList[i], 2))
            //   .ToArray();

            //for (int i = 0; i < AllPresences.Length; i++)
            //{
            //    if (double.IsNaN(AllPresences[i]))
            //    {
            //        foreach (var electionCommittee in partiesData)
            //        {
            //            electionCommittee.Value.LocalElectionCommittees[i].Percent = double.NaN;
            //        }
            //        //Trace.WriteLine(uiks[i]);
            //    }
            //}

            stopWatch.Stop();
            //Trace.WriteLine(stopWatch.Elapsed);

            return(tik);
        }
Ejemplo n.º 3
0
        static ElectionFoo()
        {
            Duma2003 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 8,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВНЕСЕННЫХ_В_СПИСКИ, 9),
                NumberOfEarlier           = new Label(ЧИСЛО_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО, 11),
                NumberOfIn            = new Label(ЧИСЛО_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_НА_ИЗБИРАТЕЛЬНОМ_УЧАСТКЕ, 12),
                NumberOfOut           = new Label(ЧИСЛО_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ВНЕ_ПОМЕЩЕНИЯ_ДЛЯ_ГОЛОСОВАНИЯ, 13),
                NumberOfInvalidBallot = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 17),
                NumberOfValidBallot   = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 18),
                Portable   = new Label("Число бюллетеней в переносных ящиках для голосования", 15),
                Stationary = new Label("Число бюллетеней в стационарных ящиках для голосования", 16),
                MinRowNumberForFactions = 27,
            };

            Duma2007 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 8,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВНЕСЕННЫХ_В_СПИСКИ_ИЗБИРАТЕЛЕЙ, 9),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО, 11),
                NumberOfIn              = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_В_ПОМЕЩЕНИЯХ_ДЛЯ_ГОЛОСОВАНИЯ, 12),
                NumberOfOut             = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ВНЕ_ПОМЕЩЕНИЙ_ДЛЯ_ГОЛОСОВАНИЯ, 13),
                NumberOfInvalidBallot   = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 17),
                NumberOfValidBallot     = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 18),
                MinRowNumberForFactions = 29,
            };

            Duma2011 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 8,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВНЕСЕННЫХ_В_СПИСОК_ИЗБИРАТЕЛЕЙ, 9),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО, 11),
                NumberOfIn              = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_В_ПОМЕЩЕНИИ_ДЛЯ_ГОЛОСОВАНИЯ, 12),
                NumberOfOut             = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ВНЕ_ПОМЕЩЕНИЯ_ДЛЯ_ГОЛОСОВАНИЯ, 13),
                NumberOfInvalidBallot   = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 17),
                NumberOfValidBallot     = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 18),
                MinRowNumberForFactions = 28
            };

            Duma2016 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 8,
                NumberOfElectorsInList    = new Label("\"Число избирателей, внесенных в список избирателей на момент окончания голосования\"", 9),
                NumberOfEarlier           = new Label("\"Число избирательных бюллетеней, выданных избирателям, проголосовавшим досрочно\"", 11),
                NumberOfIn            = new Label("\"Число избирательных бюллетеней, выданных в помещении для голосования в день голосования\"", 12),
                NumberOfOut           = new Label("\"Число избирательных бюллетеней, выданных вне помещения для голосования в день голосования\"", 13),
                NumberOfInvalidBallot = new Label("\"Число недействительных избирательных бюллетеней\"", 17),
                NumberOfValidBallot   = new Label("\"Число действительных избирательных бюллетеней\"", 18),
                Portable   = new Label("\"Число избирательных бюллетеней, содержащихся в переносных ящиках для голосования\"", 15),
                Stationary = new Label("\"Число избирательных бюллетеней, содержащихся в стационарных ящиках для голосования\"", 16),
                MinRowNumberForFactions = 28
            };

            President2004 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 7,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВНЕСЕННЫХ_В_СПИСОК, 8),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ДОСРОЧНО, 10),
                NumberOfIn              = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 11),
                NumberOfOut             = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ВНЕ_ПОМЕЩЕНИЯ, 12),
                NumberOfInvalidBallot   = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 16),
                NumberOfValidBallot     = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 17),
                MinRowNumberForFactions = 26
            };

            President2008 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 11,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВКЛЮЧЕННЫХ_В_СПИСКИ_ИЗБИРАТЕЛЕЙ, 12),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО, 14),
                NumberOfIn              = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_В_ПОМЕЩЕНИЯХ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 15),
                NumberOfOut             = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ВНЕ_ПОМЕЩЕНИЙ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 16),
                NumberOfInvalidBallot   = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 20),
                NumberOfValidBallot     = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 21),
                MinRowNumberForFactions = 32
            };

            President2012 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 11,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВКЛЮЧЕННЫХ_В_СПИСОК_ИЗБИРАТЕЛЕЙ, 12),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО1, 14),
                NumberOfIn            = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_В_ПОМЕЩЕНИИ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 15),
                NumberOfOut           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ВНЕ_ПОМЕЩЕНИЯ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 16),
                NumberOfInvalidBallot = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 20),
                NumberOfValidBallot   = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 21),
                Portable   = new Label("Число избирательных бюллетеней в переносных ящиках для голосования", 18),
                Stationary = new Label("Число бюллетеней в стационарных ящиках для голосования", 19),
                MinRowNumberForFactions = 31
            };

            President2018 = new ElectionFoo()
            {
                RowLocalElectionCommittee = 11,
                NumberOfElectorsInList    = new Label(ЧИСЛО_ИЗБИРАТЕЛЕЙ_ВКЛЮЧЕННЫХ_В_СПИСОК_ИЗБИРАТЕЛЕЙ, 12),
                NumberOfEarlier           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ИЗБИРАТЕЛЯМ_ПРОГОЛОСОВАВШИМ_ДОСРОЧНО1, 14),
                NumberOfIn            = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_В_ПОМЕЩЕНИИ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 15),
                NumberOfOut           = new Label(ЧИСЛО_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ_ВЫДАННЫХ_ВНЕ_ПОМЕЩЕНИЯ_ДЛЯ_ГОЛОСОВАНИЯ_В_ДЕНЬ_ГОЛОСОВАНИЯ, 16),
                NumberOfInvalidBallot = new Label(ЧИСЛО_НЕДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 20),
                NumberOfValidBallot   = new Label(ЧИСЛО_ДЕЙСТВИТЕЛЬНЫХ_ИЗБИРАТЕЛЬНЫХ_БЮЛЛЕТЕНЕЙ, 21),
                Portable   = new Label("Число избирательных бюллетеней в переносных ящиках для голосования", 18),
                Stationary = new Label("Число бюллетеней в стационарных ящиках для голосования", 19),
                MinRowNumberForFactions = 25
            };
        }
Ejemplo n.º 4
0
        public ElectionCommitteeResults(string fileName)
        {
            ElectionFoo electionFoo = ElectionFoo.GetFoo(fileName);

            const int captionIndex = 1;
            var       stopWatch    = new Stopwatch();

            stopWatch.Start();

            var lineCouner = 0;

            var firstTime = true;

            using (var sr = new StreamReader(fileName, Encoding.GetEncoding(1251)))
            {
                while (!sr.EndOfStream)
                {
                    lineCouner++;
                    var line  = sr.ReadLine();
                    var parts = line.Split(new[] { Data.Core.Consts.Tab }, StringSplitOptions.RemoveEmptyEntries);

                    Func <int>         getTotal = () => Convert.ToInt32(parts[captionIndex + 1].Trim());
                    Func <List <int> > getAll   = () =>
                                                  Enumerable.Range(captionIndex + 2, parts.Length - captionIndex - 2)
                                                  .Select(i => Convert.ToInt32(parts[i].Trim()))
                                                  .ToList();

                    if (lineCouner == electionFoo.NumberOfElectorsInList.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfElectorsInList.Caption);
                        NumberOfElectorsInList = getTotal();

                        AllNumberOfElectorsInList = getAll();
                    }
                    if (lineCouner == electionFoo.NumberOfEarlier.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfEarlier.Caption);
                        NumberOfEarlier = getTotal();

                        allNumberOfEarlier = getAll();
                    }
                    if (lineCouner == electionFoo.NumberOfIn.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfIn.Caption);
                        NumberOfIn = getTotal();

                        allNumberOfIn = getAll();
                    }
                    if (lineCouner == electionFoo.NumberOfOut.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfOut.Caption);
                        NumberOfOut = getTotal();

                        allNumberOfOut = getAll();
                    }
                    if (lineCouner == electionFoo.NumberOfValidBallot.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfValidBallot.Caption);
                        NumberOfValidBallot = getTotal();
                    }
                    if (lineCouner == electionFoo.NumberOfInvalidBallot.LineNumber)
                    {
                        AssertCaption(parts[captionIndex], electionFoo.NumberOfInvalidBallot.Caption);
                        NumberOfInvalidBallot = getTotal();
                    }

                    if (lineCouner == electionFoo.RowLocalElectionCommittee)
                    {
                        GetUiks(line);
                    }
                    if (lineCouner >= electionFoo.MinRowNumberForFactions)
                    {
                        if (firstTime)
                        {
                            CheckZero();
                            firstTime = false;
                        }
                        if (!GetNewPartyData(line, sr, fileName))
                        {
                            break;
                        }
                    }
                }
            }

            Presence     = 100 * ((double)(NumberOfEarlier + NumberOfIn + NumberOfOut)) / NumberOfElectorsInList;
            AllPresences = Enumerable
                           .Range(0, allNumberOfEarlier.Count)
                           .Select(
                i =>
                Math.Round(
                    100.0 * (allNumberOfEarlier[i] + allNumberOfIn[i] + allNumberOfOut[i]) /
                    AllNumberOfElectorsInList[i], 2))
                           .ToArray();

            for (int i = 0; i < AllPresences.Length; i++)
            {
                if (double.IsNaN(AllPresences[i]))
                {
                    foreach (var electionCommittee in partiesData)
                    {
                        electionCommittee.Value.LocalElectionCommittees[i].Percent = double.NaN;
                    }
                    //Trace.WriteLine(uiks[i]);
                }
            }

            stopWatch.Stop();
            //Trace.WriteLine(stopWatch.Elapsed);
        }