public static Analytics.StatisticsSubjectPerYear <Statistics.Dotace> Create(Firma f) { var dotaceService = new Data.Dotace.DotaceService(); var dotaceFirmy = dotaceService.GetDotaceForIco(f.ICO); var cerpani = dotaceFirmy .SelectMany(d => d.Rozhodnuti) .SelectMany(r => r.Cerpani); var dataYearly = cerpani .GroupBy(c => c.GuessedYear) .ToDictionary(g => g.Key ?? 0, g => new Statistics.Dotace() { CelkemCerpano = g.Sum(c => c.CastkaSpotrebovana ?? 0), PocetCerpani = g.Count(c => c.CastkaSpotrebovana.HasValue) }); // doplnit počty dotací foreach (int year in dataYearly.Keys) { int pocetDotaci = dotaceFirmy.Count(d => (d.DatumPodpisu?.Year ?? 0) == year); dataYearly[year].PocetDotaci = pocetDotaci; } return(new Analytics.StatisticsSubjectPerYear <Statistics.Dotace>(f.ICO, dataYearly)); }
public static Analytics.StatisticsSubjectPerYear <Statistics.Dotace> Create(Firma f) { var dotaceService = new Data.Dotace.DotaceService(); var dotaceFirmy = dotaceService.GetDotaceForIco(f.ICO); // doplnit počty dotací var statistiky = dotaceFirmy.GroupBy(d => d.DatumPodpisu?.Year) .ToDictionary(g => g.Key ?? 0, g => new Statistics.Dotace() { PocetDotaci = g.Count() } ); var cerpani = dotaceFirmy .SelectMany(d => d.Rozhodnuti) .SelectMany(r => r.Cerpani); var dataYearly = cerpani .GroupBy(c => c.GuessedYear) .ToDictionary(g => g.Key ?? 0, g => (CelkemCerpano: g.Sum(c => c.CastkaSpotrebovana ?? 0), PocetCerpani: g.Count(c => c.CastkaSpotrebovana.HasValue)) ); foreach (var dy in dataYearly) { if (!statistiky.TryGetValue(dy.Key, out var yearstat)) { yearstat = new Statistics.Dotace(); statistiky.Add(dy.Key, yearstat); } yearstat.CelkemCerpano = dy.Value.CelkemCerpano; yearstat.PocetCerpani = dy.Value.PocetCerpani; } return(new Analytics.StatisticsSubjectPerYear <Statistics.Dotace>(f.ICO, statistiky)); }