-
Notifications
You must be signed in to change notification settings - Fork 0
/
book.cpp
73 lines (62 loc) · 1.91 KB
/
book.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
/**
@file: book.cpp
@brief: This file contains the implementation of the book class.
@details:
BookId: Unique identifier for the book.
BookName: Name of the book.
AuthorName: Name of the author.
AvailabilityStatus: Availability status of the book.
BorrowedBy: PatronId of the patron who borrowed the book.
ReservationHeap: Priority queue of reservations for the book.
*/
#include "book.hpp"
using namespace std;
book::book(int id, string name, string author, BookAvailability available)
{
BookId = id;
BookName = name;
AuthorName = author;
AvailabilityStatus = available;
BorrowedBy = -1;
ReservationHeap = pq_reservation();
}
book::book(int id, string name, string author, string availabilityStatus)
: book(id, name, author, utilities::status_toenum(availabilityStatus))
{
}
book::~book()
{
}
void book::PrintBook()
{
cout << "BookID = " << BookId << endl;
cout << "Title = " << BookName << endl;
cout << "Author = " << AuthorName << endl;
cout << "Availability = " << utilities::status_tostring(AvailabilityStatus) << endl;
string bby = BorrowedBy == -1 ? "None" : to_string(BorrowedBy);
cout << "Borrowed By = " << bby << endl;
printReservations();
}
void book::printReservations()
{
pq_reservation temp = ReservationHeap;
cout << "Reservations = [";
while (!temp.empty())
{
reservation top = temp.top();
cout << top.PatronId;
temp.pop();
if (!temp.empty()) {
std::cout << ", ";
}
}
cout << "]" << endl;
}
/// @details Add the reservation to the reservation heap.
/// Reservation heap is a min heap based on priority number and time of reservation.
void book::AddReservation(reservation newReservation)
{
ReservationHeap.push(newReservation);
cout << "Book " << BookId << " reserved by Patron " << newReservation.PatronId << endl;
//cout << endl;
}