private async Task CheckActiveAlerts(Miner miner, IEnumerable <Snapshot> snapshots, IScan scan, CancellationToken token) { var snapshotsForDefinition = snapshots.Where(s => scan.ScanPeriod.Contains(s.SnapshotTime)).ToList(); var activeAlerts = (await _alertService.GetActiveByDefinitionAsync(scan.Definition.Id, since: scan.Definition.LastEnabled, token: token)).ToList(); foreach (var activeAlert in activeAlerts) { if (scan.EndAlert(activeAlert, snapshotsForDefinition)) { _logger.LogInformation($"Ending alert {activeAlert.Id} for miner {miner.Id} with definition {scan.Definition.Id}"); activeAlert.End = DateTime.UtcNow; } else { _logger.LogInformation($"Continuing alert {activeAlert.Id} for miner {miner.Id} with definition {scan.Definition.Id}"); activeAlert.LastActive = DateTime.UtcNow; } await _alertService.UpdateAsync(activeAlert, token); } }