Website Summary Files Commits Branches @commit @diff @stats
path: root / src / UserInterface / VenueConsoleUI.cpp
diff options
context:
space:
mode:
Commitd59fb3f15f907649c2ef0cb6a9e2ff31e33f58af (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-08 21:34:49 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-08 21:34:49 +0300
Filesf2a7826e1aec25cca14b93559d4851a5f2e6a4c7 /src/UserInterface/VenueConsoleUI.cpp
FMI-OOP-P1_TicketSystem-d59fb3f15f907649c2ef0cb6a9e2ff31e33f58af.tar
FMI-OOP-P1_TicketSystem-d59fb3f15f907649c2ef0cb6a9e2ff31e33f58af.tar.gz
FMI-OOP-P1_TicketSystem-d59fb3f15f907649c2ef0cb6a9e2ff31e33f58af.zip
Parent4788989f31999b899185e8ebf1bf9875ff32941e (diff)
Renamed VenueConsoleUI to FMITicketSystemConsoleUI
1 files changed, 0 insertions, 293 deletions
-rw-r--r--src/UserInterface/VenueConsoleUI.cpp293
diff --git a/src/UserInterface/VenueConsoleUI.cpp b/src/UserInterface/VenueConsoleUI.cpp
deleted file mode 100644
index 6a40f77..0000000
--- a/src/UserInterface/VenueConsoleUI.cpp
+++ /dev/null
@@ -1,293 +0,0 @@
-#include "VenueConsoleUI.h"
-#include "../Generic/List/OrderedList.hpp"
-#include "../Generic/String/String.h"
-#include "../Generic/Date/Date.h"
-#include "../Generic/ConsoleInterface/Menu.h"
-#include "../Generic/ConsoleInterface/Toolbox.hpp"
-#include "../Services/StatusCode.h"
-#include "../Models/Reservation.h"
-#include <cstring>
-
-EventService* es;
-HallService* hs;
-
-Menu mainMenu("FMI Ticket System", true, false),
- ticketManagementMenu("Ticket management", false, true),
- eventManagementMenu("Event management", false, true),
- reportsMenu("Report management", false, true);
-
-void handleStatusCode(StatusCode sc, Menu menu) {
- switch (sc) {
- case Success:
- menu.registerSuccess("Success!"); break;
- case W_TicketHadNotBeenReserved:
- menu.registerWarning("Ticket hadn't been reserved. Nothing changed."); break;
- case E_EventDoesNotExist:
- menu.registerError("Event doesn't exist!"); break;
- case E_EventWillOverlap:
- menu.registerError("There is already an event at same time!"); break;
- case E_TicketAlreadyBought:
- menu.registerError("Ticket was already bought!"); break;
- case E_TicketAlreadyReserved:
- menu.registerError("Ticket was already reserved!"); break;
- case E_ReservationDoesNotExist:
- menu.registerError("Reservation doesn't exist!"); break;
- case E_WrongReservationPassword:
- menu.registerError("Wrong reservation password!"); break;
- case E_FileCouldNotBeOpened:
- menu.registerError("An error occurred while trying to open a file!"); break;
- default:
- menu.registerError("An unhandled status code was returned!"); break;
- }
-}
-
-/* Ticket Management */
-
-void command_freeSeats() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
-
- unsigned seatsPerRow = 0;
- String seating = es->createSeatingString(name, date, &seatsPerRow);
- if (seating.get_length() == 0) {
- handleStatusCode(E_EventDoesNotExist, ticketManagementMenu);
- return;
- }
-
- table(1, seatsPerRow, seating.get_cstr());
- pressEnterToContinue();
-}
-
-void command_reserveTicket() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
- Ticket tic;
- inputSubBox("Enter row and seat: ", &tic);
- char password[PASSWORD_LEN];
- inputLineSubBox("Enter password [Max 8 characters]: ", password, PASSWORD_LEN);
- char note[NOTE_LEN];
- inputLineSubBox("Enter note [Max 32 characters]: ", note, NOTE_LEN, false);
-
- StatusCode s = es->reserveTicket(name, date, password, note, tic);
- handleStatusCode(s, ticketManagementMenu);
-}
-
-void command_cancelReservation() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
- Ticket tic;
- inputSubBox("Enter row and seat: ", &tic);
-
- StatusCode s = es->cancelTicketReservation(name, date, tic);
- handleStatusCode(s, ticketManagementMenu);
-}
-
-void command_buyTicket() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
- Ticket tic;
- inputSubBox("Enter row and seat: ", &tic);
-
- StatusCode s = es->ticketIsReserved(name, date, tic);
- if (s == Success) {
- warningSubBox("Ticket is reserved!");
-
- char pass[PASSWORD_LEN];
- inputLineSubBox("Enter reservation password: ", pass, PASSWORD_LEN);
-
- String note;
- s = es->buyTicket(name, date, tic, pass, &note);
- if (note.get_length() > 0) {
- successSubBox("The reservation had a note attached. It reads:");
- successSubBox(note.get_cstr());
- pressEnterToContinue(false);
- }
- }
- else if (s == W_TicketHadNotBeenReserved) {
- s = es->buyTicket(name, date, tic);
- }
-
- handleStatusCode(s, ticketManagementMenu);
-}
-
-void submenu_ticketManagement() {
- ticketManagementMenu.navigate();
-}
-
-/* Event Management */
-
-void command_createEvent() {
- unsigned hallNumber;
- inputSubBox("Enter hall number: ", &hallNumber);
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
-
- StatusCode s = es->createEvent(hallNumber, name, date);
- handleStatusCode(s, eventManagementMenu);
-}
-
-void command_cancelEvent() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- Date date;
- inputSubBox("Enter event date: ", &date);
-
- StatusCode s = es->cancelEvent(name, date);
- handleStatusCode(s, eventManagementMenu);
-}
-
-void customPrintEvent(const Event& ev) {
- print(ev.get_name());
- print(" || Hall ");
- print(ev.get_hall().get_number());
- print(" @ ");
- printLine(ev.get_date());
-}
-
-void command_mostWatched() {
- unsigned topN;
- inputSubBox("How many to take?: ", &topN);
-
- List<Event> top = es->queryMostWatched(topN);
-
- printLine("");
- print("The top ");
- print(topN);
- printLine(" most watched events are:");
-
- resetOrderedList(1);
- for (unsigned i = 0; i < top.get_count(); i++) {
- _printOrderedListBeginning();
- customPrintEvent(top[i]);
- }
-
- pressEnterToContinue();
-}
-
-void command_belowWatchers() {
- printLine("Events with less than 10% bought tickets in hall:");
-
- List<Event> least = es->queryInsufficientlyVisited();
- for (unsigned i = 0; i < least.get_count(); i++) {
- customPrintEvent(least[i]);
- }
-
- bool toDelete;
- inputBox("Do you want to cancel them? [0/1]: ", &toDelete);
- if (toDelete) {
- StatusCode s = Success;
- for (unsigned i = 0; i < least.get_count(); i++)
- s = es->cancelEvent(least[i].get_name().get_cstr(), least[i].get_date());
- handleStatusCode(s, eventManagementMenu);
- }
-}
-
-void submenu_eventManagement() {
- eventManagementMenu.navigate();
-}
-
-/* Report Management */
-
-void command_reservationsList() {
- char name[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event name: ", name, MAX_LINE_WIDTH);
- char dateStr[MAX_LINE_WIDTH];
- inputLineSubBox("Enter event date: ", dateStr, MAX_LINE_WIDTH, false);
-
- Date date(dateStr);
-
- StatusCode s = es->reportReservations(name, date);
- handleStatusCode(s, reportsMenu);
-}
-
-void command_boughtTickets() {
- char hallNumber[MAX_LINE_WIDTH];
- inputLineSubBox("Enter hall number: ", hallNumber, MAX_LINE_WIDTH);
- Date start, end;
- inputSubBox("Enter start date: ", &start);
- inputSubBox("Enter end date: ", &end);
-
- StatusCode s;
- if (strcmp(hallNumber, "ALL") == 0)
- s = es->reportBoughtTickets(0, start, end, true);
- else
- s = es->reportBoughtTickets(atoi(hallNumber), start, end);
-
- handleStatusCode(s, reportsMenu);
-}
-
-void submenu_reportManagement() {
- reportsMenu.navigate();
-}
-
-/* Main */
-
-void load() {
- StatusCode s = es->load();
- if (s == E_FileCouldNotBeOpened) {
- errorBox("Could not load events from file!");
- pressEnterToContinue(false);
- }
- s = hs->load();
- if (s == E_FileCouldNotBeOpened) {
- errorBox("Could not load halls from file!");
- pressEnterToContinue(false);
- }
-}
-
-void save() {
- StatusCode s = es->save();
- if (s == E_FileCouldNotBeOpened) {
- errorBox("Could not save events to file!");
- pressEnterToContinue();
- }
- s = hs->save();
- if (s == E_FileCouldNotBeOpened) {
- errorBox("Could not save halls to file!");
- pressEnterToContinue(false);
- }
-}
-
-void init() {
- mainMenu.addCommand(Command("Ticket Management", submenu_ticketManagement));
- mainMenu.addCommand(Command("Event Management", submenu_eventManagement));
- mainMenu.addCommand(Command("Report Management", submenu_reportManagement));
-
- ticketManagementMenu.addCommand(Command("Print Seats", command_freeSeats));
- ticketManagementMenu.addCommand(Command("Reserve Ticket", command_reserveTicket));
- ticketManagementMenu.addCommand(Command("Cancel Ticket Reservation", command_cancelReservation));
- ticketManagementMenu.addCommand(Command("Buy Ticket", command_buyTicket));
-
- eventManagementMenu.addCommand(Command("Create Event", command_createEvent));
- eventManagementMenu.addCommand(Command("Cancel Event", command_cancelEvent));
- eventManagementMenu.addCommand(Command("Query - Most Watched", command_mostWatched));
- eventManagementMenu.addCommand(Command("Query - Below 10% watchers", command_belowWatchers));
-
- reportsMenu.addCommand(Command("Reservations List", command_reservationsList));
- reportsMenu.addCommand(Command("Bought Tickets", command_boughtTickets));
-}
-
-/*!
- * Stores EventService and HallService pointers in internal global variables,
- * calls EventService and HallService load() functions,
- * initializes all menus, navigates the main menu and
- * finally calls EventService and HallService save() functions
- */
-void runUI(EventService* eventService, HallService* hallService) {
- es = eventService;
- hs = hallService;
- load();
- init();
- mainMenu.navigate();
- save();
-}