public static IEnumerable <LeagueTableItemViewModel> GetStandings(this IEnumerable <BaseMatchViewModel> matchViewModels, int viewType, DateTime viewDate, int matchCount = 0) { var leagueTableViewModels = new List <LeagueTableItemViewModel>(); leagueTableViewModels.ConstructLeagueTableItems(matchViewModels.GetTeamViewModels()); foreach (var matchViewModel in matchViewModels.OrderByDescending(m => m.MatchDate)) { var leagueTableItem1ViewModel = leagueTableViewModels.Single(l => l.TeamViewModel.HeaderKey == matchViewModel.Team1Guid); var leagueTableItem2ViewModel = leagueTableViewModels.Single(l => l.TeamViewModel.HeaderKey == matchViewModel.Team2Guid); matchViewModel.ProcessMatch(leagueTableItem1ViewModel, leagueTableItem2ViewModel, viewType, viewDate, matchCount); } leagueTableViewModels.Sort(); LeagueTableItemViewModel previousLeagueTableItemViewModel = null; foreach (var leagueTableViewModel in leagueTableViewModels) { if (previousLeagueTableItemViewModel != null) { leagueTableViewModel.Position = leagueTableViewModel.Equals(previousLeagueTableItemViewModel) ? previousLeagueTableItemViewModel.Position : previousLeagueTableItemViewModel.Position + 1; } else { leagueTableViewModel.Position = 1; } previousLeagueTableItemViewModel = leagueTableViewModel; } return(leagueTableViewModels); }
private static void ProcessMatch(this BaseMatchViewModel matchViewModel, LeagueTableItemViewModel leagueTableItem1ViewModel, LeagueTableItemViewModel leagueTableItem2ViewModel, int viewType, DateTime viewDate, int matchCount = 0) { if (matchViewModel.Team1Ft != null && matchViewModel.Team2Ft != null && matchViewModel.MatchDate <= viewDate.ToEndOfDay()) { switch (Math.Sign((short)matchViewModel.Team1Ft - (short)matchViewModel.Team2Ft)) { case 1: if (leagueTableItem1ViewModel.IsIncluded(true, viewType, matchCount)) { leagueTableItem1ViewModel.HomeWins++; } if (leagueTableItem2ViewModel.IsIncluded(false, viewType, matchCount)) { leagueTableItem2ViewModel.AwayLosses++; } break; case 0: if (leagueTableItem1ViewModel.IsIncluded(true, viewType, matchCount)) { leagueTableItem1ViewModel.HomeDraws++; } if (leagueTableItem2ViewModel.IsIncluded(false, viewType, matchCount)) { leagueTableItem2ViewModel.AwayDraws++; } break; case -1: if (leagueTableItem1ViewModel.IsIncluded(true, viewType, matchCount)) { leagueTableItem1ViewModel.HomeLosses++; } if (leagueTableItem2ViewModel.IsIncluded(false, viewType, matchCount)) { leagueTableItem2ViewModel.AwayWins++; } break; } if (leagueTableItem1ViewModel.IsIncluded(true, viewType, matchCount)) { leagueTableItem1ViewModel.HomeScored += (int)matchViewModel.Team1Ft; leagueTableItem1ViewModel.HomeConceded += (int)matchViewModel.Team2Ft; } if (leagueTableItem2ViewModel.IsIncluded(false, viewType, matchCount)) { leagueTableItem2ViewModel.AwayConceded += (int)matchViewModel.Team1Ft; leagueTableItem2ViewModel.AwayScored += (int)matchViewModel.Team2Ft; } } }
private static TableRow CreateCutDownRow(this HtmlHelper html, LeagueTableItemViewModel value, bool isHighlighted, DateTime viewDate) { var row = new TableRow() { TableSection = TableRowSection.TableBody, CssClass = isHighlighted ? "info" : string.Empty }; row.Cells.Add(CreateCell(string.Empty, html.DisplayBadgeWithTeamLink(value.TeamViewModel.VersionEntity.Team, viewDate, 20, 20, null).ToString())); row.Cells.Add(CreateCell("text-center", value.Played.ToString())); row.Cells.Add(CreateCell("text-center", value.Points.ToString())); row.Cells.Add(CreateCell("text-center", value.GoalDifference.ToString("+#;-#;0"))); return(row); }
private static bool IsIncluded(this LeagueTableItemViewModel item, bool isHome, int viewType, int matchCount) { switch (viewType) { case 1: return(isHome && (matchCount == 0 || item.HomePlayed < matchCount)); case 2: return(!isHome && (matchCount == 0 || item.AwayPlayed < matchCount)); case 3: return(matchCount == 0 || item.Played < matchCount); default: return(false); } }
private static TableRow CreateFullRow(this HtmlHelper html, LeagueTableItemViewModel value, bool isHighlighted, DateTime viewDate, int viewType, bool showForm = false) { var row = new TableRow() { TableSection = TableRowSection.TableBody, CssClass = isHighlighted ? "info" : string.Empty }; row.Cells.Add(CreateCell("text-center", value.Position.ToString())); row.Cells.Add(CreateCell(string.Empty, html.DisplayBadgeWithTeamLink(value.TeamViewModel.VersionEntity.Team, viewDate, 20, 20, null).ToString())); row.Cells.Add(CreateCell("text-center", value.Played.ToString())); row.Cells.Add(CreateCell("text-center", value.Wins.ToString())); row.Cells.Add(CreateCell("text-center", value.Draws.ToString())); row.Cells.Add(CreateCell("text-center", value.Losses.ToString())); row.Cells.Add(CreateCell("text-center", value.Scored.ToString())); row.Cells.Add(CreateCell("text-center", value.Conceded.ToString())); row.Cells.Add(CreateCell("text-center", value.Points.ToString())); if (showForm) { switch (viewType) { case 1: row.Cells.Add(CreateCell("text-center bg-info", string.Format("{0:P0}", value.TeamViewModel.HomeLeagueForm))); break; case 2: row.Cells.Add(CreateCell("text-center bg-info", string.Format("{0:P0}", value.TeamViewModel.AwayLeagueForm))); break; default: row.Cells.Add(CreateCell("text-center bg-info", string.Format("{0:P0}", value.TeamViewModel.LeagueForm))); break; } } return(row); }