/// <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); }
/// <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); } } }
//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)); }
/// <summary> /// Method to get books available books for loan. /// </summary> /// <returns>IEnumerable<Book></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); }
/// <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); }
/// <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()); }
/// <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)); }
/// <summary> /// Returns all bookcopies /// </summary> /// <returns></returns> public IEnumerable <BookCopy> All() { return(bookCopyRepository.All().OrderBy(book => book.BookObject.Id)); }