private ModelsLink GetLinkedVerses(string bibleKey) { BiblesData.linkedList.Add(bibleKey); string parentKey = $"{bibleKey}*"; string childKey = $"*{bibleKey}"; Task <List <LinkModel> > parentToChild = BiblesData.database .Table <LinkModel>() .Where(pl => pl.LinkKeyId.StartsWith(parentKey)) .ToListAsync(); Task <List <LinkModel> > childToParent = BiblesData.database .Table <LinkModel>() .Where(pl => pl.LinkKeyId.EndsWith(childKey)) .ToListAsync(); ModelsLink results = new ModelsLink { BibleVerseKey = bibleKey }; foreach (LinkModel model in parentToChild.Result) { string[] verseSplit = model.LinkKeyId.Split(linkSplit); if (BiblesData.linkedList.Contains(verseSplit[1])) { continue; } ModelsLink child = new ModelsLink { BibleVerseKey = verseSplit[1], LinkKeyId = model.LinkKeyId }; child.BibleVerseChildLinks.AddRange(this.GetLinkedVerses(verseSplit[1]).BibleVerseChildLinks); results.BibleVerseChildLinks.Add(child); } foreach (LinkModel model in childToParent.Result) { string[] verseSplit = model.LinkKeyId.Split(linkSplit); if (BiblesData.linkedList.Contains(verseSplit[0])) { continue; } ModelsLink child = new ModelsLink { BibleVerseKey = verseSplit[0], LinkKeyId = model.LinkKeyId }; child.BibleVerseChildLinks.AddRange(this.GetLinkedVerses(verseSplit[0]).BibleVerseChildLinks); results.BibleVerseChildLinks.Add(child); } return(results); }
private void LoadTreeItems(string verseKey) { ModelsLink verseTree = BiblesData.Database.GetLinkTree(verseKey); TreeViewItemTool item = new TreeViewItemTool { Header = GlobalStaticData.Intance.GetKeyDescription(verseTree.BibleVerseKey), Tag = verseTree.BibleVerseKey }; this.uxLinkTree.Items.Add(item); this.LoadTreeItems(item, verseTree); }
private void OnDelete_Clicked(object sender, System.Windows.RoutedEventArgs e) { if (this.uxLinkTree.SelectedItem == null) { MessageDisplay.Show("Please select a Link"); return; } try { string verseKey = ((TreeViewItemTool)this.uxLinkTree.SelectedItem).Tag.ParseToString(); if (!this.modelsLinksDictionary.ContainsKey(verseKey)) { MessageDisplay.Show("Cannot delete topmost parent item."); return; } string message = $"{TranslationDictionary.Translate("Are you sure you would like to delete?")} {GlobalStaticData.Intance.GetKeyDescription(verseKey)}"; if (MessageDisplay.Show(message, "Warning", MessageBoxButton.YesNo) != MessageBoxResult.Yes) { return; } ModelsLink deleteItem = this.modelsLinksDictionary[verseKey]; BiblesData.Database.DeleteLink(deleteItem.LinkKeyId); this.modelsLinksDictionary.Remove(verseKey); TreeViewItemTool deleteTreeItemParent = ((TreeViewItemTool)this.uxLinkTree.SelectedItem).Parent.To <TreeViewItemTool>(); deleteTreeItemParent.Items.Remove(this.uxLinkTree.SelectedItem); this.deletedLinksList.Add(verseKey); } catch (Exception err) { ErrorLog.ShowError(err); } }
private void LoadTreeItems(TreeViewItemTool parent, ModelsLink verseTree) { foreach (ModelsLink child in verseTree.BibleVerseChildLinks) { TreeViewItemTool item = new TreeViewItemTool { Header = GlobalStaticData.Intance.GetKeyDescription(child.BibleVerseKey), Tag = child.BibleVerseKey }; parent.Items.Add(item); this.modelsLinksDictionary.Add(child.BibleVerseKey, child); if (child.BibleVerseChildLinks.Count > 0) { this.LoadTreeItems(item, child); } } }