예제 #1
0
        private void CreateBulletinModel(int bulletinNum, SourceData sourceData)
        {
            byte[] data        = ConvertModelText(sourceData.Blanks[bulletinNum].Model);
            int    buletinCode = sourceData.Blanks[bulletinNum].Marker;

            if (Ocr.Ocr.createBallotModel(data, bulletinNum, buletinCode) != 1)
            {
                Ocr.Ocr.ThrowLastError();
            }
            for (int i = 0; i < sourceData.Blanks[bulletinNum].Sections.Length; i++)
            {
                var election  = sourceData.GetElectionByNum(sourceData.Blanks[bulletinNum].Sections[i]);
                var pd        = new PollData();
                int candCount = election.Candidates.Length;
                int maxMarks  = election.MaxMarks;
                if (candCount != 0)
                {
                    pd.polltype = (maxMarks <= 1) ? (int)PollType.Single : (int)PollType.Multi;
                    pd.totalNum = candCount;
                    pd.MinValid = 1;
                    pd.MaxValid = maxMarks;
                }
                else
                {
                    pd.polltype = (int)PollType.Referendum;
                }
                if (Ocr.Ocr.SetPollData(bulletinNum, i, ref pd) != 1)
                {
                    Ocr.Ocr.ThrowLastError();
                }
            }
        }
예제 #2
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));
                }
            }
        }