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));
        }
Beispiel #2
0
 public ViewModel(
     CommentatorAndCommentary commentatorAndCommentary,
     SelectChapterAndVerse selectChapterAndVerse)
 {
     CommentatorAndCommentary = commentatorAndCommentary;
     SelectChapterAndVerse    = selectChapterAndVerse;
 }
Beispiel #3
0
 public ViewModel(
     Chapter chapter,
     int verseNumber,
     VerseAnalysisVM verseAnalysis,
     SelectChapterAndVerse selectChapterAndVerse)
 {
     Chapter               = chapter;
     VerseNumber           = verseNumber;
     VerseAnalysis         = verseAnalysis ?? throw new ArgumentNullException(nameof(verseAnalysis));
     SelectChapterAndVerse = selectChapterAndVerse;
 }
Beispiel #4
0
 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));
 }