Example #1
0
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;
}