From 496621640f216d27ab53e82da5eeaaaa78a77b32 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Thu, 5 May 2022 17:48:33 +0300 Subject: Autocommit at 05.05.2022 @ 17:48 --- src/EventSystem/EventSystem.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'src/EventSystem/EventSystem.cpp') 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 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 EventSystem::queryFreeTickets(const char* name, const Date& date) { + unsigned ind = indexOfEvent(name, date); if (ind == events.get_count()) return List(); -- cgit v1.3.1-23-gd82d