private string GetYear(LeagueSummary Summary, bool IsFirst, bool IsLast) { var html = new StringBuilder(); var color = Summary.Year % 10 < 5 ? "white" : "whitesmoke"; html.Append($"<tr style=\"background-color: {color}\">"); html.Append($"<td style=\"{GetBorderStyle(true, false, IsFirst, IsLast)}\">{Summary.Year}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.Teams}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.Games}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.FirstDate.ToString("ddd").Substring(0, 2)} {Summary.FirstDate.ToString("MM/dd")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.LastDate.ToString("ddd").Substring(0, 2)} {Summary.LastDate.ToString("MM/dd")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MedianSeries}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MinOffDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, true, IsFirst, IsLast)}\">{Summary.MedianOffDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MaxOffDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Monday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Tuesday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Wednesday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Thursday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Friday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Saturday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, true, IsFirst, IsLast)}\">{(Summary.CapacityDates[DayOfWeek.Sunday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Monday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Tuesday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Wednesday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Thursday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Friday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Saturday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, true, IsFirst, IsLast)}\">{(Summary.CapacityGames[DayOfWeek.Sunday] * 100).ToString("0")}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, false, IsFirst, IsLast)}\">{Summary.LongHomeGames}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.LongRoadDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.LongHomeGames}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.LongHomeDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(true, false, IsFirst, IsLast)}\">{Summary.MedianHomeGames}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MedianRoadDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MedianHomeGames}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.MedianHomeDays}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, false, IsFirst, IsLast)}\">{Summary.TotalDHs}</td>"); html.Append($"<td style=\"{GetBorderStyle(false, true, IsFirst, IsLast)}\">{Summary.MedianDHs}</td>"); html.Append("</tr>"); return(html.ToString()); }
public List <LeagueSummary> Get(List <TeamSummary> TeamSummaries) { var summaries = new List <LeagueSummary>(); foreach (var league in TeamSummaries.Select(s => s.League).Distinct()) { foreach (var year in TeamSummaries.Where(w => w.League == league).Select(s => s.Year).OrderBy(o => o).Distinct()) { var set = TeamSummaries.Where(q => (q.League == league) && (q.Year == year)); var summary = new LeagueSummary(); summary.Year = year; summary.Code = league; summary.Teams = set.Count(); summary.FirstDate = set.Min(g => g.FirstDate); summary.LastDate = set.Max(g => g.LastDate); summary.Games = Median(set.Select(g => g.TotalHomeGames + g.TotalRoadGames)); summary.MedianSeries = Median(set.Select(s => s.Series)); summary.MinOffDays = set.Min(s => s.OffDays); summary.MedianOffDays = Median(set.Select(s => s.OffDays)); summary.MaxOffDays = set.Max(s => s.OffDays); foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek))) { var denom = DayInSet(summary.FirstDate, summary.LastDate, day) * summary.Teams; summary.CapacityDates.Add(day, (double)set.Sum(s => s.HomeDates[day] + s.RoadDates[day]) / denom); summary.CapacityGames.Add(day, (double)set.Sum(s => s.HomeGames[day] + s.RoadGames[day]) / denom); } summary.LongHomeDays = set.Max(s => s.LongHomeDays); summary.LongHomeGames = set.Max(s => s.LongHomeGames); summary.LongRoadDays = set.Max(s => s.LongRoadDays); summary.LongRoadGames = set.Max(s => s.LongHomeGames); summary.MedianHomeDays = Median(set.Select(s => s.LongHomeDays)); summary.MedianHomeGames = Median(set.Select(s => s.LongHomeGames)); summary.MedianRoadDays = Median(set.Select(s => s.LongRoadDays)); summary.MedianRoadGames = Median(set.Select(s => s.LongRoadGames)); summary.TotalDHs = set.Sum(s => s.HomeDHs); summary.MedianDHs = Median(set.Select(s => s.HomeDHs)); summaries.Add(summary); } } return(summaries); }