b45463a66d
Changes: - Added Controller::removeServiceBooking() with proper documentation and delegation to ServiceManagementService. - Implemented ServiceManagementService::removeServiceBooking() to handle cancellation of pending bookings, enforce status validation, send notifications, and persist changes safely. - Updated CustomerMenu to include a "Cancel Service Booking" option in the menu, wired it into handleOperation, and implemented CustomerMenu::cancelServiceBooking() for user interaction. - Ensured consistent declarations in Controller.h, ServiceManagementService.h, and CustomerMenu.h. Fixes #2105
78 lines
4.0 KiB
C++
78 lines
4.0 KiB
C++
/*
|
|
File: Controller.h
|
|
Description: Header file declaring the Controller class, which manages
|
|
user authentication, inventory, services, bookings, job cards,
|
|
invoices, and notifications in the system.
|
|
Author: Trenser
|
|
Date:19-May-2026
|
|
*/
|
|
|
|
#pragma once
|
|
#include <windows.h>
|
|
#include <string>
|
|
#include "AuthenticationManagementService.h"
|
|
#include "Enums.h"
|
|
#include "InventoryManagementService.h"
|
|
#include "Map.h"
|
|
#include "PaymentManagementService.h"
|
|
#include "ServiceManagementService.h"
|
|
#include "UserManagementService.h"
|
|
|
|
class Service;
|
|
class ComboPackage;
|
|
class InventoryItem;
|
|
class ServiceBooking;
|
|
class User;
|
|
class JobCard;
|
|
class Invoice;
|
|
class Notification;
|
|
|
|
class Controller
|
|
{
|
|
private:
|
|
AuthenticationManagementService m_authenticationManagementService;
|
|
UserManagementService m_userManagementService;
|
|
ServiceManagementService m_serviceManagementService;
|
|
InventoryManagementService m_inventoryManagementService;
|
|
PaymentManagementService m_paymentManagementService;
|
|
public:
|
|
bool login(const std::string& username, const std::string& password);
|
|
void logout();
|
|
void changePassword(const std::string& newPassword);
|
|
void createCustomer(const std::string& username, const std::string& name, const std::string& password, const std::string& email, const std::string& phone);
|
|
const User* getAuthenticatedUser();
|
|
void createTechnician(const std::string& username, const std::string& name, const std::string& password, const std::string& email, const std::string& phone);
|
|
void updateUserDetails(const std::string& email, const std::string& phone);
|
|
util::Map<std::string, const Service*> getServices();
|
|
util::Map<std::string, const ComboPackage*> getComboPackages();
|
|
void purchaseService(const util::Vector<std::string>& serviceIDs, const std::string& vehicleNumber, const std::string& vehicleBrand, const std::string& vehicleModel);
|
|
void purchaseComboPackage(const std::string& comboPackageID, const std::string& vehicleNumber, const std::string& vehicleBrand, const std::string& vehicleModel);
|
|
util::Map<std::string, const InventoryItem*> getInventoryItems();
|
|
const InventoryItem* getInventoryItem(const std::string& inventoryItemID);
|
|
void addInventoryItem(const std::string& partName, int quantity, double price);
|
|
void addInventoryItemStock(const std::string& selectedItemId, int quantity);
|
|
void removeInventoryItem(const std::string& inventoryItemID);
|
|
util::Map<std::string, const ServiceBooking*> getServiceBookings();
|
|
util::Map<std::string, const ServiceBooking*> getServiceBookingsByUser(const std::string userID);
|
|
util::Map<std::string, const User*> getUsers();
|
|
util::Map<std::string, const User*> getUsers(util::UserType userType);
|
|
void createJobCard(const std::string& bookingID, const std::string& technicianID, const std::string& serviceID);
|
|
void createService(const std::string& name, const util::Vector<std::string>& inventoryItemIDs, double laborCost);
|
|
void removeServiceBooking(const std::string& bookingID);
|
|
void removeService(const std::string& serviceID);
|
|
util::Map<std::string, const JobCard*> getJobCardsByUser();
|
|
void updateJobStatus(const std::string& jobID);
|
|
void removeUser(const std::string& userID);
|
|
void createComboPackage(const std::string& name, const util::Vector<std::string>& serviceIDs, double discountPercentage);
|
|
void removeComboPackage(const std::string& comboPackageID);
|
|
util::Map<std::string, const Invoice*> getInvoicesByUser();
|
|
util::Map<std::string, const Invoice*> getAllInvoices();
|
|
void confirmPayment(const std::string& invoiceID);
|
|
void completePayment(const std::string& invoiceID, util::PaymentMode paymentMode);
|
|
util::Vector<const Notification*> getNotifications();
|
|
void deleteNotification(const std::string& notificationID);
|
|
void configureNotifications(bool paymentNotifications, bool serviceNotifications);
|
|
bool initialize();
|
|
void shutdown();
|
|
void registerEvents(HANDLE accountDisabledEvent, HANDLE notificationAvailableEvent);
|
|
}; |