<UserStory> ADM006:Create Combo Package </UserStory>
<Changes>
1. Added ServiceManagementService::createComboPackage to validate package name, included services, and discount percentage before creation.
2. Integrated Controller::createComboPackage to delegate combo package creation to ServiceManagementService.
3. Enhanced AdminMenu::createComboPackages to allow admin input for package name, service selection, and discount percentage.
4. Implemented service validation to ensure only active services are selectable and that duplicate combos are prevented.
5. Added formatted output for service listing with cost calculation and confirmation messages upon successful package creation.
</Changes>
<Test>
Precondition:
1. Admin is logged into the system.
2. At least two active services exist in the system.
3. ServiceManagementService is connected to DataStore for services and combo packages.
Steps:
1. Navigate to Admin Menu and select "Create Combo Package".
2. Enter package name, select two active services, and provide discount percentage.
- Verify that system validates service IDs and ensures discount is between 0 and 100.
3. Attempt to create a package with invalid service IDs or duplicate services.
- Verify that system rejects with appropriate error messages.
4. Enter valid package details.
- Verify that combo package is saved successfully and visible to customers.
</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