예제 #1
0
        public void CreateAuthorsTest()
        {
            foreach (var author in _authors)
            {
                AuthorFacade.Create(author);
            }

            var items = AuthorFacade.FindAll();

            Assert.That(items.Count, Is.EqualTo(20));
            Assert.That(items.ElementAt(0), Is.EqualTo(_authors[0]));
            Assert.That(items.ElementAt(1), Is.EqualTo(_authors[1]));
            Assert.That(items.ElementAt(2), Is.EqualTo(_authors[2]));
            Assert.That(items.ElementAt(3), Is.EqualTo(_authors[3]));
            Assert.That(items.ElementAt(4), Is.EqualTo(_authors[4]));
            Assert.That(items.ElementAt(5), Is.EqualTo(_authors[5]));
            Assert.That(items.ElementAt(6), Is.EqualTo(_authors[6]));
            Assert.That(items.ElementAt(7), Is.EqualTo(_authors[7]));
            Assert.That(items.ElementAt(8), Is.EqualTo(_authors[8]));
            Assert.That(items.ElementAt(9), Is.EqualTo(_authors[9]));
            Assert.That(items.ElementAt(10), Is.EqualTo(_authors[10]));
            Assert.That(items.ElementAt(11), Is.EqualTo(_authors[11]));
            Assert.That(items.ElementAt(12), Is.EqualTo(_authors[12]));
            Assert.That(items.ElementAt(13), Is.EqualTo(_authors[13]));
            Assert.That(items.ElementAt(14), Is.EqualTo(_authors[14]));
            Assert.That(items.ElementAt(15), Is.EqualTo(_authors[15]));
            Assert.That(items.ElementAt(16), Is.EqualTo(_authors[16]));
            Assert.That(items.ElementAt(17), Is.EqualTo(_authors[17]));
            Assert.That(items.ElementAt(18), Is.EqualTo(_authors[18]));
            Assert.That(items.ElementAt(19), Is.EqualTo(_authors[19]));
        }
예제 #2
0
        private void OpenAuthorManagementDialog()
        {
            EntityManagementDialog <AuthorViewModel>          dialog          = new EntityManagementDialog <AuthorViewModel>();
            EntityManagementDialogViewModel <AuthorViewModel> dialogViewModel = new EntityManagementDialogViewModel <AuthorViewModel>(dialog, LibraryVM, "Authorの管理",
                                                                                                                                      new Func <string, AuthorViewModel>((name) =>
            {
                var author           = new AuthorViewModel();
                author.ID            = Guid.NewGuid();
                author.UnescapedName = name;
                AuthorFacade.Create(author);
                return(author);
            }),
                                                                                                                                      new Func <IEnumerable <AuthorViewModel> >(() =>
            {
                return(AuthorFacade.OrderByNaturalString());
            }),
                                                                                                                                      new Func <Guid, AuthorViewModel>((id) =>
            {
                return(AuthorFacade.FindBy(id));
            }),
                                                                                                                                      new Action <AuthorViewModel>((target) =>
            {
                AuthorFacade.Update(target);
                var willUpdate = LibraryVM.BookSource.Where(b => b.AuthorID == target.ID);
                foreach (var x in willUpdate)
                {
                    x.Author = target.Clone() as AuthorViewModel;
                }
            }),
                                                                                                                                      new Action <Guid>((id) =>
            {
                AuthorFacade.Delete(id);
                var willUpdate = LibraryVM.BookSource.Where(b => b.AuthorID == id);
                foreach (var x in willUpdate)
                {
                    x.Author = null;
                }
            }),
                                                                                                                                      new Action <AuthorViewModel, AuthorViewModel>((willDiscard, into) =>
            {
                AuthorFacade.Delete(willDiscard.ID);
                var willUpdate = LibraryVM.BookSource.Where(b => b.AuthorID == willDiscard.ID);
                foreach (var x in willUpdate)
                {
                    x.Author = into.Clone() as AuthorViewModel;
                    BookFacade.Update(x);
                }
            }));

            dialog.EntityMngVM = dialogViewModel;
            dialogViewModel.Initialize();
            dialog.Show();
        }
        private void RegisterCommands()
        {
            OkCommand
            .Subscribe(dialog =>
            {
                UpdateBook();
                RequestClose.Invoke(new DialogResult(ButtonResult.OK));
            })
            .AddTo(disposables);
            CancelCommand
            .Subscribe(dialog =>
            {
                RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
            })
            .AddTo(disposables);
            SelectNextBookCommand
            .Subscribe(() => SelectNextBook())
            .AddTo(disposables);
            SelectPreviousBookCommand
            .Subscribe(() => SelectPreviousBook())
            .AddTo(disposables);
            OpenSaveDirCommand
            .Subscribe(() => OpenDir())
            .AddTo(disposables);
            OpenAuthorManagementDialogCommand
            .Subscribe(() =>
            {
                var dialog          = new EntityManagementDialog <AuthorViewModel>();
                var dialogViewModel = new EntityManagementDialogViewModel <AuthorViewModel>(dialog, LibraryManager, "Authorの管理",
                                                                                            new Func <string, AuthorViewModel>((name) =>
                {
                    var author           = new AuthorViewModel();
                    author.ID            = Guid.NewGuid();
                    author.UnescapedName = name;
                    AuthorFacade.Create(author);
                    return(author);
                }),
                                                                                            new Func <IEnumerable <AuthorViewModel> >(() =>
                {
                    return(AuthorFacade.OrderByNaturalString());
                }),
                                                                                            new Func <Guid, AuthorViewModel>((id) =>
                {
                    return(AuthorFacade.FindBy(id));
                }),
                                                                                            new Action <AuthorViewModel>((target) =>
                {
                    AuthorFacade.Update(target);
                    var willUpdate = LibraryManager.BookSource.Where(b => b.AuthorID == target.ID);
                    foreach (var x in willUpdate)
                    {
                        x.Author = target.Clone() as AuthorViewModel;
                    }
                }),
                                                                                            new Action <Guid>((id) =>
                {
                    AuthorFacade.Delete(id);
                    var willUpdate = LibraryManager.BookSource.Where(b => b.AuthorID == id);
                    foreach (var x in willUpdate)
                    {
                        x.Author = null;
                    }
                }),
                                                                                            new Action <AuthorViewModel, AuthorViewModel>((willDiscard, into) =>
                {
                    AuthorFacade.Delete(willDiscard.ID);
                    var willUpdate = LibraryManager.BookSource.Where(b => b.AuthorID == willDiscard.ID);
                    foreach (var x in willUpdate)
                    {
                        x.Author = into.Clone() as AuthorViewModel;
                        BookFacade.Update(x);
                    }
                }));
                dialog.EntityMngVM = dialogViewModel;
                dialogViewModel.Initialize();
                dialog.Show();
            })
            .AddTo(disposables);
            TitleTextBoxKeyDownCommand = new ReactiveCommand <KeyEventArgs>();
            TitleTextBoxKeyDownCommand.Subscribe(e =>
            {
                switch (e.Key)
                {
                case Key.Enter:
                    UpdateBook();
                    RequestClose.Invoke(new DialogResult(ButtonResult.OK));
                    break;

                case Key.Escape:
                    RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
                    break;

                default:
                    break;
                }
            })
            .AddTo(disposables);
        }