diff options
Autocommit at 07.05.2022 @ 10:07
3 files changed, 21 insertions, 10 deletions
| -rw-r--r-- | src/Models/Event.cpp | 4 | ||||
| -rw-r--r-- | src/Models/Event.h | 4 | ||||
| -rw-r--r-- | src/Services/EventService.cpp | 23 |
diff --git a/src/Models/Event.cpp b/src/Models/Event.cpp index 034e4b3..4328e3b 100644 --- a/src/Models/Event.cpp +++ b/src/Models/Event.cpp @@ -9,11 +9,11 @@ Event::Event(const Hall& hall, String name, Date date) : tickets(), reservations this->date = date; } -const OrderedList<Ticket>& Event::get_tickets() const { +OrderedList<Ticket>& Event::get_tickets() { return tickets; } -const OrderedList<Reservation>& Event::get_reservations() const { +OrderedList<Reservation>& Event::get_reservations() { return reservations; } diff --git a/src/Models/Event.h b/src/Models/Event.h index 4de2814..c69f1b8 100644 --- a/src/Models/Event.h +++ b/src/Models/Event.h @@ -22,8 +22,8 @@ public: const Hall& get_hall() const; const String& get_name() const; const Date& get_date() const; - const OrderedList<Ticket>& get_tickets() const; - const OrderedList<Reservation>& get_reservations() const; + OrderedList<Ticket>& get_tickets(); + OrderedList<Reservation>& get_reservations(); int compare(const Event& other); }; 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) { |
