Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }