64 lines
2.3 KiB
C++
64 lines
2.3 KiB
C++
/*
|
|
File: ObserversHelper.h
|
|
Description: Provides utility functions for loading and saving observers
|
|
in the notification management system. Ensures that observer
|
|
IDs are validated against existing users in the datastore
|
|
before attaching them to the notification service.
|
|
Author: Trenser
|
|
Date: 22-May-2026
|
|
*/
|
|
|
|
#pragma once
|
|
#include "NotificationManagementService.h"
|
|
#include "FileHelper.h"
|
|
#include "DataStore.h"
|
|
|
|
namespace util
|
|
{
|
|
/*
|
|
Function: loadObservers
|
|
Description: Loads observer IDs from a file and attaches the corresponding users
|
|
to the notification management service. Validates that each observer ID
|
|
exists in the datastore before attaching.
|
|
Parameters:
|
|
- filePath: const std::string&, path to the file containing observer IDs
|
|
- service: NotificationManagementService*, pointer to the notification service
|
|
- dataStore: DataStore&, reference to the datastore containing users
|
|
Returns:
|
|
- void
|
|
Throws:
|
|
- std::runtime_error if an observer ID is invalid (not found in datastore)
|
|
*/
|
|
inline void loadObservers(const std::string& filePath, NotificationManagementService* service, DataStore& dataStore)
|
|
{
|
|
auto observerIDs = util::loadRecords(filePath);
|
|
auto& users = dataStore.getUsers();
|
|
for (int index = 0; index < observerIDs.getSize(); index++)
|
|
{
|
|
const std::string& observerID = observerIDs[index];
|
|
int userIndex = users.find(observerID);
|
|
if (userIndex == -1)
|
|
{
|
|
throw std::runtime_error("Invalid Observer ID");
|
|
}
|
|
service->attach(users.getValueAt(userIndex));
|
|
}
|
|
}
|
|
|
|
/*
|
|
Function: saveObservers
|
|
Description: Saves the current observer IDs from the notification management service
|
|
to a file for persistence.
|
|
Parameters:
|
|
- filePath: const std::string&, path to the file where observer IDs will be saved
|
|
- service: NotificationManagementService*, pointer to the notification service
|
|
Returns:
|
|
- void
|
|
*/
|
|
inline void saveObservers(const std::string& filePath, NotificationManagementService* service)
|
|
{
|
|
auto observerIDs = service->getObserverIDs();
|
|
util::saveRecords(filePath, observerIDs);
|
|
}
|
|
}
|