User Story #1953
User Story #1954
**Changes**
- Refactored Notification model to use SerializedNotification for shared memory persistence.
- Removed notification ownership from the User model and stored notifications separately in the DataStore.
- Added notification state tracking to support soft deletion.
- Updated notification creation, retrieval, and deletion flows to use DataStore-managed notifications.
- Refactored observer persistence for Service, Payment, and Inventory Management services to use shared memory mappings.
- Removed file-based observer loading and saving logic.
- Updated notification services to persist notifications directly through the DataStore.
- Added observer load/save support in DataStore.
- Removed legacy FileManager and file-based notification persistence utilities.
- Simplified observer interfaces and removed unused observer ID persistence methods.
- Updated application startup and shutdown flow to use DataStore initialization and cleanup.
Related work items: #1953, #1954
<UserStory> 1954: Implement Service Refactoring </UserStory>
UserStory #1954
<Changes>
1. Refactored notification handling to persist notifications directly in the datastore instead of maintaining notification collections within User objects.
2. Removed recipient User pointer dependencies from Notification and retained recipient user identification through recipientUserId.
3. Implemented generic observer persistence support in DataStore with shared helper methods for loading and saving observer subscriptions.
4. Added datastore-backed observer management for ServiceManagementService, PaymentManagementService, and InventoryManagementService.
5. Updated attach() and detach() operations to load, modify, and persist observer subscriptions using shared memory mappings.
6. Refactored sendNotification() implementations to create and persist Notification records directly to the datastore for subscribed observers.
7. Updated UserManagementService notification retrieval and deletion logic to operate on datastore notification records filtered by recipient user ID.
8. Removed notification ownership and observer-specific notification APIs from User and Observer classes.
9. Added configurable shared memory growth factor support and updated mapping expansion logic to use centralized configuration values.
10. Removed obsolete NotificationManagementService implementation and updated project configuration references.
11. Added DataStoreLockGuard integration for observer and notification persistence operations to ensure synchronized datastore access.
</Changes>
<Test>
N/A
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
<UserStory> 1953: Model Refactoring </UserStory>
UserStory #1953
<Changes>
1. Replaced CSV-based Notification serialization and deserialization with SerializedNotification record-based serialization for shared memory storage.
2. Implemented Notification::serialize() to convert Notification objects into fixed-size SerializedNotification structures.
3. Implemented Notification::deserialize() to reconstruct Notification objects directly from SerializedNotification records.
4. Added Notification state persistence by introducing util::State support in constructors, serialization, and deserialization flows.
5. Updated Notification class interfaces to use SerializedNotification types instead of std::string serialization APIs.
6. Removed legacy CSV serialization support, including CSV parsing logic and header generation functionality.
7. Added SerializedNotification dependencies through SerializedRecords.h inclusion and forward declaration support.
8. Initialized Notification objects with ACTIVE state by default and added state getter/setter APIs.
</Changes>
<Test>
N/A
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
User Story #1959
User Story #1960
**Changes**
- Refactored User serialization/deserialization to use SerializedUser.
- Removed user loading and saving responsibilities from UserManagementService.
- Added DataStoreLockGuard for automatic datastore locking/unlocking.
- Updated user operations to work with tracked records.
- Added persistence support for user creation, updates, notification changes, and user removal.
- Refactored notification handling to use datastore-managed notifications.
- Updated DataStore to load and save users and notifications using shared memory records.
- Reworked application startup and shutdown flow using Controller::initialize() and Controller::shutdown().
- Updated UI flow to use the new initialization and shutdown methods.
- Added required project and shared memory updates to support the refactoring.
Related work items: #1925, #1959, #1960
<UserStory> 1952: Service Refactoring </UserStory>
UserStory #1952
<Changes>
1. Enhanced DataStore::getUsers to load SerializedUser records, refresh cache,
and attach notifications to recipient users with validation for recipient IDs.
2. Updated DataStore::saveUsers to persist SerializedUser records and save
notifications alongside user data.
3. Refactored AuthenticationManagementService::login to use DataStoreLockGuard
and tracked user map with SerializedUser-backed records.
4. Modified AuthenticationManagementService::changePassword to ensure thread-safe
updates, mark user record as MODIFIED, and persist changes via DataStore::saveUsers.
5. Added dependencies for Utility.h and DataStoreLockGuard.h in
AuthenticationManagementService.cpp to support safe record handling.
</Changes>
<Test>
N/A
</Test>
<Review>
Sreeja Reghukumar
</Review>
<UserStory> 1951: Model Refactoring</UserStory>
UserStory #1951
<Changes>
1. Replaced CSV-based serialization and deserialization in ComboPackage,
JobCard, Service, and ServiceBooking models with fixed-size SerializedRecord
structures for shared memory storage.
2. Implemented serialize() methods to convert objects into SerializedComboPackage,
SerializedJobCard, SerializedService, and SerializedServiceBooking records.
3. Implemented deserialize() methods to reconstruct objects directly from
SerializedRecord types instead of parsing CSV strings.
4. Updated model class interfaces to use SerializedRecord types, removing
legacy CSV serialization APIs and header generation functions.
5. Added SerializedRecords.h dependencies and forward declarations for
Serialized structures across affected models.
</Changes>
<Test>
N/A
</Test>
<Review>
Sreeja Reghukumar
</Review>
@@ -180,7 +180,6 @@ util::Vector<Notification*> UserManagementService::getUserNotifications(const st
notificationsVector.push_back(notification);
}
}
m_dataStore.unlockDataStore();
returnnotificationsVector;
}
else
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.