namespace SafeNSound.FakeUser; public class RandomAlarmService(UserStore userStore): IHostedService { private Task? _listenerTask; private readonly CancellationTokenSource _cts = new(); public async Task StartAsync(CancellationToken cancellationToken) { _listenerTask = Run(_cts.Token); } private async Task Run(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { try { var user = userStore.GetRandomUser(); if (Random.Shared.Next(100) > 90) { await user.Client!.SetAlarm(new Sdk.AlarmDto { Reason = "fall" }); } else { await user.Client!.DeleteAlarm(); } } catch (Exception ex) { Console.WriteLine($"Error setting/deleting alarm: {ex.Message}"); } await Task.Delay(TimeSpan.FromMilliseconds(100), cancellationToken); } } public async Task StopAsync(CancellationToken cancellationToken) { await _cts.CancelAsync(); } }