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(); } } }
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)); } } }