<UserStory> SER004: View Service History </UserStory>
<Changes>
1. Added integration between Controller and ServiceManagementService to fetch service bookings by customer ID.
2. Enhanced ServiceBooking model to store technician as a User* instead of a string for richer details.
3. Implemented Controller::getServiceBookingsByUser to return a read-only map of bookings for safe access.
4. Updated CustomerMenu::viewServiceHistory to display bookings in tabular format with aligned columns.
5. Added condition check to show technician name if assigned, otherwise display "Not Assigned".
6. Included booking status and discount percentage in the service history output.
</Changes>
<Test>
Acceptance Criteria:
1. System should fetch real-time status.
2. Status should update automatically when technician changes it.
3. Customer should be able to view history.
Precondition:
1. Customer is logged into the console application.
2. At least one active service booking exists for the customer.
3. Technician has permission to update booking status.
Steps:
1. Navigate to Customer menu and choose "View Service History".
- Verify that the console displays current booking status along with technician assignment.
2. Technician updates the status of a booking.
- Verify that the console view reflects the updated status automatically.
3. Customer views service history again.
- Verify that the history shows the latest status changes.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
- Removed observer map from Subject base class
- Removed notify() from Subject interface
- Made NotificationManagementService abstract with pure virtual methods
- Added static observer maps to notification service implementations
- Added attach() and detach() overrides in inventory, payment, and service management services
- Added update() override in User model for observer pattern support
- Updated notification method declarations with override specifiers
<Changes>
1. Added State enum with ACTIVE and INACTIVE values in Enums.h.
2. Added state member, getter, and setter in User, Service, InventoryItem, and ComboPackage models.
3. Updated constructors to initialize model objects with ACTIVE state by default.
4. Added state string conversion helper functions in Enums.h.
5. Added default return values in Controller getter methods to complete stub implementations.
6. Added basic menu loop implementation in CustomerMenu and TechnicianMenu for handling user input.
</Changes>
Changes:
- Added stub implementations for Controller.cpp methods
- Fixed const issue in UserInterface methods (run, login, registerCustomer, handleOperation)
- Changed return types to use const pointers for read-only objects
- Updated maps and vectors to return const object pointers
- Fixed some function parameter names and signatures for consistency