bool Teacher::reserve(Book & book) { if ((int)Teacher::getPenalty() - Teacher::getPenaltyBefore() > 0) return false; std::vector<Book *> BookVector = book.getKind().getBooks(); for (int i = 0; i < (int)BookVector.size(); i++) { if (!BookVector[i]->isBorrowable()) continue; if (BookVector[i]->isLentOut() && BookVector[i]->getReader() == this) return false; if (BookVector[i]->isLentOut()) continue; if (BookVector[i]->getReserveStatus() && BookVector[i]->getReservedDate().getNumber() + System::getReservedBookExpiredDays() > System::getCurrentDate().getNumber() && BookVector[i]->getReserveNumberOfBook() == this->getReaderNumber()) return false; if (BookVector[i]->getReserveStatus() && BookVector[i]->getReservedDate().getNumber() + System::getReservedBookExpiredDays() > System::getCurrentDate().getNumber()) continue; BookVector[i]->setReserveStatus(true); BookVector[i]->setReservedDate(System::getCurrentDate()); BookVector[i]->setReserveNumberOfBook(Reader::getReaderNumber()); return true; } for (int i = 0; i < (int)BookVector.size(); i++) { if (!BookVector[i]->isBorrowable()) continue; if (BookVector[i]->getReserveStatus()) continue; BookVector[i]->setReserveStatus(true); BookVector[i]->setReservedDate(System::getCurrentDate()); BookVector[i]->setReserveNumberOfBook(Reader::getReaderNumber()); return true; } return false; }