예제 #1
0
        public void Load()
        {
            // Load database entities and create viewmodels.
            var universes  = Universe.GetAllUniverses(_connection).Select(i => new UniverseViewModel(i, this)).ToList();
            var categories = Category.GetAllSeries(_connection).Select(i => new CategoryViewModel(i)).ToList();
            var stories    = Story.GetAllStories(_connection).Select(i => new StoryViewModel(i)).ToList();
            var chapters   = Chapter.GetAllChapters(_connection).Select(i => new ChapterViewModel(i)).ToList();
            var scenes     = Scene.GetAllScenes(_connection).Select(i => new SceneViewModel(i)).ToList();

            // Link up objects.
            foreach (var chapter in chapters)
            {
                var chapterScenes = scenes.Where(i => i.Model.ChapterId == chapter.Model.id);
                foreach (var scene in chapterScenes)
                {
                    scene.ChapterVm = chapter;
                    chapter.Scenes.Add(scene);
                }
            }

            foreach (var story in stories)
            {
                var storyChapters = chapters.Where(i => i.Model.StoryId == story.Model.id);
                foreach (var chapter in storyChapters)
                {
                    chapter.StoryVm = story;
                    story.Chapters.Add(chapter);
                }
            }

            foreach (var cat in categories)
            {
                var catStories = stories.Where(i => i.Model.CategoryId == cat.Model.id);
                foreach (var ss in catStories)
                {
                    cat.Stories.Add(ss);
                }
            }

            foreach (var u in universes)
            {
                var cats = categories.Where(i => i.Model.UniverseId == u.Model.id);
                foreach (var cat in cats)
                {
                    u.Categories.Add(cat);
                    u.SubItems.Add(cat);
                    cat.UniverseVm = u;
                }

                var stories1 = stories.Where(i => i.Model.UniverseId == u.Model.id);
                foreach (var s in stories1)
                {
                    u.Stories.Add(s);
                    s.UniverseVm = u;
                    u.UpdateStoryInTree(s);
                }

                Universes.Add(u);
            }

            long defaultUniverseId            = Metadata.DefaultUniverseId;
            UniverseViewModel defaultUniverse = Universes.SingleOrDefault(i => i.Model.id == defaultUniverseId);

            if (defaultUniverse != null)
            {
                SelectedUniverse = defaultUniverse;
            }
        }