<UserStory> SER002: Create Service </UserStory>
<Changes>
1. Added integration between Controller and ServiceManagementService to support service creation.
2. Implemented ServiceManagementService::createService with validation for duplicate service IDs and insertion into datastore.
3. Enhanced AdminMenu with selectInventoryItems helper to display inventory in tabular format, allow selection, and handle exit condition.
4. Updated AdminMenu::createService to prompt for service name, allow inventory selection, capture labour cost, and create service via Controller.
</Changes>
<Test>
Acceptance Criteria:
1. Admin enters new service name.
2. Admin selects required parts for the services.
3. Service created and visible to customers.
Precondition:
1. Admin is logged into the system.
2. Inventory contains at least one active item.
3. Datastore is available for storing services.
Steps:
1. Navigate to Admin menu and choose "Create Service".
- Verify that the system prompts for service name.
2. Select inventory items from the tabular list.
- Verify that inactive items are skipped and active items can be added.
3. Enter labour cost and confirm creation.
- Verify that the service is created successfully and stored in datastore.
4. Check customer view.
- Verify that the newly created service is visible to customers.
</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