private void GetTournamentLadderChallenge() { ProgressReporterProvider.Current.ReportProgress("Enter the tournament name", ReporterImportance.High, ReporterAudience.Admin); var tournamentString = Console.ReadLine(); ProgressReporterProvider.Current.ReportProgress("Enter the tournament year", ReporterImportance.High, ReporterAudience.Admin); var tournamentYearString = Console.ReadLine(); var viewModel = new CalculateTournamentLadderChallengeViewModel { Tournament = tournamentString, StartDate = new DateTime(int.Parse(tournamentYearString), 06, 29), AllowRecalculation = false }; var challengeLadders = this.tennisService.CalculateTournamentLadderChallenge(viewModel); int round = 0; int playerCount = 0; int maxLengthWinner = 0; int maxLengthLoser = 0; foreach (var challengeLadder in challengeLadders) { if (round != challengeLadder.RoundNumber) { maxLengthWinner = 5 + challengeLadders.Max(x => x.ExpectedWinner.Length); maxLengthLoser = 5 + challengeLadders.Max(x => x.ExpectedLoser.Length); round++; if (!(round == 1 && playerCount == 0)) { Console.ReadLine(); } ProgressReporterProvider.Current.ReportProgress(string.Format("Round {0}", challengeLadder.RoundNumber), ReporterImportance.High, ReporterAudience.Admin); } else if (playerCount % 16 == 0) { ProgressReporterProvider.Current.ReportProgress(new String(' ', 10), ReporterImportance.High, ReporterAudience.Admin); Console.ReadLine(); } ProgressReporterProvider.Current.ReportProgress( string.Format("{0}bt.\t{1}with probability {2}", challengeLadder.ExpectedWinner.PadRight(maxLengthWinner, ' '), challengeLadder.ExpectedLoser.PadRight(maxLengthLoser, ' '), challengeLadder.Probability.ToString("###.00%").PadLeft(10)), ReporterImportance.Medium, ReporterAudience.Admin); playerCount++; } Console.ReadLine(); }
public IEnumerable <ShowTournamentLadderChallengeViewModel> CalculateTournamentLadderChallenge(CalculateTournamentLadderChallengeViewModel viewModel) { ProgressReporterProvider.Current.ReportProgress(string.Format("Calculating tournament ladder challenge for {0}-{1}", viewModel.Tournament, viewModel.StartDate.ToShortDateString()), ReporterImportance.High, ReporterAudience.Admin); var ladders = this.tennisFixtureService.GetTournamentLadder(viewModel.StartDate, viewModel.Tournament); if (ladders.Count() == 0) { return(Enumerable.Empty <ShowTournamentLadderChallengeViewModel>()); } var tournament = this.tennisFixtureService.GetTournament(viewModel.Tournament); var seed = new List <ShowTournamentLadderChallengeViewModel>(); foreach (var ladder in ladders) { var openingRound = new ShowTournamentLadderChallengeViewModel { ExpectedWinner = string.Format("{0}, {1}", ladder.PlayerSurname, ladder.PlayerFirstName), ExpectedWinnerFirstName = ladder.PlayerFirstName, ExpectedWinnerSurname = ladder.PlayerSurname, RoundNumber = 0 }; seed.Add(openingRound); } return (CalculateRoundTournamentLadderChallenge(seed, tournament.Slug, viewModel.StartDate.AddDays(3).Year, 1) .Where(x => x.RoundNumber > 0)); }
private void GetTournamentLadderChallenge() { ProgressReporterProvider.Current.ReportProgress("Enter the tournament name", ReporterImportance.High, ReporterAudience.Admin); var tournamentString = Console.ReadLine(); ProgressReporterProvider.Current.ReportProgress("Enter the tournament year", ReporterImportance.High, ReporterAudience.Admin); var tournamentYearString = Console.ReadLine(); var viewModel = new CalculateTournamentLadderChallengeViewModel { Tournament = tournamentString, StartDate = new DateTime(int.Parse(tournamentYearString), 06, 29), AllowRecalculation = false }; var challengeLadders = this.tennisService.CalculateTournamentLadderChallenge(viewModel); int round = 0; int playerCount = 0; int maxLengthWinner = 0; int maxLengthLoser = 0; foreach (var challengeLadder in challengeLadders) { if (round != challengeLadder.RoundNumber) { maxLengthWinner = 5 + challengeLadders.Max(x => x.ExpectedWinner.Length); maxLengthLoser = 5 + challengeLadders.Max(x => x.ExpectedLoser.Length); round++; if (!(round == 1 && playerCount == 0)) Console.ReadLine(); ProgressReporterProvider.Current.ReportProgress(string.Format("Round {0}", challengeLadder.RoundNumber), ReporterImportance.High, ReporterAudience.Admin); } else if (playerCount % 16 == 0) { ProgressReporterProvider.Current.ReportProgress(new String(' ', 10), ReporterImportance.High, ReporterAudience.Admin); Console.ReadLine(); } ProgressReporterProvider.Current.ReportProgress( string.Format("{0}bt.\t{1}with probability {2}", challengeLadder.ExpectedWinner.PadRight(maxLengthWinner, ' '), challengeLadder.ExpectedLoser.PadRight(maxLengthLoser, ' '), challengeLadder.Probability.ToString("###.00%").PadLeft(10)), ReporterImportance.Medium, ReporterAudience.Admin); playerCount++; } Console.ReadLine(); }
public IEnumerable<ShowTournamentLadderChallengeViewModel> CalculateTournamentLadderChallenge(CalculateTournamentLadderChallengeViewModel viewModel) { ProgressReporterProvider.Current.ReportProgress(string.Format("Calculating tournament ladder challenge for {0}-{1}", viewModel.Tournament, viewModel.StartDate.ToShortDateString()), ReporterImportance.High, ReporterAudience.Admin); var ladders = this.tennisFixtureService.GetTournamentLadder(viewModel.StartDate, viewModel.Tournament); if (ladders.Count() == 0) return Enumerable.Empty<ShowTournamentLadderChallengeViewModel>(); var tournament = this.tennisFixtureService.GetTournament(viewModel.Tournament); var seed = new List<ShowTournamentLadderChallengeViewModel>(); foreach (var ladder in ladders) { var openingRound = new ShowTournamentLadderChallengeViewModel { ExpectedWinner = string.Format("{0}, {1}", ladder.PlayerSurname, ladder.PlayerFirstName), ExpectedWinnerFirstName = ladder.PlayerFirstName, ExpectedWinnerSurname = ladder.PlayerSurname, RoundNumber = 0 }; seed.Add(openingRound); } return CalculateRoundTournamentLadderChallenge(seed, tournament.Slug, viewModel.StartDate.AddDays(3).Year, 1) .Where(x => x.RoundNumber > 0); }