bool Customer::canBorrow(int id, string movieType, string action, string movieName, string directorName, int month, int year) { HistoryData *curr = head; bool borrowNoReturn = false; if (movieType == "F") //////////////////////////////Comedy { //While youre not at the end of the list while (curr != NULL) { Comedy *comedy = dynamic_cast<Comedy*>(curr->movie); //Search through the history for the desired movie, if its been BORROWED if (curr->transactionType == action && comedy->getTitle() == movieName && comedy->getYear() == year) { //Found the movie in the customers history and they borrowed it, not sure if they returned it yet borrowNoReturn = true; } //Search through the history for the desired movie, if its been RETURNED else if (curr->transactionType != action && comedy->getTitle() == movieName && comedy->getYear() == year) { //Found the movie in the customers history and they returned it borrowNoReturn = false; } //Traverse the list curr = curr->next; } } else if (movieType == "D") /////////////////////////////////Drama { //While youre not at the end of the list while (curr != NULL) { Drama *drama = dynamic_cast<Drama*>(curr->movie); //Search through the history for the desired movie, if its been BORROWED if (curr->transactionType == action && drama->getDirector() == directorName && drama->getTitle() == movieName) { //Found the movie in the customers history and they borrowed it, not sure if they returned it yet borrowNoReturn = true; } //Search through the history for the desired movie, if its been RETURNED else if (curr->transactionType != action && drama->getDirector() == directorName && drama->getTitle() == movieName) { //Found the movie in the customers history and they returned it borrowNoReturn = false; } //Traverse the list curr = curr->next; } } else if (movieType == "C") //////////////////////////////////Classics { //While youre not at the end of the list while (curr != NULL) { Classic *classic = dynamic_cast<Classic*>(curr->movie); //Search through the history for the desired movie, if its been BORROWED if (curr->transactionType == action && classic->getDirector() == directorName && classic->getMonth() == month && classic->getYear() == year) { //Found the movie in the customers history and they borrowed it, not sure if they returned it yet borrowNoReturn = true; } //Search through the history for the desired movie, if its been RETURNED else if (curr->transactionType != action && classic->getDirector() == directorName && classic->getMonth() == month && classic->getYear() == year) { //Found the movie in the customers history and they returned it borrowNoReturn = false; } //Traverse the list curr = curr->next; } } //Return depending on if the movie has been borrowed and not returned or not borrowed at all if (borrowNoReturn == false) { return true; } else { return false; } }
void Customer::displayHistory() { HistoryData *curr = head; if (head == NULL) { cout << "No history for this customer" << endl; return; } while (curr != NULL) { cout << "DVD " << curr->transactionType << " "; Classic *classic = dynamic_cast<Classic*>(curr->movie); if (classic == NULL) { cout << curr->movie->getTitle() << " " << curr->movie->getDirector() << " " << curr->movie->getYear() << endl; } else { cout << classic->getTitle() << " " << classic->getDirector() << " " << classic->getYear() << " " << classic->getMonth() << " " << classic->getActor() << endl; } } }