diff options
Autocommit at 07.05.2022 @ 10:12
1 files changed, 18 insertions, 8 deletions
| -rw-r--r-- | src/Services/EventService.cpp | 26 |
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp index 384e75e..a48291d 100644 --- a/src/Services/EventService.cpp +++ b/src/Services/EventService.cpp @@ -88,22 +88,32 @@ StatusCode EventService::cancelTicketReservation(const char* name, const Date& d return E_EventDoesNotExist; unsigned rInd = events[eInd].get_reservations().findIndex(ticket); - if (rInd < events[eInd].get_reservations().get_count()) - return E_TicketAlreadyReserved; + if (rInd == events[eInd].get_reservations().get_count()) + return W_TicketHadNotBeenReserved; - return events[eInd].cancelReservation(ticket); + events[eInd].get_reservations().removeAt(rInd); + return Success; } -StatusCode EventService::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat) { +StatusCode EventService::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat, const char* password) { return buyTicket(name, date, Ticket(row, seat)); } -StatusCode EventService::buyTicket(const char* name, const Date& date, const Ticket& ticket) { - unsigned ind = indexOfEvent(name, date); - if (ind == events.get_count()) +StatusCode EventService::buyTicket(const char* name, const Date& date, const Ticket& ticket, const char* password) { + unsigned eInd = indexOfEvent(name, date); + if (eInd == events.get_count()) return E_EventDoesNotExist; - return events[ind].buyTicket(ticket); + unsigned tInd = events[eInd].get_tickets().findIndex(ticket); + if (tInd < events[eInd].get_tickets().get_count()) + return E_TicketAlreadyBought; + + unsigned rInd = events[eInd].get_reservations().findIndex(ticket); + if (rInd < events[eInd].get_reservations().get_count()) + return E_TicketAlreadyReserved; + + events[eInd].get_tickets().insert(ticket); + return Success; } StatusCode EventService::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat, const char* password) { |
