private async Task <Stream> CreateStream(CompareVerseModel model) { var licData = await GetLicData(); var host = (this.Request.IsHttps ? "https://" : "http://") + this.Request.Host; var result = new CompareVersesExporter(licData, host).Export(model, Format); if (result.IsNotNull() && result.Length > 0) { return(new MemoryStream(result)); } return(default);
internal CompareVerseModel GetModel(QueryString qs) { if (qs.IsNotNull() && qs.Value.IsNotNullOrEmpty() && qs.Value.Length > 3) { var value = qs.Value; var onlyLiteral = value.Contains("literal"); if (value.Contains("&")) { value = value.Substring(0, value.IndexOf("&")); } var id = value.Replace("?id=", "").Trim(); var vi = new VerseIndex(id); var uow = new UnitOfWork(); var baseBookShortcut = ""; var baseBookName = ""; var biblePart = BiblePart.None; var viewBaseBook = new XPView(uow, typeof(BookBase)) { CriteriaString = $"NumberOfBook == {vi.NumberOfBook}" }; viewBaseBook.Properties.Add(new ViewProperty("Oid", SortDirection.None, "[Oid]", false, true)); viewBaseBook.Properties.Add(new ViewProperty("BookShortcut", SortDirection.None, "[BookShortcut]", false, true)); viewBaseBook.Properties.Add(new ViewProperty("BookName", SortDirection.None, "[BookName]", false, true)); viewBaseBook.Properties.Add(new ViewProperty("BiblePart", SortDirection.None, "[Status.BiblePart]", false, true)); if (viewBaseBook.Count > 0) { foreach (ViewRecord item in viewBaseBook) { baseBookShortcut = item["BookShortcut"].ToString(); baseBookName = item["BookName"].ToString(); biblePart = (BiblePart)item["BiblePart"]; } } var verses = new List <CompareVerseInfo>(); var result = new CompareVerseModel() { Index = vi, Verses = new List <CompareVerseInfo>(), BookName = baseBookName, BookShortcut = baseBookShortcut, Part = biblePart }; var criteriaString = "[Hidden] = 0"; if (onlyLiteral) { criteriaString += " AND (([Type] = 1) OR ([Type] = 2))"; } var viewTranslation = new XPView(uow, typeof(Translation)) { CriteriaString = criteriaString }; viewTranslation.Properties.Add(new ViewProperty("Oid", SortDirection.None, "[Oid]", false, true)); viewTranslation.Properties.Add(new ViewProperty("Name", SortDirection.None, "[Name]", false, true)); viewTranslation.Properties.Add(new ViewProperty("Description", SortDirection.None, "[Description]", false, true)); viewTranslation.Properties.Add(new ViewProperty("Type", SortDirection.Descending, "[Type]", false, true)); var indexes = new List <string>(); foreach (ViewRecord item in viewTranslation) { var name = item["Name"].ToString(); var _index = $"{name.Replace("'", "").Replace("+", "")}.{vi.NumberOfBook}.{vi.NumberOfChapter}.{vi.NumberOfVerse}"; indexes.Add(_index); var cvi = new CompareVerseInfo() { Index = new VerseIndex(_index), TranslationName = item["Name"].ToString(), TranslationDescription = item["Description"].ToString(), TranslationType = (TranslationType)item["Type"], SortIndex = ((TranslationType)item["Type"]).GetCategory().ToInt() }; verses.Add(cvi); } var _view = new XPView(uow, typeof(Verse)) { Criteria = new DevExpress.Data.Filtering.InOperator("Index", indexes) }; _view.Properties.Add(new ViewProperty("Index", SortDirection.None, "[Index]", false, true)); _view.Properties.Add(new ViewProperty("Text", SortDirection.Descending, "[Text]", false, true)); foreach (ViewRecord item in _view) { var idx = item["Index"].ToString(); var text = item["Text"].ToString(); var cvi = verses.Where(x => x.Index.Index == idx).FirstOrDefault(); if (cvi.IsNotNull()) { cvi.Text = text; cvi.HtmlText = text .Replace("―", String.Empty) .Replace("<n>", @"<span class=""text-muted"">") .Replace("</n>", "</span>") .Replace("<J>", "<span style='color: darkred;'>") .Replace("</J>", "</span>"); cvi.SimpleText = BibleTag.GetVerseSimpleText(text, cvi.Index, baseBookShortcut); } } result.Verses = verses.Where(x => x.Text.IsNotNullOrEmpty()).OrderBy(x => x.SortIndex).ToList(); return(result); } return(null); }