<UserStory> INV003: Remove Stock </UserStory>
<Changes>
1. Integrated InventoryManagementService into Controller to handle removal of inventory items.
2. Implemented InventoryManagementService::removeInventoryItem to mark items as INACTIVE in the datastore.
3. Enhanced AdminMenu with removeInventoryItem workflow:
- Displays inventory list with index, ID, part name, quantity, and price.
- Allows admin to select item by index for removal.
- Provides confirmation message after successful deletion.
4. Added static helper function displayInventoryWithItems in AdminMenu for modularized inventory display.
</Changes>
<Test>
Precondition:
1. Admin user is logged into the system.
2. Inventory contains multiple items with unique IDs.
3. DataStore is initialized and accessible.
Steps:
1. Navigate to Admin Menu and select "Remove Inventory Item".
- Verify that the system displays all inventory items with ID, part name, quantity, and price.
2. Select an item by entering its index.
- Verify that the system removes the item and displays a confirmation message.
3. Attempt to remove an item with an invalid index.
- Verify that the system rejects the input and shows an error message.
4. Navigate to "View Stock Levels".
- Verify that the removed item no longer appears in the inventory list.
</Test>
<Review>
Sreeja Reghukumar
</Review>
<UserStory> INV002: Add Stock </UserStory>
<Changes>
1. Added Controller integration with InventoryManagementService to support adding new inventory items and updating existing stock quantities.
2. Implemented InventoryManagementService::addInventoryItem to create new items via Factory and insert them into the DataStore.
3. Implemented InventoryManagementService::addInventoryItemStock to update stock quantities for existing items.
4. Enhanced AdminMenu with options to add new items or update stock quantities, including input validation and confirmation messages.
5. Added helper functions in AdminMenu to display inventory items and handle quantity updates interactively.
6. Included necessary headers (InventoryItem, Factory, iomanip) for new functionality.
</Changes>
<Test>
Precondition:
1. Admin user is logged into the system.
2. Inventory contains existing items with unique IDs.
3. DataStore is accessible and initialized.
Steps:
1. Navigate to Admin Menu and select "Add Inventory Item".
- Verify that the system prompts for part name, quantity, and price.
2. Enter details for a new item with a unique part name and ID.
- Verify that the item is successfully added and a confirmation message is displayed.
3. Attempt to add an item with a duplicate ID.
- Verify that the system rejects the duplicate and displays an error message.
4. Select "Add Quantity" option for an existing item.
- Verify that the system updates the stock quantity and displays the new total in the confirmation message.
5. Navigate to "View Stock Levels".
- Verify that the updated stock quantity is reflected in the inventory list.
</Test>
<Review>
Sreeja Reghukumar
</Review>
<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