Repository navigation
Expand file tree
/
Copy pathReservationManager.cpp
More file actions
69 lines (56 loc) · 2.64 KB
/
Copy pathReservationManager.cpp
File metadata and controls
69 lines (56 loc) · 2.64 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
#include "ReservationManager.h"
Reservation ReservationManager::bookStay(int resID, Guest guestInfo, int checkIn, int checkOut, int guestCount, int resDate, string sRequest, Discount discountType, Room roomChosen, AvailableRooms& roomsAvailable)
{
Reservation newReservation;
newReservation.makeReservation(resID, guestInfo.getID(), roomChosen.getRoomID(), checkIn, checkOut, guestCount, resDate, sRequest, discountType);
newReservation.setStatus("Booked");
//Update Room Availability in Hotel
roomsAvailable.setRoomOccupied(roomChosen);
newReservation.setPaymentStatus("No Payment");
return newReservation;
}
void ReservationManager::modifyStay(Reservation& guestReservation, string updateNeeded, string newInformation)
{
if (updateNeeded == "new_room")
guestReservation.setRoomID(stoi(newInformation));
else if (updateNeeded == "new_check_in_date")
guestReservation.setCheckInDate(stoi(newInformation));
else if (updateNeeded == "new_check_out_date")
guestReservation.setCheckOutDate(stoi(newInformation));
else if (updateNeeded == "new_number_of_guests")
guestReservation.setNumberOfGuests(stoi(newInformation));
else if (updateNeeded == "new_status")
guestReservation.setStatus(newInformation);
else if (updateNeeded == "new_total_price")
guestReservation.setTotalPrice(stoi(newInformation));
else if (updateNeeded == "new_payment_status")
guestReservation.setPaymentStatus(newInformation);
else if (updateNeeded == "new_special_request")
guestReservation.setSpecialRequests(newInformation);
else if (updateNeeded == "new_discount")
{
int commaPos = newInformation.find(',');
string rateStr = newInformation.substr(0, commaPos);
string nameStr = newInformation.substr(commaPos + 1);
float rate = std::stof(rateStr);
Discount newDiscount(rate, nameStr);
guestReservation.setSpecialDiscount(newDiscount);
}
}
void ReservationManager::cancelStay(Reservation& guestReservation, Room roomChosen, AvailableRooms& roomsAvailable)
{
guestReservation.cancelReservation();
roomsAvailable.setRoomAvailable(roomChosen);
}
void ReservationManager::checkIn(Reservation& guestReservation, AvailableRooms& roomsAvailable)
{
modifyStay(guestReservation, "new_status", "Checked In");
Room& room = AvailableRooms::lookup(guestReservation.getRoomID());
roomsAvailable.setRoomOccupied(room);
}
void ReservationManager::checkOut(Reservation& guestReservation, AvailableRooms& roomsAvailable)
{
modifyStay(guestReservation, "new_status", "Checked Out");
Room& room = AvailableRooms::lookup(guestReservation.getRoomID());
roomsAvailable.setRoomAvailable(room);
}