Beispiel #1
0
        private void CheckBlanks()
        {
            var electionIdToBlankIdMap = new Dictionary <string, string>();
            var electionVotingModes    = new Hashtable();

            foreach (var blank in _sourceData.Blanks)
            {
                if (blank.Sections.Length == 0)
                {
                    throw new SourceDataVerifierException(String.Format("Бланк {0} не содержит секций", blank.Id));
                }
                electionVotingModes.Clear();
                foreach (var section in blank.Sections)
                {
                    var electionOnSect = _sourceData.GetElectionByNum(section);
                    if (electionOnSect == null)
                    {
                        throw new SourceDataVerifierException(
                                  String.Format("Бланк {0} ссылается на несуществующие выборы {1}",
                                                blank.Id, section));
                    }
                    if (electionIdToBlankIdMap.ContainsKey(electionOnSect.ElectionId))
                    {
                        throw new SourceDataVerifierException(
                                  String.Format("Выборы {0} размещены на двух бланках: {1}, {2}",
                                                electionOnSect.ElectionId, blank.Id,
                                                electionIdToBlankIdMap[electionOnSect.ElectionId]));
                    }
                    electionIdToBlankIdMap[electionOnSect.ElectionId] = blank.Id;
                    foreach (var mode in electionOnSect.VotingModes)
                    {
                        if (electionVotingModes.Contains(mode))
                        {
                            electionVotingModes[mode] = (int)electionVotingModes[mode] + 1;
                        }
                        else
                        {
                            electionVotingModes.Add(mode, 1);
                        }
                    }
                }
                foreach (var mode in electionVotingModes.Keys)
                {
                    if ((int)electionVotingModes[mode] != blank.Sections.Length)
                    {
                        throw new SourceDataVerifierException(
                                  String.Format("Не все выборы на бланке {0} содержат режим {1}",
                                                blank.Id, mode));
                    }
                }
            }
            foreach (var election in _sourceData.Elections)
            {
                if (string.CompareOrdinal(
                        _sourceData.GetBlankIdByElectionNumber(election.ElectionId),
                        SourceData.UNDEFINED_ID) == 0)
                {
                    throw new SourceDataVerifierException(
                              String.Format("Для выборов {0} не определен бланк", election.ElectionId));
                }
            }
        }