Website Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit0ffae376256a1e1ce0b73596389fed2cfc75c7e8 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 11:47:54 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 11:47:54 +0300
Filesf6d44674b679a565f182202b3bbf4e3840cf2408 /src
FMI-OOP-P1_TicketSystem-0ffae376256a1e1ce0b73596389fed2cfc75c7e8.tar
FMI-OOP-P1_TicketSystem-0ffae376256a1e1ce0b73596389fed2cfc75c7e8.tar.gz
FMI-OOP-P1_TicketSystem-0ffae376256a1e1ce0b73596389fed2cfc75c7e8.zip
Parent26cb9982828a8bf5898127cf0b50eaef499b572b (diff)
Autocommit at 07.05.2022 @ 11:47
3 files changed, 14 insertions, 11 deletions
-rw-r--r--src/Services/EventService.cpp15
-rw-r--r--src/Services/EventService.h2
-rw-r--r--src/UserInterface/VenueConsoleUI.cpp8
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);