private static void AlertPersonToNewRound(Person person, string teamName, MatchupEntry competitor) { if (person.EmailAdress.Length == 0) { return; } string toAdress = ""; string subject = ""; StringBuilder body = new StringBuilder(); if (competitor != null) { subject = $"You have a new matchup with {competitor.TeamCompeting.TeamName}"; body.AppendLine("<h1>You have a new matchup</h1>"); body.Append("<strong>Competitor: </strong>"); body.Append(competitor.TeamCompeting.TeamName); body.AppendLine(); body.AppendLine("Have a great time!"); body.AppendLine("~Tournament Tracker"); } else { subject = "You have a bye week this round"; body.AppendLine("Enjoy your week off!"); body.AppendLine("~Tournament Tracker"); } toAdress = person.EmailAdress; EmailLogic.SendEmail(toAdress, subject, body.ToString()); }
private static List <Team> GetTeamsByPlace(Tournament model) { List <Team> output = new List <Team>(); Dictionary <Team, int> teamsBonusPointsDict = new Dictionary <Team, int>(); foreach (Team t in model.EnteredTeams) { teamsBonusPointsDict.Add(t, 0); } Matchup finalMatch = model.Rounds.Last().First(); output.Add(finalMatch.Winner); for (int roundIndex = model.Rounds.Count - 1; roundIndex >= 0; roundIndex--) { int counter = model.Rounds.Count - roundIndex - 1; int bonusScore = (int)Math.Pow(2, counter); List <Team> teamsLost = new List <Team>(); foreach (Matchup match in model.Rounds[roundIndex]) { Team matchLoser = match.Entries.Find(me => me.TeamCompeting != match.Winner)?.TeamCompeting; if (matchLoser != null) { teamsLost.Add(matchLoser); } MatchupEntry winnerEntry = match.Entries.Find(m => m.TeamCompeting == match.Winner); ScoreBonusPointsToPreviousMatchups(teamsBonusPointsDict, winnerEntry, bonusScore); } Dictionary <Team, int> teamsPointsInRound = new Dictionary <Team, int>(); foreach (Team t in teamsLost) { teamsPointsInRound.Add(t, teamsBonusPointsDict[t]); } teamsPointsInRound.OrderByDescending(t => t.Value); while (teamsPointsInRound.Count > 0) { Team bestOfLostTeams = teamsPointsInRound.First().Key; output.Add(bestOfLostTeams); teamsPointsInRound.Remove(bestOfLostTeams); } } return(output); }
private static void AlertPersonToNewRound(Person p, string teamName, MatchupEntry matchupEntry) { if (p.EmailAddress.Length == 0) { return; } string to = ""; string subject = ""; StringBuilder body = new StringBuilder(); if (matchupEntry != null) { subject = $"You have matchup with { matchupEntry.TeamCompeting.TeamName }."; body.AppendLine("<h1>You have new matchup!</h1>"); body.AppendLine("<strong>Competitor:"); body.AppendLine(matchupEntry.TeamCompeting.TeamName); body.AppendLine(); body.AppendLine(); body.AppendLine("See you soon!"); body.AppendLine("~Tournament Tracker"); } else { subject = $"You have buy in this round."; body.AppendLine("<h1>You have a buy round this time!</h1>"); body.AppendLine(); body.AppendLine(); body.AppendLine("See you in next round!"); body.AppendLine("~Tournament Tracker"); } to = p.EmailAddress; EmailLogic.SendEmail(to, subject, body.ToString()); }
private static void ScoreBonusPointsToPreviousMatchups(Dictionary <Team, int> teamsBonusPoints, MatchupEntry entry, int score) { int teamScore = 0; bool success = teamsBonusPoints.TryGetValue(entry.TeamCompeting, out teamScore); if (success) { teamsBonusPoints[entry.TeamCompeting] += score; } if (entry.ParentMatchup != null) { foreach (MatchupEntry me in entry.ParentMatchup.Entries) { ScoreBonusPointsToPreviousMatchups(teamsBonusPoints, me, score); } } }