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);
        }
        private IEnumerable <SelectListItem> CreateTafsirsSelection(string selectedValue)
        {
            var group = new SelectListGroup {
                Name = SearchContextGroupNames.Commentaries
            };
            var result = new List <SelectListItem>();
            IEnumerable <Commentator> commentators =
                CommentatorRepository.GetAll()
                .OrderBy(x => x.Code);

            foreach (Commentator commentator in commentators)
            {
                string code = $"{SearchContexts.Commentaries}-{commentator.Code}";
                var    item = new SelectListItem {
                    Group    = group,
                    Selected = (selectedValue == code),
                    Value    = code,
                    Text     = $"{commentator.Code} ({commentator.Description})"
                };
                result.Add(item);
            }
            return(result);
        }
        public ActionResult Index()
        {
            var viewModel = CommentatorRepository.GetAll();

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