diff options
Autocommit at 05.05.2022 @ 17:48
2 files changed, 23 insertions, 10 deletions
| -rw-r--r-- | src/EventSystem/EventSystem.cpp | 27 | ||||
| -rw-r--r-- | src/EventSystem/EventSystem.h | 6 |
diff --git a/src/EventSystem/EventSystem.cpp b/src/EventSystem/EventSystem.cpp index 8ea368d..0bbd13a 100644 --- a/src/EventSystem/EventSystem.cpp +++ b/src/EventSystem/EventSystem.cpp @@ -7,17 +7,17 @@ void EventSystem::updateSoonestUpcoming() { } -unsigned EventSystem::indexOfEvent(const Date& dt) { +unsigned EventSystem::indexOfEvent(const Date& date) { // TODO: make binary search for (unsigned i = indSoonestUpcoming; i < events.get_count(); i++) { - if (events[i].get_date().compare(dt) == 0) + if (events[i].get_date().compare(date) == 0) return i; } return events.get_count(); } -unsigned EventSystem::indexOfEvent(const char* name, const Date& dt) { - unsigned ind = indexOfEvent(dt); +unsigned EventSystem::indexOfEvent(const char* name, const Date& date) { + unsigned ind = indexOfEvent(date); if (ind < events.get_count() && events[ind].get_name().compare(name) == 0) return ind; return events.get_count(); @@ -69,12 +69,25 @@ StatusCode EventSystem::cancelTicketReservation(const char* name, const Date& da return events[ind].cancelReservation(seatRow, seatColumn); } -StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat) { +StatusCode EventSystem::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat) { + unsigned ind = indexOfEvent(name, date); + if (ind == events.get_count()) + return E_EventDoesNotExist; + return events[ind].buyTicket(Ticket(row, seat)); } -List<Ticket> EventSystem::queryFreeTickets(const char* name, const Date& dt) { - unsigned ind = indexOfEvent(name, dt); + +StatusCode EventSystem::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat, const char* password) { + unsigned ind = indexOfEvent(name, date); + if (ind == events.get_count()) + return E_EventDoesNotExist; + + return events[ind].buyTicketFromReservation(Reservation(Ticket(row, seat)), password); +} + +List<Ticket> EventSystem::queryFreeTickets(const char* name, const Date& date) { + unsigned ind = indexOfEvent(name, date); if (ind == events.get_count()) return List<Ticket>(); diff --git a/src/EventSystem/EventSystem.h b/src/EventSystem/EventSystem.h index 3fedf40..d00b14b 100644 --- a/src/EventSystem/EventSystem.h +++ b/src/EventSystem/EventSystem.h @@ -12,8 +12,8 @@ class EventSystem { unsigned indSoonestUpcoming; void updateSoonestUpcoming(); - unsigned indexOfEvent(const Date& dt); - unsigned indexOfEvent(const char* name, const Date& dt); + unsigned indexOfEvent(const Date& date); + unsigned indexOfEvent(const char* name, const Date& date); public: EventSystem(); @@ -27,7 +27,7 @@ public: StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat); StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat, const char* password); - List<Ticket> queryFreeTickets(const char* name, const Date& dt); + List<Ticket> queryFreeTickets(const char* name, const Date& date); void queryReservations(unsigned eventIndex); void queryBoughtTickets(Date start, Date end, unsigned hall); void queryMostVisited(); |
