<UserStory> INV001: View Stock Level </UserStory>
<Changes>
1. Integrated InventoryManagementService into Controller to provide read-only access to inventory items.
2. Added implementation for InventoryManagementService::getInventoryItems to fetch data from DataStore.
3. Enhanced AdminMenu with viewStockLevels functionality to display inventory details (ID, part name, quantity, price).
4. Updated NotificationManagementService interface to provide concrete implementations for sendNotification, attach, detach, and notify methods.
5. Included necessary headers (InventoryItem, InventoryManagementService, iomanip) for new functionality.
</Changes>
<Test>
Precondition:
1. Admin user is logged into the system.
2. Inventory contains multiple items with varying stock levels.
3. Notification service is active and users are registered.
Steps:
1. Navigate to Admin Menu and select "View Stock Levels".
- Verify that the system displays all inventory items with ID, part name, quantity, and price.
2. Check items with sufficient stock.
- Verify that they are displayed normally without highlighting.
3. Check items with low stock threshold.
- Verify that these items are highlighted to indicate low availability.
4. Trigger a notification for a low-stock item.
- Verify that the notification is sent to registered users successfully.
</Test>
<Review>
Sreeja Reghukumar
</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