diff options
Autocommit at 07.05.2022 @ 11:47
3 files changed, 14 insertions, 11 deletions
| -rw-r--r-- | src/Services/EventService.cpp | 15 | ||||
| -rw-r--r-- | src/Services/EventService.h | 2 | ||||
| -rw-r--r-- | src/UserInterface/VenueConsoleUI.cpp | 8 |
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp index 56f513e..50fb2a8 100644 --- a/src/Services/EventService.cpp +++ b/src/Services/EventService.cpp @@ -135,7 +135,7 @@ StatusCode EventService::buyTicket(const char* name, const Date& date, const Tic return Success; } -String EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow) { +String EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out) { unsigned eInd = indexOfEvent(name, date); if (eInd == events.get_count()) return ""; @@ -143,15 +143,16 @@ String EventService::createSeatingString(const char* name, const Date& date, uns unsigned rowCount = events[eInd].get_hall().get_rows(), seatsCount = events[eInd].get_hall().get_seatsPerRow(); *seatsPerRow = seatsCount; - String out; - for (unsigned row = 1; row <= rowCount; row++) { - for (unsigned seat = 1; seat <= seatsCount; seat++) { + delete[] out; + out = new char[rowCount * seatsCount]; + for (unsigned acc = 0, row = 1; row <= rowCount; row++) { + for (unsigned seat = 1; seat <= seatsCount; seat++, acc++) { if (events[eInd].get_tickets().contain(Ticket(row, seat))) - out += 'B'; + out[acc] = 'B'; else if (events[eInd].get_reservations().contain(Ticket(row, seat))) - out += 'R'; + out[acc] = 'R'; else - out += ' '; + out[acc] = ' '; } } return out; diff --git a/src/Services/EventService.h b/src/Services/EventService.h index 214d6ff..c4dbf0c 100644 --- a/src/Services/EventService.h +++ b/src/Services/EventService.h @@ -34,7 +34,7 @@ public: StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat); StatusCode buyTicket(const char* name, const Date& date, const Ticket& ticket); - String createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow = nullptr); + void createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out); void queryMostVisited(); void queryInsufficientlyVisited(); diff --git a/src/UserInterface/VenueConsoleUI.cpp b/src/UserInterface/VenueConsoleUI.cpp index 3856c77..c33c614 100644 --- a/src/UserInterface/VenueConsoleUI.cpp +++ b/src/UserInterface/VenueConsoleUI.cpp @@ -6,6 +6,7 @@ #include "../Generic/ConsoleInterface/Toolbox.hpp" #include "../Services/StatusCode.h" #include "../Models/Reservation.h" +#include <cstring> EventService* es; HallService* hs; @@ -45,13 +46,14 @@ void command_freeSeats() { inputSubBox("Enter event date: ", &date); unsigned seatsPerRow = 0; - String seating = es->createSeatingString(name, date, &seatsPerRow); - if (seating.get_count() == 0) { + char* seating = nullptr; + es->createSeatingString(name, date, &seatsPerRow, seating); + if (strlen(seating) == 0) { handleStatusCode(E_EventDoesNotExist, ticketManagementMenu); return; } - table(1, seatsPerRow, seating.get_cstr()); + table(1, seatsPerRow, seating); char tmp; inputLineBox("[Press enter to continue]", &tmp, 1); |
