diff options
Autocommit at 05.05.2022 @ 17:48
3 files changed, 33 insertions, 17 deletions
| -rw-r--r-- | src/EventSystem/EventSystem.cpp | 27 | ||||
| -rw-r--r-- | src/EventSystem/EventSystem.h | 6 | ||||
| -rw-r--r-- | src/VenueConsoleUI.cpp | 17 |
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(); diff --git a/src/VenueConsoleUI.cpp b/src/VenueConsoleUI.cpp index 02ae033..7cee64e 100644 --- a/src/VenueConsoleUI.cpp +++ b/src/VenueConsoleUI.cpp @@ -28,10 +28,10 @@ void command_newEvent() { char name[MAX_LINE_WIDTH]; inputLineBox("Enter event name: ", name, MAX_LINE_WIDTH); - Date dt; - inputBox("Enter event date and time: ", &dt); + Date date; + inputBox("Enter event date and time: ", &date); - handleStatusCode(v->get_es().createEvent(&v->get_halls()[hallIndex], name, dt)); + handleStatusCode(v->get_es().createEvent(&v->get_halls()[hallIndex], name, date)); } /* Ticket Management */ @@ -39,14 +39,17 @@ void command_newEvent() { void command_freeSeats() { char name[MAX_LINE_WIDTH]; inputLineBox("Enter event name: ", name, MAX_LINE_WIDTH); - Date dt; - inputBox("Enter event date: ", &dt); + Date date; + inputBox("Enter event date: ", &date); print("Number of free seats: "); - // printLine(v->get_es().queryFreeSeats(name, dt)); + // printLine(v->get_es().queryFreeSeats(name, date)); } void command_reserveTicket() { - + char name[MAX_LINE_WIDTH]; + inputLineBox("Enter event name: ", name, MAX_LINE_WIDTH); + Date date; + inputBox("Enter event date: ", &date); } void command_cancelReservation() { |
