diff options
Autocommit at 05.05.2022 @ 18:08
3 files changed, 28 insertions, 8 deletions
| -rw-r--r-- | src/ConsoleInterface/Menu.cpp | 16 | ||||
| -rw-r--r-- | src/ConsoleInterface/Menu.h | 4 | ||||
| -rw-r--r-- | src/VenueConsoleUI.cpp | 16 |
diff --git a/src/ConsoleInterface/Menu.cpp b/src/ConsoleInterface/Menu.cpp index 07be42e..9b4e98e 100644 --- a/src/ConsoleInterface/Menu.cpp +++ b/src/ConsoleInterface/Menu.cpp @@ -20,11 +20,19 @@ void Menu::addCommand(const Command& command) { bool error = false; String errMessage; -void Menu::registerError(const char* message) { +void Menu::registerError(const char* message) const { error = true; errMessage = message; } +bool success = false; +String succMessage; + +void Menu::registerSuccess(const char* message) const { + success = true; + succMessage = message; +} + void Menu::navigate() const { if (menuOptions.get_count() == 0) { printLine("Menu is empty!"); @@ -45,6 +53,10 @@ void Menu::navigate() const { printError(errMessage.get_cstr()); error = false; } + if (success) { + printSuccess(succMessage.get_cstr()); + success = false; + } _printInputBoxLabel("Execute No [0-"); print(menuOptions.get_count()); @@ -52,7 +64,7 @@ void Menu::navigate() const { read(buffer); if (buffer > menuOptions.get_count()) - error = true; + registerError("Invalid menu option!"); else if (buffer > 0) menuOptions[buffer - 1].run(); } diff --git a/src/ConsoleInterface/Menu.h b/src/ConsoleInterface/Menu.h index a4ee3c6..fb8771c 100644 --- a/src/ConsoleInterface/Menu.h +++ b/src/ConsoleInterface/Menu.h @@ -14,7 +14,9 @@ public: Menu(const char* title, const Command* commands, unsigned commandCount); void addCommand(const Command& command); - void registerError(const char* message); + + void registerError(const char* message) const; + void registerSuccess(const char* message) const; void navigate() const; }; diff --git a/src/VenueConsoleUI.cpp b/src/VenueConsoleUI.cpp index acb9984..92a697a 100644 --- a/src/VenueConsoleUI.cpp +++ b/src/VenueConsoleUI.cpp @@ -10,10 +10,16 @@ Venue* v; Menu mainMenu("FMI Ticket System"), ticketManagementMenu("Ticket management"), eventManagementMenu("Event management"), reportsMenu("Report management"); -void handleStatusCode(StatusCode sc) { +void handleStatusCode(StatusCode sc, Menu menu) { switch (sc) { - case Success: printSuccess("Success!"); break; - case E_EventDoesNotExist: printError("Event doesn't exist!"); + case Success: + menu.registerSuccess("Success!"); break; + case E_EventDoesNotExist: + menu.registerError("Event doesn't exist!"); break; + case E_TicketAlreadyBought: + menu.registerError("Ticket was already bought!"); break; + case E_TicketAlreadyReserved: + menu.registerError("Ticket was already reserved!"); break; default: break; } } @@ -33,7 +39,7 @@ void command_newEvent() { Date date; inputBox("Enter event date and time: ", &date); - handleStatusCode(v->get_es().createEvent(&v->get_halls()[hallIndex], name, date)); + handleStatusCode(v->get_es().createEvent(&v->get_halls()[hallIndex], name, date), eventManagementMenu); } /* Ticket Management */ @@ -62,7 +68,7 @@ void command_reserveTicket() { unsigned seat; inputBox("Enter seat: ", &seat); - handleStatusCode(v->get_es().reserveTicket(name, date, password, note, row, seat)); + handleStatusCode(v->get_es().reserveTicket(name, date, password, note, row, seat), ticketManagementMenu); } void command_cancelReservation() { |
