diff options
Autocommit at 07.05.2022 @ 10:22
3 files changed, 18 insertions, 6 deletions
| -rw-r--r-- | src/Models/Reservation.cpp | 8 | ||||
| -rw-r--r-- | src/Services/EventService.cpp | 12 | ||||
| -rw-r--r-- | src/Services/EventService.h | 4 |
diff --git a/src/Models/Reservation.cpp b/src/Models/Reservation.cpp index 50febd3..65a0a9d 100644 --- a/src/Models/Reservation.cpp +++ b/src/Models/Reservation.cpp @@ -15,6 +15,14 @@ const Ticket& Reservation::get_ticket() const { return ticket; } +const char* Reservation::get_password() const { + return password; +} + +const char* Reservation::get_note() const { + return note; +} + void Reservation::read(std::istream& istr) { ticket.read(istr); istr.read(password, sizeof(password)); diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp index cfd0422..59d4b43 100644 --- a/src/Services/EventService.cpp +++ b/src/Services/EventService.cpp @@ -1,5 +1,6 @@ #include "EventService.h" #include "StatusCode.h" +#include <cstring> /* Private */ @@ -16,6 +17,10 @@ unsigned EventService::indexOfEvent(const char* name, const Date& date) { return events.get_count(); } +bool correctReservationPassword(const Reservation& res, const char* password) { + return strcmp(res.get_password(), password) == 0; +} + /* Public */ EventService::EventService(const HallService* hs) { @@ -120,17 +125,16 @@ StatusCode EventService::buyTicket(const char* name, const Date& date, const Tic if (rInd < events[eInd].get_reservations().get_count()) { if (password == nullptr) return E_TicketAlreadyReserved; + if (!correctReservationPassword(events[eInd].get_reservations()[rInd], password)) + return E_WrongReservationPassword; + events[eInd].get_reservations().removeAt(rInd); } events[eInd].get_tickets().insert(ticket); return Success; } -return events[ind].buyTicketFromReservation(Reservation(ticket), password); -} - - const Hall* EventService::queryEventHall(const char* name, const Date& date) { unsigned ind = indexOfEvent(name, date); if (ind == events.get_count()) diff --git a/src/Services/EventService.h b/src/Services/EventService.h index 858ff41..6ea1bef 100644 --- a/src/Services/EventService.h +++ b/src/Services/EventService.h @@ -29,10 +29,10 @@ public: StatusCode cancelTicketReservation(const char* name, const Date& date, unsigned seatRow, unsigned seatColumn); StatusCode cancelTicketReservation(const char* name, const Date& date, const Ticket& ticket); - StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat); - StatusCode buyTicket(const char* name, const Date& date, const Ticket& ticket); StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat, const char* password); StatusCode buyTicket(const char* name, const Date& date, const Ticket& ticket, const char* password); + StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat); + StatusCode buyTicket(const char* name, const Date& date, const Ticket& ticket); const Hall* queryEventHall(const char* name, const Date& date); OrderedList<Ticket> queryTickets(const char* name, const Date& date); |
