Ejemplo n.º 1
0
        /// <summary>
        /// The cstomSearch method, searches for the first avalible bookcopy of a bookID
        /// </summary>
        /// <param name="searchItem">BookID to search for copies with</param>
        /// <returns>First avalible copy of the book with the bookID</returns>
        public BookCopy CustomSearch(string searchItem)
        {
            int id       = Convert.ToInt16(searchItem);
            var bookcopy = bookCopyRepo.All().Where(b => b.Book.Id == id).First();

            return(bookcopy);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Method to make a loan of a book for a member.
 /// </summary>
 /// <param name="member">Member that makes the loan.</param>
 /// <param name="book">Book the member wants to loan.</param>
 public void MakeLoan(Member member, Book book)
 {
     if (null == bookRepository.Find(book.ISBN))
     {
         throw new ArgumentException("No book wit ISBN: " + book.ISBN + " found in database.");
     }
     else
     {
         List <int> noOfCopiesOnLoan = loanRepository.All().
                                       Where(loan => loan.TimeOfReturn == null).
                                       Where(loan => loan.Copy.Book.ISBN == book.ISBN).
                                       Select(loan => loan.Copy.ID).
                                       ToList();
         BookCopy copyToLoan = bookCopyRepository.All().
                               Where(c => false == noOfCopiesOnLoan.Contains(c.ID)).
                               Where(c => c.Book.ISBN == book.ISBN).
                               FirstOrDefault();
         if (null == copyToLoan)
         {
             throw new ArgumentException("No bookcopy available for Title: " + book.Title + ".");
         }
         else
         {
             MakeLoan(member, copyToLoan);
         }
     }
 }
Ejemplo n.º 3
0
        //All available copies
        public IEnumerable <BookCopy> AllAvailableCopies()
        {
            IEnumerable <BookCopy> copies = _bookCopyRepository.All();
            IEnumerable <Loan>     loan   = _loanRepository.All();

            var loanedbooks = from c in copies
                              from l in loan
                              where c.Id == l.BookCopy.Id
                              select c;

            return(copies.Except(loanedbooks));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Method to get books available books for loan.
        /// </summary>
        /// <returns>IEnumerable&lt;Book&gt;</returns>
        public IEnumerable <Book> GetAllAvailableBooks()
        {
            var BookCopysOnLoan = loanRepository.All().
                                  Where(loan => loan.TimeOfReturn == null).
                                  Select(loan => loan.Copy.ID);
            var BookCopysNotOnLoan = bookCopyRepository.All().
                                     Where(copy => false == BookCopysOnLoan.Contains(copy.ID)).
                                     Select(copy => copy.Book).
                                     Distinct().
                                     ToList();

            return(BookCopysNotOnLoan);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Method to access available copies for loan of a specified book.
        /// </summary>
        /// <param name="book">Book to check copies of</param>
        /// <returns>int with the number of copies is available</returns>
        public int GetNoOfAvailableCopies(Book book)
        {
            List <int> noOfCopiesOnLoan = loanRepository.All().
                                          Where(loan => loan.TimeOfReturn == null).
                                          Where(loan => loan.Copy.Book.ISBN == book.ISBN).
                                          Select(loan => loan.Copy.ID).
                                          ToList();
            int NoOfCopiesNotOnLoan = bookCopyRepository.All().
                                      Where(copy => false == noOfCopiesOnLoan.Contains(copy.ID)).
                                      Where(copy => copy.Book.ISBN == book.ISBN).
                                      Count();

            return(NoOfCopiesNotOnLoan);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// The Remove method, used to return a loan.
        /// </summary>
        /// <param name="item">Loan to return</param>
        public void Remove(Loan item)
        {
            var bookCopy = bookCopyRepo.All().Where(bc => bc.IsLoaned == true && bc.Id == item.BookCopy.Id).First();

            item.Returned     = DateTime.Today;
            bookCopy.IsLoaned = false;
            loanRepo.Edit(item);
            var member = memberRepo.All().Where(m => m == item.Member).First();

            member.Loans.Remove(item);
            memberRepo.Edit(member);

            OnUpdated(EventArgs.Empty);
        }
 /// <summary>
 /// Uses the BookCopy repository to get all Book object from the database.
 /// </summary>
 /// <returns>A IEnumerable<Book> including all Book objects from the database.</returns>
 public IEnumerable <BookCopy> All()
 {
     return(bookCopyRepository.All());
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Check if a BookCopy is on loan
 /// </summary>
 /// <param name="bookCopy">The book copy to check</param>
 /// <returns>True if the book is on loan, false otherwise</returns>
 public bool CheckIfBookIsOnLoan(BookCopy bookCopy)
 {
     return(!FindAllAvailableBooks(bookCopyRepository.All(), All()).Contains(bookCopy));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Returns all bookcopies
 /// </summary>
 /// <returns></returns>
 public IEnumerable <BookCopy> All()
 {
     return(bookCopyRepository.All().OrderBy(book => book.BookObject.Id));
 }