/* File: ServiceManagementService.h Description: Header file declaring the ServiceManagementService class, which manages services, combo packages, job cards, and service bookings. Inherits from NotificationManagementService to handle notifications. Author: Trenser Date:19-May-2026 */ #pragma once #include #include "Map.h" #include "NotificationManagementService.h" #include "DataStore.h" class Service; class ComboPackage; class ServiceBooking; class JobCard; class ServiceManagementService : public NotificationManagementService { private: DataStore& m_dataStore; static util::Map m_observers; public: ServiceManagementService() : m_dataStore(DataStore::getInstance()) {} util::Map getServices(); util::Map getComboPackages(); void purchaseService(const util::Vector& 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 getServiceBookings(); util::Map getServiceBookings(const std::string& customerID); ServiceBooking* getServiceBooking(const std::string& serviceID); void createJobCard(const std::string& bookingID, const std::string& technicianID, const std::string& serviceID); void createService(const std::string& name, const util::Vector& inventoryItemIDs, double laborCost); void removeService(const std::string& serviceID); util::Map getJobCards(const std::string& technicianID); void updateJobStatus(const std::string& jobID); void cancelCustomerServiceBookings(const std::string& customerID); void cancelTechnicianJobs(const std::string& technicianID); void createComboPackage(const std::string& packageName, const util::Vector& serviceIDs, double discountPercentage); void removeComboPackage(const std::string& comboPackageID); void sendNotification(User* user, const std::string& title, const std::string& message) override; void attach(User* user) override; void detach(User* user) override; };