<UserStory> CUS005: Update Customer Profile Details </UserStory>
<Changes>
1. Added update profile flow in CustomerMenu to collect new email and phone number inputs.
2. Added validation for updated email and phone number before saving changes.
3. Updated Controller::updateUserDetails() to fetch the authenticated user and delegate profile update to UserManagementService.
4. Added user existence validation in UserManagementService before updating profile details.
5. Added logic in UserManagementService to update stored email and phone details for the selected user.
6. Added profile update confirmation message after successful save.
</Changes>
<Test>
Update Customer Profile Details
Precondition:
1. Application is running and a customer is logged into the system.
2. Customer record exists in DataStore.
3. Customer has existing profile details stored in the system.
Steps:
1. Select the Update Profile Details option.
2. Verify that the current profile details are displayed.
- Verify that the system shows the customer’s existing details.
3. Enter a new valid email address and phone number.
4. Save the updated details.
- Verify that the system accepts the changes and displays a success message.
5. Create or view a future booking using the same customer account.
- Verify that the updated profile details are reflected in future bookings.
</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