public bool MakeReservation(string libraryName, string libraryAddress, Book book,
                                    IMakeReservationView makeReservationView)
        {
            var libraryRepository = _repositoryFactory.GetLibraryRepository();
            var userRepository    = _repositoryFactory.GetUserRepository();
            var bookRepository    = _repositoryFactory.GetBookRepository();

            var user    = LoginInfo.GetUser();
            var library = libraryRepository.GetLibraryByNameAndAddress(libraryName, libraryAddress);

            var theBook =
                library.Books
                .Where(b => b.BookDetails.Title == book.BookDetails.Title &&
                       b.BookDetails.Publisher == book.BookDetails.Publisher &&
                       b.BookDetails.YearPublished == book.BookDetails.YearPublished)
                .FirstOrDefault();

            if (theBook.IsReserved)
            {
                makeReservationView.NotifyOfReservedBook(book);
                return(false);
            }

            theBook.IsReserved = true;
            theBook.User       = user;
            user.ReservedBooks.Add(theBook);
            bookRepository.Update(book);
            userRepository.Update(user);

            return(true);
        }
示例#2
0
 public MakeReservationPresenter(IMakeReservationView view, IEventAggregator eventAggregator)
 {
     this.view            = view;
     this.eventAggregator = eventAggregator;
     SubscribeToEvents();
 }