1 files changed, 52 insertions, 0 deletions
diff --git a/testFrontend/SafeNSound.FakeUser/MonitorService.cs b/testFrontend/SafeNSound.FakeUser/MonitorService.cs
new file mode 100644
index 0000000..57d90a5
--- /dev/null
+++ b/testFrontend/SafeNSound.FakeUser/MonitorService.cs
@@ -0,0 +1,52 @@
+using ArcaneLibs.Extensions;
+
+namespace SafeNSound.FakeUser;
+
+public class MonitorService(ILogger<MonitorService> logger, UserStore userStore): IHostedService {
+ private Task? _getAllAlarmsTask, _assignBudgetTask;
+ private readonly CancellationTokenSource _cts = new();
+
+ public async Task StartAsync(CancellationToken cancellationToken) {
+ _getAllAlarmsTask = GetAllAlarms(_cts.Token);
+ _assignBudgetTask = AssignBudget(_cts.Token);
+ }
+
+ private async Task GetAllAlarms(CancellationToken cancellationToken) {
+ while (!cancellationToken.IsCancellationRequested) {
+ try {
+ var user = userStore.GetRandomMonitor();
+ var alarms = await user.Client!.GetAllAlarms();
+ if(alarms.Count > 0)
+ logger.LogInformation("Monitor {UserId} has outstanding alarms: {Alarm}", user.Auth.Username, alarms.ToJson(indent: false));
+ // else
+ // logger.LogInformation("Monitor {UserId} found no alarms to query", user.Auth.Username);
+ await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
+ } catch (Exception ex) {
+ logger.LogError(ex, "Error querying alarm");
+ }
+ }
+ }
+
+ private async Task AssignBudget(CancellationToken cancellationToken) {
+ while (!cancellationToken.IsCancellationRequested) {
+ try {
+ var user = userStore.GetRandomMonitor();
+ // var alarms = await user.Client!.GetAllAlarms();
+ // if(alarms.Count > 0)
+ // logger.LogInformation("Monitor {UserId} has outstanding alarms: {Alarm}", user.Auth.Username, alarms.ToJson(indent: false));
+ // else
+ // logger.LogInformation("Monitor {UserId} found no alarms to query", user.Auth.Username);
+ await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
+
+ } catch (Exception ex) {
+ logger.LogError(ex, "Error querying alarm");
+ }
+
+ }
+ }
+
+ public async Task StopAsync(CancellationToken cancellationToken) {
+ await _cts.CancelAsync();
+ await _getAllAlarmsTask!;
+ }
+}
\ No newline at end of file
|