Website Summary Files Commits Branches @commit @diff @stats
path: root / src / Services / EventService.cpp
diff options
context:
space:
mode:
Commit4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 10:07:22 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 10:07:22 +0300
Files3940d6db47edf030f5574cc8d9b0f4d109bc0674 /src/Services/EventService.cpp
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.tar
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.tar.gz
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.zip
Parentbfe8e5bb9a7da96af8ca254590154772ebbffffd (diff)
Autocommit at 07.05.2022 @ 10:07
1 files changed, 17 insertions, 6 deletions
-rw-r--r--src/Services/EventService.cpp23
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp
index 67e11dc..384e75e 100644
--- a/src/Services/EventService.cpp
+++ b/src/Services/EventService.cpp
@@ -64,11 +64,18 @@ StatusCode EventService::reserveTicket(const char* name, const Date& date, const
if (eInd == events.get_count())
return E_EventDoesNotExist;
+ unsigned tInd = events[eInd].get_tickets().findIndex(ticket);
+ if (tInd < events[eInd].get_tickets().get_count())
+ return E_TicketAlreadyBought;
+
Reservation res(ticket, password, note);
- unsigned
+ unsigned rInd = events[eInd].get_reservations().findIndex(res);
+ if (rInd < events[eInd].get_reservations().get_count())
+ return E_TicketAlreadyReserved;
- return events[ind].reserveTicket(ticket, password, note);
+ events[eInd].get_reservations().insert(res);
+ return Success;
}
StatusCode EventService::cancelTicketReservation(const char* name, const Date& date, unsigned seatRow, unsigned seatColumn) {
@@ -76,11 +83,15 @@ StatusCode EventService::cancelTicketReservation(const char* name, const Date& d
}
StatusCode EventService::cancelTicketReservation(const char* name, const Date& date, const Ticket& ticket) {
- unsigned ind = indexOfEvent(name, date);
- if (ind == events.get_count())
+ unsigned eInd = indexOfEvent(name, date);
+ if (eInd == events.get_count())
return E_EventDoesNotExist;
-
- return events[ind].cancelReservation(ticket);
+
+ unsigned rInd = events[eInd].get_reservations().findIndex(ticket);
+ if (rInd < events[eInd].get_reservations().get_count())
+ return E_TicketAlreadyReserved;
+
+ return events[eInd].cancelReservation(ticket);
}
StatusCode EventService::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat) {