Esempio n. 1
0
        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);
            }
        }