public string GetExternalVerseRangeHtml(string input, TranslationControllerModel model)
        {
            input = System.Text.RegularExpressions.Regex.Replace(input, @"\<x\>(?<translationName>[a-zA-Z0-9]+)\s(?<book>[0-9]+)\s(?<chapter>[0-9]+)(\s)?\:(\s)?(?<verseStart>[0-9]+)\-(?<verseEnd>[0-9]+)\<\/x\>", delegate(System.Text.RegularExpressions.Match m) {
                var translationName = m.Groups["translationName"].Value;
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var baseBook        = model.Books.Where(x => x.NumberOfBook == numberOfBook).FirstOrDefault();
                var bookShortcut    = baseBook.IsNotNull() ? baseBook.BookShortcut : "";
                var numberOfChapter = m.Groups["chapter"].Value.ToInt();
                var verseStart      = m.Groups["verseStart"].Value.ToInt();
                var verseEnd        = m.Groups["verseEnd"].Value.ToInt();
                var versesText      = String.Empty;
                for (int i = verseStart; i <= verseEnd; i++)
                {
                    versesText += $"{i}";
                    if (i != verseEnd)
                    {
                        versesText += ",";
                    }
                }

                var verseText = String.Empty;

                var link = $"<a href=\"/{translationName}/{numberOfBook}/{numberOfChapter}/{versesText}\">{bookShortcut}&nbsp;{numberOfChapter}:{verseStart}-{verseEnd}</a>";

                if (verseText.IsNotNullOrEmpty())
                {
                    return($"{link} - <i>{verseText}</i>");
                }
                return(link);
            });
            return(input);
        }
        public string GetInternalVerseListText(string input, TranslationControllerModel model)
        {
            var pattern = @"\<x\>(?<book>[0-9]+)\s(?<chapter>[0-9]+)(\s)?\:(\s)?(?<verse1>[0-9]+)(\,)(\s)?(?<verse2>[0-9]+)(\,)?(\s)?(?<verse3>[0-9]+)?(\,)?(\s)?(?<verse4>[0-9]+)?(\,)?(\s)?(?<verse5>[0-9]+)?(\,)?(\s)?(?<verse6>[0-9]+)?(\,)?(\s)?(?<verse7>[0-9]+)?(\,)?(\s)?(?<verse8>[0-9]+)?(\,)?(\s)?(?<verse9>[0-9]+)?\<\/x\>";

            input = System.Text.RegularExpressions.Regex.Replace(input, pattern, delegate(System.Text.RegularExpressions.Match m) {
                var translationName = model.Translation.Name.Replace("+", "").Replace("'", "");
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var bookShortcut    = model.Translation.Books.Where(x => x.NumberOfBook == numberOfBook).First().BaseBook.BookShortcut;
                var numberOfChapter = m.Groups["chapter"].Value.ToInt();

                var text    = String.Empty;
                var preText = $"{bookShortcut} {numberOfChapter}:";

                text += $"{preText}{m.Groups["verse1"].Value}";

                for (int i = 2; i < 10; i++)
                {
                    if (m.Groups[$"verse{i}"] != null && m.Groups[$"verse{i}"].Success)
                    {
                        text += $", {m.Groups[$"verse{i}"].Value}";
                    }
                }

                return(text);
            });
            return(input);
        }
        public string GetInternalVerseText(string input, TranslationControllerModel model)
        {
            input = System.Text.RegularExpressions.Regex.Replace(input, @"\<x\>(?<book>[0-9]+)\s(?<chapter>[0-9]+)(\s)?\:(\s)?(?<verseStart>[0-9]+)\<\/x\>", delegate(System.Text.RegularExpressions.Match m) {
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var bookShortcut    = model.Translation.Books.Where(x => x.NumberOfBook == numberOfBook).First().BaseBook.BookShortcut;
                var numberOfChapter = m.Groups["chapter"].Value.ToInt();
                var verseStart      = m.Groups["verseStart"].Value.ToInt();

                return($"{bookShortcut} {numberOfChapter}:{verseStart}");
            });
            return(input);
        }
        public string GetExternalVerseRangeText(string input, TranslationControllerModel model)
        {
            input = System.Text.RegularExpressions.Regex.Replace(input, @"\<x\>(?<translationName>[a-zA-Z0-9]+)\s(?<book>[0-9]+)\s(?<chapter>[0-9]+)(\s)?\:(\s)?(?<verseStart>[0-9]+)\-(?<verseEnd>[0-9]+)\<\/x\>", delegate(System.Text.RegularExpressions.Match m) {
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var baseBook        = model.Books.Where(x => x.NumberOfBook == numberOfBook).FirstOrDefault();
                var bookShortcut    = baseBook.IsNotNull() ? baseBook.BookShortcut : "";
                var numberOfChapter = m.Groups["chapter"].Value.ToInt();
                var verseStart      = m.Groups["verseStart"].Value.ToInt();
                var verseEnd        = m.Groups["verseEnd"].Value.ToInt();

                return($"{bookShortcut} {numberOfChapter}:{verseStart}-{verseEnd}");
            });
            return(input);
        }
        public string GetMultiChapterRangeHtml(string input, TranslationControllerModel model)
        {
            var pattern = @"\<x\>(?<book>[0-9]+)\s(?<chapterStart>[0-9]+)(\s)?\:(\s)?(?<verseStart>[0-9]+)(\s)?\-(\s)?(?<chapterEnd>[0-9]+)(\s)?\:(\s)?(?<verseEnd>[0-9]+)";

            input = System.Text.RegularExpressions.Regex.Replace(input, pattern, delegate(System.Text.RegularExpressions.Match m) {
                var translationName = model.Translation.Name.Replace("+", "").Replace("'", "");
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var bookShortcut    = model.Translation.Books.Where(x => x.NumberOfBook == numberOfBook).First().BaseBook.BookShortcut;
                var chapterStart    = m.Groups["chapterStart"].Value.ToInt();
                var chapterEnd      = m.Groups["chapterEnd"].Value.ToInt();
                var verseStart      = m.Groups["verseStart"].Value.ToInt();
                var verseEnd        = m.Groups["verseEnd"].Value.ToInt();

                return($"<a href=\"/{translationName}/{numberOfBook}/{chapterStart}/{verseStart}\">{bookShortcut}&nbsp;{chapterStart}:{verseStart}</a>-<a href=\"/{translationName}/{numberOfBook}/{chapterEnd}/{verseEnd}\">{chapterEnd}:{verseEnd}</a>");
            });
            return(input);
        }
        public string GetInternalVerseHtml(string input, TranslationControllerModel model)
        {
            input = System.Text.RegularExpressions.Regex.Replace(input, @"\<x\>(?<book>[0-9]+)\s(?<chapter>[0-9]+)(\s)?\:(\s)?(?<verseStart>[0-9]+)\<\/x\>", delegate(System.Text.RegularExpressions.Match m) {
                var translationName = model.Translation.Name.Replace("+", "").Replace("'", "");
                var numberOfBook    = m.Groups["book"].Value.ToInt();
                var bookShortcut    = model.Translation.Books.Where(x => x.NumberOfBook == numberOfBook).First().BaseBook.BookShortcut;
                var numberOfChapter = m.Groups["chapter"].Value.ToInt();
                var verseStart      = m.Groups["verseStart"].Value.ToInt();

                var verseText = String.Empty;

                var link = $"<a href=\"/{translationName}/{numberOfBook}/{numberOfChapter}/{verseStart}\">{bookShortcut}&nbsp;{numberOfChapter}:{verseStart}</a>";

                if (verseText.IsNotNullOrEmpty())
                {
                    return($"{link} - <i>{verseText}</i>");
                }
                return(link);
            });
            return(input);
        }
Ejemplo n.º 7
0
        public IActionResult Index(string translationName, string book = null, string chapter = null, string verse = null)
        {
            var uow = new UnitOfWork();

            // adresy skrótowe
            if (!String.IsNullOrEmpty(translationName) && book.IsNull() && translationName.Length == 5)
            {
                var _url = new XPQuery <UrlShort>(uow).Where(x => x.ShortUrl == translationName).FirstOrDefault();
                if (_url.IsNotNull())
                {
                    return(Redirect(_url.Url));
                }
            }

            if (!String.IsNullOrEmpty(translationName))
            {
                var books = new XPQuery <BookBase>(uow).ToList();

                // wyświetlamy listę ksiąg z tego przekładu
                if (String.IsNullOrEmpty(book))
                {
                    var translation = new XPQuery <Translation>(uow).Where(x => x.Name.Replace("'", "").Replace("+", "").ToLower() == translationName.ToLower()).FirstOrDefault();
                    if (translation != null)
                    {
                        return(View(new TranslationControllerModel(translation, books: books)));
                    }
                }
                else
                {
                    var translation = new XPQuery <Translation>(uow).Where(x => x.Name.Replace("'", "").Replace("+", "").ToLower() == translationName.ToLower()).FirstOrDefault();
                    if (translation != null)
                    {
                        var result = new TranslationControllerModel(translation, book, chapter, verse, books);

                        var view = new XPView(uow, typeof(Translation))
                        {
                            CriteriaString = $"[Books][[NumberOfBook] = '{book}'] AND [Hidden] = 0"
                        };
                        view.Properties.Add(new ViewProperty("Name", SortDirection.None, "[Name]", false, true));
                        view.Properties.Add(new ViewProperty("Description", SortDirection.None, "[Description]", false, true));
                        view.Properties.Add(new ViewProperty("Type", SortDirection.None, "[Type]", false, true));
                        view.Properties.Add(new ViewProperty("Catholic", SortDirection.None, "[Catolic]", false, true));
                        view.Properties.Add(new ViewProperty("Recommended", SortDirection.None, "[Recommended]", false, true));
                        view.Properties.Add(new ViewProperty("OpenAccess", SortDirection.None, "[OpenAccess]", false, true));
                        foreach (ViewRecord item in view)
                        {
                            result.Translations.Add(new TranslationInfo()
                            {
                                Name             = item["Name"].ToString(),
                                Description      = item["Description"].ToString(),
                                Type             = (TranslationType)item["Type"],
                                Catholic         = (bool)item["Catholic"],
                                Recommended      = (bool)item["Recommended"],
                                PasswordRequired = !((bool)item["OpenAccess"])
                            });
                        }

                        return(View(result));
                    }
                }
            }

            return(View());
        }