private static void MergeStats(IEnumerable <AppResult> appResults, IDictionary <int, ApplicationUsageStatisticsDto> apps, Action <ApplicationUsageStatisticsDto, int> assignMethod) { foreach (var count in appResults) { if (count.Count == 0) { continue; } if (!apps.TryGetValue(count.ApplicationId, out var value)) { value = new ApplicationUsageStatisticsDto { ApplicationId = count.ApplicationId }; apps[value.ApplicationId] = value; } assignMethod(value, count.Count); } }
private async Task GetApps(Dictionary <int, ApplicationUsageStatisticsDto> apps) { using (var cmd = _unitOfWork.CreateDbCommand()) { cmd.CommandText = @"select Id, EstimatedNumberOfErrors, NumberOfFtes FROM Applications"; using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var estimatedNumberOfErrors = reader[1]; var numberOfDevelopers = reader[2]; var item = new ApplicationUsageStatisticsDto() { ApplicationId = reader.GetInt32(0), EstimatedNumberOfErrors = estimatedNumberOfErrors is DBNull ? 0 : (int)estimatedNumberOfErrors, NumberOfDevelopers = numberOfDevelopers is DBNull ? 0 : (decimal)numberOfDevelopers }; apps[item.ApplicationId] = item; } } } }