89fc662181
<UserStory> 1960: Service Refactoring </UserStory> UserStory #1960 <Changes> 1. Replaced the Controller load/save workflow with initialize() and shutdown() methods. 2. Moved startup checks such as admin verification, low stock alerts, and payment reminders into Controller::initialize(). 3. Updated UserInterface to use the new Controller initialization and shutdown flow. 4. Updated DataStore::getUsers() and DataStore::getNotifications() to load data directly from shared memory. 5. Added logic to rebuild user notification mappings when user data is loaded from shared memory. 6. Implemented user and notification persistence through DataStore::saveUsers() and DataStore::saveNotifications(). 7. Updated UserManagementService to use TrackedRecord-based shared memory records. 8. Added DataStore locking and unlocking to user management operations for synchronization. 9. Updated createUser(), updateUserDetails(), removeUser(), and deleteNotification() to persist changes through shared memory. 10. Removed legacy loadUsers() and saveUsers() implementations from UserManagementService. 11. Added required header dependencies for shared memory support. </Changes> <Test> N/A </Test> <Review> Sreeja Reghukumar, please review </Review>
75 lines
3.8 KiB
C++
75 lines
3.8 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 <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 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();
|
|
}; |