53713f444b
- Add serialize/deserialize support for core models - Add file-based load/save functions in management services - Introduce FileManager, Config, Utility and helper utilities - Persist observer IDs for notification services - Resolve object relationships during load (services, bookings, invoices, job cards) - Add controller-level loadSystemData/saveSystemData - Load data at app startup and save on shutdown
53 lines
2.0 KiB
C++
53 lines
2.0 KiB
C++
#include "UserManagementService.h"
|
|
#include "FileManager.h"
|
|
#include "User.h"
|
|
#include "Notification.h"
|
|
#include "Config.h"
|
|
|
|
void UserManagementService::loadUsers()
|
|
{
|
|
util::FileManager<User> userFileManager(config::file::USER_FILE);
|
|
util::FileManager<Notification> notificationFileManager(config::file::NOTIFICATION_FILE);
|
|
auto& users = m_dataStore.getUsers();
|
|
auto usersMap = userFileManager.load();
|
|
auto notificationsMap = notificationFileManager.load();
|
|
int numberOfUsers = usersMap.getSize();
|
|
int numberOfNotifications = notificationsMap.getSize();
|
|
for (int index = 0; index < numberOfUsers; index++)
|
|
{
|
|
users[usersMap.getKeyAt(index)] = usersMap.getValueAt(index);
|
|
}
|
|
for (int index = 0; index < numberOfNotifications; index++)
|
|
{
|
|
Notification* notification = notificationsMap.getValueAt(index);
|
|
const std::string& recipientUserId = notification->getRecipientUserId();
|
|
int userIndex = users.find(recipientUserId);
|
|
if (userIndex == -1)
|
|
{
|
|
throw std::runtime_error("Invalid recipient user ID");
|
|
}
|
|
User* user = users.getValueAt(userIndex);
|
|
user->addNotification(notification);
|
|
}
|
|
}
|
|
|
|
void UserManagementService::saveUsers()
|
|
{
|
|
util::FileManager<User> userFileManager(config::file::USER_FILE);
|
|
util::FileManager<Notification> notificationFileManager(config::file::NOTIFICATION_FILE);
|
|
auto& users = m_dataStore.getUsers();
|
|
util::Map<std::string, Notification*> notifications;
|
|
for (int userIndex = 0; userIndex < users.getSize(); userIndex++)
|
|
{
|
|
User* user = users.getValueAt(userIndex);
|
|
auto& userNotifications = user->getNotifications();
|
|
for (int notificationIndex = 0; notificationIndex < userNotifications.getSize(); notificationIndex++)
|
|
{
|
|
notifications[userNotifications.getKeyAt(notificationIndex)] =
|
|
userNotifications.getValueAt(notificationIndex);
|
|
}
|
|
}
|
|
userFileManager.save(users);
|
|
notificationFileManager.save(notifications);
|
|
}
|