#include "..\script_component.hpp" /* * File: fnc_initActivityRepository.sqf * Author: IDSolutions * Date: 2026-03-30 * Public: No * * Description: * Initializes the CAD activity repository for recent operational events. * * Arguments: * None * * Return Value: * CAD activity repository object [HASHMAP OBJECT] * * Example: * call forge_server_cad_fnc_initActivityRepository */ #pragma hemtt ignore_variables ["_self"] GVAR(ActivityRepositoryBaseClass) = compileFinal createHashMapFromArray [ ["#type", "CadActivityRepositoryBaseClass"], ["#create", compileFinal { _self set ["activityRegistry", []]; _self set ["persistenceLoaded", false]; }], ["restorePersistedActivity", compileFinal { if (_self getOrDefault ["persistenceLoaded", false]) exitWith { true }; private _persistenceService = _self getOrDefault ["persistenceService", createHashMap]; if (_persistenceService isEqualTo createHashMap) exitWith { false }; private _result = _persistenceService call ["loadActivity", []]; if !(_result getOrDefault ["success", false]) exitWith { false }; _self set ["activityRegistry", +(_result getOrDefault ["data", []])]; _self set ["persistenceLoaded", true]; true }], ["appendEntry", compileFinal { params [["_entry", createHashMap, [createHashMap]]]; if (_entry isEqualTo createHashMap) exitWith { false }; _self call ["restorePersistedActivity", []]; private _activityRegistry = +(_self getOrDefault ["activityRegistry", []]); private _finalEntry = +_entry; if ((_finalEntry getOrDefault ["timestamp", -1]) < 0) then { _finalEntry set ["timestamp", serverTime]; }; _activityRegistry pushBack _finalEntry; if ((count _activityRegistry) > 50) then { _activityRegistry deleteRange [0, (count _activityRegistry) - 50]; }; _self set ["activityRegistry", _activityRegistry]; private _persistenceService = _self getOrDefault ["persistenceService", createHashMap]; if (_persistenceService isNotEqualTo createHashMap) then { _persistenceService call ["appendActivity", [_finalEntry]]; }; true }], ["appendActivity", compileFinal { params [ ["_type", "", [""]], ["_message", "", [""]], ["_taskID", "", [""]], ["_groupID", "", [""]], ["_actorUid", "", [""]] ]; if (_type isEqualTo "" || { _message isEqualTo "" }) exitWith { false }; private _entry = createHashMapFromArray [ ["type", _type], ["message", _message], ["taskId", _taskID], ["groupId", _groupID], ["actorUid", _actorUid] ]; _self call ["appendEntry", [_entry]] }], ["getActivity", compileFinal { _self call ["restorePersistedActivity", []]; +(_self getOrDefault ["activityRegistry", []]) }] ]; createHashMapObject [GVAR(ActivityRepositoryBaseClass)]