public BibleReferenceRange Build() { if (First == null) { throw new InvalidOperationException("Must add at least one reference"); } var range = new BibleReferenceRange { First = First, Last = Last }; return(range); }
public BibleReferenceParser.Data.BibleReferenceRange Deserialize() { var startReference = new BibleReference { Book = (BibleBook)StartBook, Chapter = StartChapter, Verse = StartVerse }; var endReference = new BibleReference { Book = (BibleBook)EndBook, Chapter = EndChapter, Verse = EndVerse }; var referenceRange = new BibleReferenceParser.Data.BibleReferenceRange { First = startReference, Last = endReference }; return(referenceRange); }
public object Clone() { var clone = new BibleReferenceRange { First = null, Last = null }; if (First != null) { clone.First = First.Clone() as BibleReference; } if (Last != null) { clone.Last = Last.Clone() as BibleReference; } return(clone); }
public static BibleReferenceRange From(BibleReferenceParser.Data.BibleReferenceRange referenceRange) { var startReference = referenceRange.First; var endReference = referenceRange.Last == null ? referenceRange.First : referenceRange.Last; var model = new BibleReferenceRange(); model.StartBook = (int)startReference.Book; model.StartChapter = startReference.Chapter.GetValueOrDefault(1); model.StartVerse = startReference.Verse.GetValueOrDefault(1); model.EndBook = (int)endReference.Book; model.EndChapter = endReference.Chapter.GetValueOrDefault(BibleDetails.GetLastChapterForBook(endReference.Book)); model.EndVerse = endReference.Verse.GetValueOrDefault(BibleDetails.GetLastVerseForBookChapter(endReference.Book, model.EndChapter)); return(model); }
public static bool IsValidBibleReferenceRange(BibleReferenceRange referenceRange) { if (referenceRange == null) { return(false); } if (!IsValidBibleReference(referenceRange.First)) { return(false); } if (referenceRange.Last != null) { if (!IsValidBibleReference(referenceRange.Last)) { return(false); } if (referenceRange.Last.CompareTo(referenceRange.First) < 0) { return(false); } } return(true); }