Exemple #1
0
 internal static void LoadAuthor(BookViewModel book, DataOperationUnit dataOpUnit = null)
 {
     if (book.AuthorID != Guid.Empty)
     {
         book.Author = AuthorFacade.FindBy(book.AuthorID, dataOpUnit);
     }
 }
Exemple #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);
        }