<UserStory> ADM001: Add Technician </UserStory>
<Changes>
1. Added UserManagementService integration in Controller to support technician account creation.
2. Updated Controller::createTechnician method to call createUser with util::UserType::TECHNICIAN.
3. Renamed parameter from 'phone' to 'phoneNumber' for clarity and consistency.
4. Enhanced AdminMenu::addTechnician with input validation for password, email, and phone number.
5. Added success and error handling messages in AdminMenu for technician creation workflow.
</Changes>
<Test>
Precondition:
1. Admin is logged into the system.
2. UserManagementService is available and connected.
3. No existing technician account with the same username/email.
Steps:
1. Navigate to Admin Menu and select "Add Technician".
2. Enter technician details (username, password, email, phone number).
- Verify that invalid password/email/phone inputs are rejected with error messages.
3. Enter valid technician details.
- Verify that uniqueness is checked and duplicate accounts are not created.
4. Submit valid details.
- Verify that technician account is created successfully and confirmation message is displayed.
</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