Website Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
Commit4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 10:07:22 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-07 10:07:22 +0300
Files3940d6db47edf030f5574cc8d9b0f4d109bc0674 /src
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.tar
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.tar.gz
FMI-OOP-P1_TicketSystem-4c818c48c9e9934e4b3f8f0da5f5c30dd61a1363.zip
Parentbfe8e5bb9a7da96af8ca254590154772ebbffffd (diff)
Autocommit at 07.05.2022 @ 10:07
3 files changed, 21 insertions, 10 deletions
-rw-r--r--src/Models/Event.cpp4
-rw-r--r--src/Models/Event.h4
-rw-r--r--src/Services/EventService.cpp23
diff --git a/src/Models/Event.cpp b/src/Models/Event.cpp
index 034e4b3..4328e3b 100644
--- a/src/Models/Event.cpp
+++ b/src/Models/Event.cpp
@@ -9,11 +9,11 @@ Event::Event(const Hall& hall, String name, Date date) : tickets(), reservations
this->date = date;
}
-const OrderedList<Ticket>& Event::get_tickets() const {
+OrderedList<Ticket>& Event::get_tickets() {
return tickets;
}
-const OrderedList<Reservation>& Event::get_reservations() const {
+OrderedList<Reservation>& Event::get_reservations() {
return reservations;
}
diff --git a/src/Models/Event.h b/src/Models/Event.h
index 4de2814..c69f1b8 100644
--- a/src/Models/Event.h
+++ b/src/Models/Event.h
@@ -22,8 +22,8 @@ public:
const Hall& get_hall() const;
const String& get_name() const;
const Date& get_date() const;
- const OrderedList<Ticket>& get_tickets() const;
- const OrderedList<Reservation>& get_reservations() const;
+ OrderedList<Ticket>& get_tickets();
+ OrderedList<Reservation>& get_reservations();
int compare(const Event& other);
};
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp
index 67e11dc..384e75e 100644
--- a/src/Services/EventService.cpp
+++ b/src/Services/EventService.cpp
@@ -64,11 +64,18 @@ StatusCode EventService::reserveTicket(const char* name, const Date& date, const
if (eInd == events.get_count())
return E_EventDoesNotExist;
+ unsigned tInd = events[eInd].get_tickets().findIndex(ticket);
+ if (tInd < events[eInd].get_tickets().get_count())
+ return E_TicketAlreadyBought;
+
Reservation res(ticket, password, note);
- unsigned
+ unsigned rInd = events[eInd].get_reservations().findIndex(res);
+ if (rInd < events[eInd].get_reservations().get_count())
+ return E_TicketAlreadyReserved;
- return events[ind].reserveTicket(ticket, password, note);
+ events[eInd].get_reservations().insert(res);
+ return Success;
}
StatusCode EventService::cancelTicketReservation(const char* name, const Date& date, unsigned seatRow, unsigned seatColumn) {
@@ -76,11 +83,15 @@ StatusCode EventService::cancelTicketReservation(const char* name, const Date& d
}
StatusCode EventService::cancelTicketReservation(const char* name, const Date& date, const Ticket& ticket) {
- unsigned ind = indexOfEvent(name, date);
- if (ind == events.get_count())
+ unsigned eInd = indexOfEvent(name, date);
+ if (eInd == events.get_count())
return E_EventDoesNotExist;
-
- return events[ind].cancelReservation(ticket);
+
+ unsigned rInd = events[eInd].get_reservations().findIndex(ticket);
+ if (rInd < events[eInd].get_reservations().get_count())
+ return E_TicketAlreadyReserved;
+
+ return events[eInd].cancelReservation(ticket);
}
StatusCode EventService::buyTicket(const char* name, const Date& date, unsigned row, unsigned seat) {