-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReturn.cpp
More file actions
73 lines (63 loc) · 1.7 KB
/
Return.cpp
File metadata and controls
73 lines (63 loc) · 1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "Return.h"
Return::Return()
{
CustomerID = 0;
TMovie = nullptr;
}
Return::~Return() {
delete TMovie;
}
// sets data from transaction file
// returns true if data in file was valid
bool Return::setData(ifstream& File)
{
string Genre;
File >> CustomerID >> MediaType >> Genre;
TMovie = MovieFactory::create(Genre); //create Movie based on Genre
if (!TMovie) return false; //invalid Movie Genre
TMovie->setTData(File); //set Movie's sorting attributes
return true;
}
// processes the Return
void Return::doTransaction(const vector<Movie*>& M, const HashTable& Customers)
{
// find Customer
Customer* TCustomer;
TCustomer = Customers.retrieve(CustomerID);
if (!TCustomer) cout << "Customer " << CustomerID << " not found, ";
// find Media
Movie* Temp = retrieveMovie(M, TMovie);
if (!Temp) cout << "Movie: " << TMovie->tDisplay() << " not found, ";
// if both found
if (TCustomer && Temp) {
// if customer has borrowed Movie
if (TCustomer->hasMovie(Temp)) {
// update Customer's History
TCustomer->addTransaction(this);
// increase Stock
Temp->increaseStock();
}
else { // Movie was never borrowed
cout << "Return failed: Customer hasn't borrowed Movie: "
+ Temp->tDisplay() << endl;
delete this;
}
}
// otherwise send error
else {
cout << "Return failed." << endl;
delete this;
}
}
// displays this Return's data members
void Return::display() const {
cout << "Return: " << MediaType << " " << TMovie->tDisplay() << endl;
}
char Return::getCommand() const
{
return COMMAND;
}
Movie* Return::getTMovie() const
{
return TMovie;
}