Пример #1
0
        public DbVerse(IDictionary<string, object> dbRecord)
        {
            if (dbRecord == null)
                throw new ArgumentNullException("dbRecord", "dbRecord cannot be null.");

            var bookId = dbRecord.ValidateField<int>(BookField);
            if (!BibleBook.IsValidBook(bookId))
                throw new FormatException(string.Format("The '{0}' field does not refer to a valid book", BookField));

            var id = dbRecord.ValidateField<int>(VerseIdField);
            var fromChapter = dbRecord.ValidateField(BeginChapterField, 1);
            var fromVerse = dbRecord.ValidateField(BeginVerseField, 1);
            var toChapter = dbRecord.ValidateField(EndChapterField, fromChapter);
            var toVerse = dbRecord.ValidateField(EndVerseField, 1);

            Id = id;
            Book = BibleBook.GetBook(bookId);
            From = new ChapterVerse(fromChapter, fromVerse);
            To = new ChapterVerse(toChapter, toVerse);
            Title = dbRecord.ValidateField<string>(TitleField);
            Body = dbRecord.ValidateField<string>(BodyField);
            Date = dbRecord.ValidateDateField(DateField);

            if (From.CompareTo(To) > 0)
                throw new FormatException("The From reference should be before the To reference.");

            Translation = new DbTranslation(dbRecord);
        }