public void Export(XRay xray, string path, IProgressBar progress, CancellationToken cancellationToken = default) { var appVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; var start = (long?)xray.Srl; var end = (long?)xray.Erl; var chapters = xray.Chapters.ToArray(); if (xray.Chapters.Count <= 0) { start = null; end = null; chapters = new[] { new Chapter { Name = null, Start = 1, End = 9999999 } }; } var xrayArtifact = new Artifacts.XRay { Asin = xray.Asin, Guid = $"{xray.DatabaseName}:{xray.Guid}", Version = "1", XRayVersion = $"{appVersion.Major}.{appVersion.Minor}{appVersion.Build}", Created = (xray.CreatedAt ?? DateTime.Now).ToString("yyyy-MM-dd HH:mm:ss"), Terms = xray.Terms.Select(term => new Term { Desc = term.Desc ?? "", DescSrc = term.DescSrc ?? "", DescUrl = term.DescUrl ?? "", Type = term.Type, TermName = term.TermName, Occurrences = term.Occurrences.Count > 0 ? term.Occurrences : new HashSet <Occurrence> { new() { Excerpt = new IndexLength(100, 100), Highlight = new IndexLength(100, 6) } } }).ToArray(),
// todo just take paragraph instead of indexlength public static void EnhanceOrAddExcerpts(List <Excerpt> excerpts, int characterId, IndexLength excerptLocation) { var exCheck = excerpts.Where(t => t.Start.Equals(excerptLocation.Index)).ToArray(); if (exCheck.Length > 0) { if (!exCheck[0].RelatedEntities.Contains(characterId)) { exCheck[0].RelatedEntities.Add(characterId); } } else { var newExcerpt = new Excerpt { Id = excerpts.Any() ? excerpts.Max(excerpt => excerpt.Id) + 1 : 1, Start = excerptLocation.Index, Length = excerptLocation.Length }; newExcerpt.RelatedEntities.Add(characterId); excerpts.Add(newExcerpt); } }