diff --git a/testFrontend/SafeNSound.FakeUser/MonitorService.cs b/testFrontend/SafeNSound.FakeUser/MonitorService.cs
index fa2022a..b1da7e6 100644
--- a/testFrontend/SafeNSound.FakeUser/MonitorService.cs
+++ b/testFrontend/SafeNSound.FakeUser/MonitorService.cs
@@ -87,11 +87,14 @@ public class MonitorService(ILogger<MonitorService> logger, UserStore userStore)
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);
+ var monitoredUsers = (await user.Client!.GetAssignedUsers()).ToArray();
+ if (monitoredUsers.Length == 0) {
+ logger.LogInformation("Monitor {UserId} has no assigned users", user.Auth.Username);
+ continue;
+ }
+ var userId = Random.Shared.GetItems(monitoredUsers, 1).First();
+ var budget = Random.Shared.NextDouble();
+ await user.Client!.AddBudget(userId, budget);
await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
}
catch (Exception ex) {
diff --git a/testFrontend/SafeNSound.Sdk/SafeNSoundClient.cs b/testFrontend/SafeNSound.Sdk/SafeNSoundClient.cs
index 8b06c30..4376d3f 100644
--- a/testFrontend/SafeNSound.Sdk/SafeNSoundClient.cs
+++ b/testFrontend/SafeNSound.Sdk/SafeNSoundClient.cs
@@ -118,6 +118,21 @@ public class SafeNSoundClient(SafeNSoundConfiguration config, string accessToken
var res = await HttpClient.PostAsync("/auth/logout", null);
res.EnsureSuccessStatusCode();
}
+
+ public async Task AddBudget(string userId, BudgetWithReason budget) {
+ var res = await HttpClient.PatchAsJsonAsync($"/user/{userId}/budget", budget);
+ res.EnsureSuccessStatusCode();
+ }
+
+ public async Task<BudgetWithHistory> GetBudget(string userId = "@me") {
+ var res = await HttpClient.GetAsync(
+ userId == "@me"
+ ? $"/budget"
+ : $"/user/{userId}/budget"
+ );
+ res.EnsureSuccessStatusCode();
+ return (await res.Content.ReadFromJsonAsync<BudgetWithHistory>())!;
+ }
}
public class AlarmDto {
@@ -140,4 +155,36 @@ public class DeviceDto {
[JsonPropertyName("lastSeen")]
public DateTime LastSeen { get; set; }
+}
+
+public class Budget {
+ [JsonPropertyName("budget")]
+ public double Amount { get; set; }
+}
+
+public class BudgetWithReason : Budget {
+ [JsonPropertyName("reason")]
+ public string? Reason { get; set; }
+}
+
+public class BudgetWithHistory {
+ [JsonPropertyName("budget")]
+ public double Amount { get; set; }
+
+ [JsonPropertyName("history")]
+ public List<BudgetHistoryEntry> History { get; set; } = new();
+}
+
+public class BudgetHistoryEntry {
+ [JsonPropertyName("venue")]
+ public string Venue { get; set; }
+
+ [JsonPropertyName("amount")]
+ public double Amount { get; set; }
+
+ [JsonPropertyName("reason")]
+ public string Reason { get; set; }
+
+ [JsonPropertyName("createdAt")]
+ public DateTime CreatedAt { get; set; }
}
\ No newline at end of file
|