Пример #1
0
        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());
        }
Пример #2
0
        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);
        }