public SelectChapterAndVerse CreateForCommentary( string commentatorCode, int selectedChapterNumber, int selectedVerseNumber, string url) { if (!ResultByCommentatorCode.TryGetValue(commentatorCode, out SelectChapterAndVerse result)) { IEnumerable <VerseReference> verseRangeReferences = CommentaryRepository .GetVerseRangeReferences(commentatorCode) .Select(x => new VerseReference(x.Chapter, x.FirstVerse)) .Distinct(); IEnumerable <ChapterAndVerseReferenceSelection> availableChaptersAndVerses = verseRangeReferences .GroupBy(x => x.Chapter) .Select(x => new ChapterAndVerseReferenceSelection( chapter: ChapterRepository.Get(x.Key), verseReferences: x.OrderBy(v => v.Verse))); result = new SelectChapterAndVerse( selectedChapterNumber: 1, selectedVerseNumber: 1, url: url, availableChapters: availableChaptersAndVerses); ResultByCommentatorCode[commentatorCode] = result; } return(result.WithValues( selectedChapterNumber: selectedChapterNumber, selectedVerseNumber: selectedVerseNumber, url: url)); }
public ViewModel( CommentatorAndCommentary commentatorAndCommentary, SelectChapterAndVerse selectChapterAndVerse) { CommentatorAndCommentary = commentatorAndCommentary; SelectChapterAndVerse = selectChapterAndVerse; }
public ViewModel( Chapter chapter, int verseNumber, VerseAnalysisVM verseAnalysis, SelectChapterAndVerse selectChapterAndVerse) { Chapter = chapter; VerseNumber = verseNumber; VerseAnalysis = verseAnalysis ?? throw new ArgumentNullException(nameof(verseAnalysis)); SelectChapterAndVerse = selectChapterAndVerse; }
public ViewModel( IEnumerable <ChapterAndVerseSelection> displayVerses, SelectChapterAndVerse selectChapterAndVerse, bool autoScrollToSelectedVerse) { DisplayVerses = displayVerses; SelectChapterAndVerse = selectChapterAndVerse; AutoScrollToSelectedVerse = autoScrollToSelectedVerse; Translators = DisplayVerses .SelectMany(x => x.Verses) .FirstOrDefault() ?.VerseTexts ?.Select(x => new Translator(x.TranslatorCode, x.TranslatorName)) ?? Array.Empty <Translator>(); }
public CommentariesForVerse Create(string commentatorCode, int chapterNumber, int verseNumber) { Dictionary <string, Commentator> commentatorByCode = CommentatorRepository.GetAll() .ToDictionary(x => x.Code, StringComparer.InvariantCultureIgnoreCase); Chapter chapter = ChapterRepository.Get(chapterNumber); IEnumerable <Commentary> commentaries; if (string.IsNullOrEmpty(commentatorCode)) { commentaries = CommentaryRepository.GetForVerse(chapterNumber, verseNumber); } else { commentaries = new Commentary[] { CommentaryRepository.GetForVerse(commentatorCode, chapterNumber, verseNumber) } .Where(x => x != null); } IEnumerable <CommentatorAndCommentary> commentatorsAndCommentaries = commentaries .OrderBy(x => x.CommentatorCode) .Select( x => new CommentatorAndCommentary( commentator: commentatorByCode[x.CommentatorCode], commentary: x) ); var selectChapterAndVerse = new SelectChapterAndVerse( selectedChapterNumber: chapterNumber, selectedVerseNumber: verseNumber, url: "/Tafsirs"); var viewModel = new CommentariesForVerse( chapter: chapter, verseNumber: verseNumber, selectChapterAndVerse: selectChapterAndVerse, commentaries: commentatorsAndCommentaries); return(viewModel); }
public ActionResult Index(int chapterNumber, int verseNumber) { if (!QuranStructure.TryValidateChapterAndVerse(chapterNumber, verseNumber)) { return(HttpNotFound()); } Chapter chapter = ChapterRepository.Get(chapterNumber); VerseAnalysis analysis = VerseAnalysisRepository.GetForVerse(chapterNumber, verseNumber); var selectChapterAndVerse = new SelectChapterAndVerse( selectedChapterNumber: chapterNumber, selectedVerseNumber: verseNumber, url: "/Analysis/"); var viewModel = new ViewModel( chapter: chapter, verseNumber: verseNumber, verseAnalysis: analysis, selectChapterAndVerse: selectChapterAndVerse); return(View("VerseAnalysis", viewModel)); }
public SelectChapterAndVerse CreateForAllChaptersAndVerses( int selectedChapterNumber, int selectedVerseNumber, string url) { if (ResultForAllChapters == null) { IEnumerable <ChapterAndVerseReferenceSelection> availableChapters = VerseRepository.GetVerseReferences() .GroupBy(x => x.Chapter) .Select(x => new ChapterAndVerseReferenceSelection( chapter: ChapterRepository.Get(x.Key), verseReferences: x)); ResultForAllChapters = new SelectChapterAndVerse( selectedChapterNumber: 1, selectedVerseNumber: 1, url: url); } return(ResultForAllChapters.WithValues( selectedChapterNumber: selectedChapterNumber, selectedVerseNumber: selectedVerseNumber, url: url)); }