<UserStory> NOT001: View Customer Notifications </UserStory>
<Changes>
1. Added shared notification helper functions to display notifications in tabular format, support notification selection, and show full notification details.
2. Implemented notification deletion logic in Controller and UserManagementService to remove notifications for the authenticated user after viewing.
3. Updated CustomerMenu::viewNotifications() to use the shared notification viewing and deletion flow.
</Changes>
<Test>
Precondition:
1. Customer is registered in the system.
2. Customer is logged into the system.
3. Customer has one or more notifications available.
Steps:
1. Navigate to “View Notifications” from the customer menu.
- Verify that the system displays the list of notifications with title and timestamp.
2. Select a notification from the displayed list.
- Verify that the system displays the full notification details including message.
3. View the selected notification and continue.
- Verify that the viewed notification is deleted from the system.
4. Navigate to “View Notifications” again.
- Verify that the previously viewed notification no longer appears in the notification list.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
<UserStory> NOT004: Low Stock Alert </UserStory>
<Changes>
1. Added low stock alert check in Controller::runSystemChecks() to trigger inventory notification processing during system startup.
2. Implemented InventoryManagementService::sendLowStockAlerts() to detect inventory items below threshold, identify admin users, and send low stock alert notifications with item details.
3. Added helper logic to notify all admins when low stock inventory is detected.
</Changes>
<Test>
Precondition:
1. System has at least one admin user.
2. Inventory item exists with quantity below the configured low stock threshold.
3. Application is started and system checks execute.
Steps:
1. Start the application.
2. Allow system checks to run during startup.
3. Navigate to Inventory Menu / View Notifications.
- Verify that a low stock alert notification is displayed.
4. Open the generated notification.
- Verify that the notification includes the part name and remaining quantity.
5. Confirm notification content.
- Verify that the alert was triggered only for inventory items with stock below the threshold.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
<UserStory> NOT003: View Technician Notifications </UserStory>
<Changes>
1. Added MenuHelper.h to the project for shared notification viewing helper support.
2. Updated TechnicianMenu.cpp to include MenuHelper.h and route viewNotifications() through the shared notification handler.
</Changes>
<Test>
Precondition:
1. Technician user exists and is logged into the system.
2. Technician has one or more notifications available.
3. “View Notifications” option is visible in the Technician menu.
Steps:
1. Navigate to Technician Menu.
2. Select “View Notifications”.
3. Verify that the system displays a list of notifications showing title, message, and timestamp.
4. Select a notification to view full details.
- Verify that the selected notification is displayed and deleted after viewing.
5. Return to the notification list or reopen “View Notifications”.
- Verify that the previously viewed notification is no longer present.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
<UserStory> NOT002: View Admin Notifications </UserStory>
<Changes>
1. Added shared notification view handler `viewAndDeleteNotification()` in MenuHelper.h for notification viewing and deletion logic reuse.
2. Updated AdminMenu.cpp to include MenuHelper.h and connected AdminMenu::viewNotifications() to the shared notification handler.
</Changes>
<Test>
Precondition:
1. Admin user exists and is logged into the system.
2. Admin has one or more notifications available.
3. “View Notifications” option is visible in the Admin menu.
Steps:
1. Navigate to Admin Menu.
2. Select “View Notifications”.
3. Verify that the system displays a list of notifications showing title, message, and timestamp.
4. Select a notification to view full details.
- Verify that the selected notification is displayed and deleted after viewing.
5. Return to the notification list or reopen “View Notifications”.
- Verify that the previously viewed notification is no longer present.
</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