Esempio n. 1
0
        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);
                }
            }
        }