-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBorrow.cpp
79 lines (68 loc) · 1.71 KB
/
Borrow.cpp
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
74
75
76
77
78
79
#include "Borrow.h"
Borrow::Borrow()
{
CustomerID = 0;
TMovie = nullptr;
}
Borrow::Borrow(Movie* M, int CID)
{
TMovie = M;
CustomerID = CID;
}
Borrow::~Borrow()
{
delete TMovie;
}
// sets data from transaction file
// returns true if valid Movie Genre
bool Borrow::setData(ifstream& File)
{
string Genre;
File >> CustomerID >> MediaType >> Genre;
TMovie = MovieFactory::create(Genre); //create Movie based on Genre
if (!TMovie) return false; // invalid Genre
TMovie->setTData(File); // set Movie's sorting attributes data
return true;
}
void Borrow::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 Movie stock greater than zero
if (Temp->getStock() > 0) {
// update Customer's History
TCustomer->addTransaction(this);
// decrease Stock
Temp->decreaseStock();
}
else { // out of stock error
cout << "Borrow failed: Out of Stock: " << Temp->tDisplay() << endl;
delete this;
}
}
// otherwise send error
else {
cout << "Borrow failed" << endl;
delete this;
}
}
// display this Borrow's data members
void Borrow::display() const
{
cout << "Borrow: " << MediaType << " " << TMovie->tDisplay() << endl;
}
char Borrow::getCommand() const
{
return COMMAND;
}
Movie* Borrow::getTMovie() const
{
return TMovie;
}