public async Task<WatcherStatsDto> GetStatsAsync(GetWatcherStats query) { var watcher = await GetAsync(query.OrganizationId, query.WardenId, query.WatcherName); if (watcher == null) return null; var iterations = await _database.WardenIterations() .GetForWatcherAsync(query.OrganizationId, query.WardenId, query.WatcherName); var results = iterations.SelectMany(x => x.Results) .Select(x => x.WatcherCheckResult) .Where(x => x.Watcher.Name.EqualsCaseInvariant(query.WatcherName)) .ToList(); var stats = _statsCalculator.Calculate(results); Logger.Trace($"Statistics for watcher {watcher.Name} for Warden: '{query.WardenId}' " + $"in organization: '{query.OrganizationId}' were created."); return new WatcherStatsDto { Name = watcher.Name, Type = watcher.Type, TotalUptime = stats.TotalUptime, TotalDowntime = stats.TotalDowntime, TotalChecks = stats.TotalResults, TotalValidChecks = stats.TotalValidResults, TotalInvalidChecks = stats.TotalInvalidResults }; }
public async Task <WatcherStatsDto> GetStatsAsync(GetWatcherStats query) { var watcher = await GetAsync(query.OrganizationId, query.WardenId, query.WatcherName); if (watcher == null) { return(null); } var iterations = await _database.WardenIterations() .GetForWatcherAsync(query.OrganizationId, query.WardenId, query.WatcherName); var results = iterations.SelectMany(x => x.Results) .Select(x => x.WatcherCheckResult) .Where(x => x.Watcher.Name.EqualsCaseInvariant(query.WatcherName)) .ToList(); var stats = _statsCalculator.Calculate(results); Logger.Trace($"Statistics for watcher {watcher.Name} for Warden: '{query.WardenId}' " + $"in organization: '{query.OrganizationId}' were created."); return(new WatcherStatsDto { Name = watcher.Name, Type = watcher.Type, TotalUptime = stats.TotalUptime, TotalDowntime = stats.TotalDowntime, TotalChecks = stats.TotalResults, TotalValidChecks = stats.TotalValidResults, TotalInvalidChecks = stats.TotalInvalidResults }); }