Website Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit1dfbe734d7a2983adf66b36fe6c0bc72f762d4a7 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-22 09:41:08 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-22 09:41:08 +0300
Filesbe1c6c8d9738c0fd9310a00914ec15ceb37f935d /src
FMI-OOP-P1_TicketSystem-main.tar
FMI-OOP-P1_TicketSystem-main.tar.gz
FMI-OOP-P1_TicketSystem-main.zip
Parent061e8baf6844d54d06a98b9100846e24c8d32e42 (diff)
Added an error for when a seat doesn't exist in an Event's hall HEAD main
3 files changed, 12 insertions, 0 deletions
-rw-r--r--src/Services/EventService.cpp9
-rw-r--r--src/Services/StatusCode.h1
-rw-r--r--src/UserInterface/FMITicketSystemConsoleUI.cpp2
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp
index 0ab223f..7ee757e 100644
--- a/src/Services/EventService.cpp
+++ b/src/Services/EventService.cpp
@@ -74,6 +74,9 @@ StatusCode EventService::reserveTicket(const char* name, const Date& date, const
if (eInd == events.get_count())
return E_EventDoesNotExist;
+ if (events[eInd].get_hall().get_rows() < ticket.get_row() || events[eInd].get_hall().get_seatsPerRow() < ticket.get_seat())
+ return E_InvalidSeat;
+
unsigned tInd = events[eInd].get_tickets().findIndex(ticket);
if (tInd < events[eInd].get_tickets().get_count())
return E_TicketAlreadyBought;
@@ -100,6 +103,9 @@ StatusCode EventService::cancelTicketReservation(const char* name, const Date& d
if (eInd == events.get_count())
return E_EventDoesNotExist;
+ if (events[eInd].get_hall().get_rows() < ticket.get_row() || events[eInd].get_hall().get_seatsPerRow() < ticket.get_seat())
+ return E_InvalidSeat;
+
unsigned rInd = events[eInd].get_reservations().findIndex(ticket);
if (rInd == events[eInd].get_reservations().get_count())
return W_TicketHadNotBeenReserved;
@@ -144,6 +150,9 @@ StatusCode EventService::buyTicket(const char* name, const Date& date, const Tic
if (eInd == events.get_count())
return E_EventDoesNotExist;
+ if (events[eInd].get_hall().get_rows() < ticket.get_row() || events[eInd].get_hall().get_seatsPerRow() < ticket.get_seat())
+ return E_InvalidSeat;
+
unsigned tInd = events[eInd].get_tickets().findIndex(ticket);
if (tInd < events[eInd].get_tickets().get_count())
return E_TicketAlreadyBought;
diff --git a/src/Services/StatusCode.h b/src/Services/StatusCode.h
index 3813e87..9d3b94f 100644
--- a/src/Services/StatusCode.h
+++ b/src/Services/StatusCode.h
@@ -25,6 +25,7 @@ enum StatusCode {
E_EventWillOverlap,
E_EventDoesNotExist,
+ E_InvalidSeat,
E_TicketAlreadyBought,
E_TicketAlreadyReserved,
E_ReservationDoesNotExist,
diff --git a/src/UserInterface/FMITicketSystemConsoleUI.cpp b/src/UserInterface/FMITicketSystemConsoleUI.cpp
index 29fb1ef..6e4321d 100644
--- a/src/UserInterface/FMITicketSystemConsoleUI.cpp
+++ b/src/UserInterface/FMITicketSystemConsoleUI.cpp
@@ -36,6 +36,8 @@ void handleStatusCode(StatusCode sc, Menu menu) {
menu.registerError("Wrong reservation password!"); break;
case E_FileCouldNotBeOpened:
menu.registerError("An error occurred while trying to open a file!"); break;
+ case E_InvalidSeat:
+ menu.registerError("The seat doesn't exist!"); break;
default:
menu.registerError("An unhandled status code was returned!"); break;
}