From 7f4bf45850c121c89bea8e8f0145dafc9128d16c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Thu, 16 Apr 2020 00:12:42 +0200 Subject: [PATCH] A lot of refactoring and both saving types work --- TrackerLibrary/DataAccess/SqlConnector.cs | 3 + TrackerLibrary/DataAccess/TextConnector.cs | 2 + TrackerLibrary/TournamentLogic.cs | 118 ++++++++++++++++++++- TrackerUI/App.config | 1 + TrackerUI/CreateTournamentForm.cs | 5 + TrackerUI/TournamentViewerForm.cs | 36 +------ 6 files changed, 128 insertions(+), 37 deletions(-) diff --git a/TrackerLibrary/DataAccess/SqlConnector.cs b/TrackerLibrary/DataAccess/SqlConnector.cs index 39b94b2..17f4a18 100644 --- a/TrackerLibrary/DataAccess/SqlConnector.cs +++ b/TrackerLibrary/DataAccess/SqlConnector.cs @@ -96,6 +96,8 @@ namespace TrackerLibrary.DataAccess SaveTournamentEntries(model, connection); SaveTournamentRounds(model, connection); + + TournamentLogic.UpdateTournamentResults(model); } } @@ -233,6 +235,7 @@ namespace TrackerLibrary.DataAccess foreach (TournamentModel t in output) { // Populate prizes + p = new DynamicParameters(); p.Add("@TournamentId", t.Id); t.Prizes = connection.Query("dbo.spPrizes_GetByTournament", p, commandType: CommandType.StoredProcedure).ToList(); // Populate Teams diff --git a/TrackerLibrary/DataAccess/TextConnector.cs b/TrackerLibrary/DataAccess/TextConnector.cs index fe0251f..2bd29a8 100644 --- a/TrackerLibrary/DataAccess/TextConnector.cs +++ b/TrackerLibrary/DataAccess/TextConnector.cs @@ -110,6 +110,8 @@ namespace TrackerLibrary.DataAccess tournaments.Add(model); tournaments.SaveToTournamentFile(); + + TournamentLogic.UpdateTournamentResults(model); } public List GetTournament_All() diff --git a/TrackerLibrary/TournamentLogic.cs b/TrackerLibrary/TournamentLogic.cs index 73c85fa..c1d1461 100644 --- a/TrackerLibrary/TournamentLogic.cs +++ b/TrackerLibrary/TournamentLogic.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -21,6 +22,119 @@ namespace TrackerLibrary int byes = NumberOfByes(rounds, randomizedTeams.Count); model.Rounds.Add(CreateFirstRound(byes, randomizedTeams)); CreateOtherRounds(model, rounds); + //UpdateTournamentResults(model); + } + + public static void UpdateTournamentResults(TournamentModel model) + { + List toScore = new List(); + + foreach (List round in model.Rounds) + { + foreach (MatchupModel rm in round) + { + if (rm.Winner == null && (rm.Entries.Any(x => x.Score != 0) || rm.Entries.Count == 1)) + { + toScore.Add(rm); + } + } + } + + MarkWinnersInMatchups(toScore); + + AdvanceWinners(toScore, model); + + toScore.ForEach(x => GlobalConfig.Connection.UpdateMatchup(x)); + + } + + private static void AdvanceWinners(List models, TournamentModel tournament) + { + foreach (MatchupModel m in models) + { + foreach (List round in tournament.Rounds) + { + foreach (MatchupModel rm in round) + { + foreach (MatchupEntryModel me in rm.Entries) + { + if (me.ParentMatchup != null) + { + if (me.ParentMatchup.Id == m.Id) + { + me.TeamCompeting = m.Winner; + GlobalConfig.Connection.UpdateMatchup(rm); + } + + } + } + } + } + } + } + + private static void MarkWinnersInMatchups(List models) + { + // greaterWins + string greaterWins = ConfigurationManager.AppSettings["greaterWins"]; + + foreach (MatchupModel m in models) + { + if (m.Entries.Count == 1) + { + m.Winner = m.Entries[0].TeamCompeting; + continue; + } + + // "0" means false or low scare wins + if (greaterWins == "0") + { + if (m.Entries[0].Score < m.Entries[1].Score) + { + m.Winner = m.Entries[0].TeamCompeting; + } + else if (m.Entries[1].Score < m.Entries[0].Score) + { + m.Winner = m.Entries[1].TeamCompeting; + } + else + { + throw new Exception("We do not allow ties in this application"); + } + } + else + { + // 1 mean true, or high score wins + if (m.Entries[0].Score > m.Entries[1].Score) + { + m.Winner = m.Entries[0].TeamCompeting; + } + else if (m.Entries[1].Score > m.Entries[0].Score) + { + m.Winner = m.Entries[1].TeamCompeting; + } + else + { + throw new Exception("We do not allow ties in this application"); + } + } + } + + //if (teamOneScore > teamTwoScore) + //{ + // // Team one winns + // m.Winner = m.Entries[0].TeamCompeting; + //} + //else + // if (teamTwoScore > teamOneScore) + //{ + // // Team one winns + // m.Winner = m.Entries[1].TeamCompeting; + //} + //else + //{ + // MessageBox.Show("I dont handle tie games."); + //} } private static void CreateOtherRounds(TournamentModel model, int rounds) @@ -55,10 +169,10 @@ namespace TrackerLibrary List output = new List(); MatchupModel curr = new MatchupModel(); - foreach (TeamModel team in teams) + foreach (TeamModel team in teams) { curr.Entries.Add(new MatchupEntryModel { TeamCompeting = team }); - if(byes>0 || curr.Entries.Count > 1) + if (byes > 0 || curr.Entries.Count > 1) { curr.MatchupRound = 1; output.Add(curr); diff --git a/TrackerUI/App.config b/TrackerUI/App.config index 69475bb..df0fb63 100644 --- a/TrackerUI/App.config +++ b/TrackerUI/App.config @@ -3,6 +3,7 @@ + diff --git a/TrackerUI/CreateTournamentForm.cs b/TrackerUI/CreateTournamentForm.cs index 541aa5a..c4d1741 100644 --- a/TrackerUI/CreateTournamentForm.cs +++ b/TrackerUI/CreateTournamentForm.cs @@ -133,6 +133,11 @@ namespace TrackerUI // Create all of team entries GlobalConfig.Connection.CreateTournament(tm); + + + TournamentViewerForm frm = new TournamentViewerForm(tm); + frm.Show(); + this.Close(); } } } diff --git a/TrackerUI/TournamentViewerForm.cs b/TrackerUI/TournamentViewerForm.cs index 438eb42..2b3aa9a 100644 --- a/TrackerUI/TournamentViewerForm.cs +++ b/TrackerUI/TournamentViewerForm.cs @@ -199,44 +199,10 @@ namespace TrackerUI } } - if (teamOneScore > teamTwoScore) - { - // Team one winns - m.Winner = m.Entries[0].TeamCompeting; - } - else - if (teamTwoScore > teamOneScore) - { - // Team one winns - m.Winner = m.Entries[1].TeamCompeting; - } - else - { - MessageBox.Show("I dont handle tie games."); - } - - foreach (List round in tournament.Rounds) - { - foreach (MatchupModel rm in round) - { - foreach (MatchupEntryModel me in rm.Entries) - { - if (me.ParentMatchup != null) - { - if (me.ParentMatchup.Id == m.Id) - { - me.TeamCompeting = m.Winner; - GlobalConfig.Connection.UpdateMatchup(rm); - } - - } - } - } - } + TournamentLogic.UpdateTournamentResults(tournament); LoadMatchups((int)roundDropDown.SelectedItem); - GlobalConfig.Connection.UpdateMatchup(m); } } }