コード例 #1
0
        public ActionResult Index(string verses, int?context)
        {
            IEnumerable <VerseRangeReference> verseRangeReferences = verses.Split(',')
                                                                     .ToList()
                                                                     .ConvertAll(x => VerseRangeReference.Parse(x));

            if (!verseRangeReferences.Any())
            {
                verseRangeReferences = new VerseRangeReference[] { new VerseRangeReference(1, 1, 1) }
            }
            ;

            VerseRangeReference firstReference = verseRangeReferences.First();
            bool autoScrollToSelectedVerse     = verseRangeReferences.Count() == 1 && context.HasValue && context > 0;

            if (autoScrollToSelectedVerse)
            {
                verseRangeReferences = AddSurroundingVerses(context, firstReference);
            }

            IEnumerable <Verse> retrievedVerses = VerseRepository.GetVerses(verseRangeReferences)
                                                  .OrderBy(x => x.ChapterNumber)
                                                  .ThenBy(x => x.VerseNumber);

            var displayVerses = new List <ChapterAndVerseSelection>();

            foreach (VerseRangeReference verseRangeReference in verseRangeReferences)
            {
                IEnumerable <Verse> currentSelection =
                    retrievedVerses
                    .Where(x => verseRangeReference.Includes(x.ChapterNumber, x.VerseNumber));
                var chapterAndSelection = new ChapterAndVerseSelection(ChapterRepository.Get(verseRangeReference.Chapter), currentSelection);
                displayVerses.Add(chapterAndSelection);
            }

            var viewModel = new ViewModel(
                displayVerses: displayVerses,
                selectChapterAndVerse: new SelectChapterAndVerse(
                    firstReference.Chapter,
                    firstReference.FirstVerse,
                    url: ""),
                autoScrollToSelectedVerse: autoScrollToSelectedVerse
                );

            return(View("QuranVerses", viewModel));
        }