public OverAllStatsResult(OverAllStats stats) { Users = stats.Users.Select(item => new DailyStatsResult(item)).ToList(); Opens = stats.Opens.Select(item => new DailyStatsResult(item)).ToList(); Clicks = stats.Clicks.Select(item => new DailyStatsResult(item)).ToList(); UserCount = Users.LastOrDefault()?.Count ?? 0 - stats.UserCountBeforeStart; OpenCount = Opens.Sum(item => item.Count); ClickCount = Clicks.Sum(item => item.Count); var firstUserCount = Users.FirstOrDefault()?.Count ?? 0; if (firstUserCount != 0) { UserGrowthPercent = GetPercent(firstUserCount, Users.LastOrDefault()?.Count ?? 0); } var firstOpenCount = stats.OpenCountBeforeStart + Opens.FirstOrDefault()?.Count ?? 0; if (firstOpenCount != 0) { OpenGrowthPercent = GetPercent(firstOpenCount, OpenCount); } var firstClickCount = stats.ClickCountBeforeStart + Clicks.FirstOrDefault()?.Count ?? 0; if (firstClickCount != 0) { ClickGrowthPercent = GetPercent(firstClickCount, ClickCount); } }
public static List <OverAllStatsCsvResult> Create(OverAllStats stats) { var result = new List <OverAllStatsCsvResult>(); result.AddRange(stats.Users.Select(item => new OverAllStatsCsvResult(OverAllStatsTypeCsvResult.User, item))); result.AddRange(stats.Opens.Select(item => new OverAllStatsCsvResult(OverAllStatsTypeCsvResult.Open, item))); result.AddRange( stats.Clicks.Select(item => new OverAllStatsCsvResult(OverAllStatsTypeCsvResult.Click, item))); return(result); }