From 12be5e3890b443bbc1a4b1db66a0de3f828f75e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Wed, 8 Apr 2020 00:00:49 +0200 Subject: [PATCH] Tournament form is ready but matchup information --- TrackerLibrary/DataAccess/IDataConnection.cs | 2 +- TrackerLibrary/DataAccess/SqlConnector.cs | 5 +- TrackerLibrary/DataAccess/TextConnector.cs | 17 ++- .../DataAccess/TextConnectorProcessor.cs | 139 ++++++++++++++++-- TrackerLibrary/Models/MatchupModel.cs | 4 + TrackerUI/CreateTournamentForm.cs | 2 +- 6 files changed, 153 insertions(+), 16 deletions(-) diff --git a/TrackerLibrary/DataAccess/IDataConnection.cs b/TrackerLibrary/DataAccess/IDataConnection.cs index 8b2420a..6cb9a99 100644 --- a/TrackerLibrary/DataAccess/IDataConnection.cs +++ b/TrackerLibrary/DataAccess/IDataConnection.cs @@ -10,7 +10,7 @@ namespace TrackerLibrary.DataAccess PrizeModel CreatePrize(PrizeModel model); PersonModel CreatePerson(PersonModel model); TeamModel CreateTeam(TeamModel model); - TournamentModel CreateTournament(TournamentModel model); + void CreateTournament(TournamentModel model); List GetTeam_All(); List GetPerson_All(); } diff --git a/TrackerLibrary/DataAccess/SqlConnector.cs b/TrackerLibrary/DataAccess/SqlConnector.cs index 9e2f9ce..b80eeb1 100644 --- a/TrackerLibrary/DataAccess/SqlConnector.cs +++ b/TrackerLibrary/DataAccess/SqlConnector.cs @@ -89,7 +89,7 @@ namespace TrackerLibrary.DataAccess } - public TournamentModel CreateTournament(TournamentModel model) + public void CreateTournament(TournamentModel model) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { @@ -99,8 +99,7 @@ namespace TrackerLibrary.DataAccess p = SaveTournamentEntries(model, connection, p); - return model; - } + } } private static DynamicParameters SaveTournament(TournamentModel model, IDbConnection connection) diff --git a/TrackerLibrary/DataAccess/TextConnector.cs b/TrackerLibrary/DataAccess/TextConnector.cs index 7269878..f0026a6 100644 --- a/TrackerLibrary/DataAccess/TextConnector.cs +++ b/TrackerLibrary/DataAccess/TextConnector.cs @@ -100,9 +100,22 @@ namespace TrackerLibrary.DataAccess { return TeamFile.FullFilePath().LoadFile().ConvertToTeamModels(PeopleFile); } - public TournamentModel CreateTournament(TournamentModel model) + public void CreateTournament(TournamentModel model) { - List tournaments = TournamentFile.FullFilePath().LoadFile().ConvertToTournamentModels(); + List tournaments = TournamentFile + .FullFilePath() + .LoadFile() + .ConvertToTournamentModels(TeamFile, PeopleFile, PrizesFile); + + int currentId = 1; + if (tournaments.Count > 0) + { + currentId = tournaments.OrderByDescending(x => x.Id).First().Id + 1; + } + model.Id = currentId; + tournaments.Add(model); + + tournaments.SaveToTournamentFile(TournamentFile); } } diff --git a/TrackerLibrary/DataAccess/TextConnectorProcessor.cs b/TrackerLibrary/DataAccess/TextConnectorProcessor.cs index 9554809..8331fa6 100644 --- a/TrackerLibrary/DataAccess/TextConnectorProcessor.cs +++ b/TrackerLibrary/DataAccess/TextConnectorProcessor.cs @@ -47,7 +47,7 @@ namespace TrackerLibrary.DataAccess.TextHelpers public static List ConvertToPersonModels(this List lines) { List output = new List(); - foreach(string line in lines) + foreach (string line in lines) { string[] cols = line.Split(','); PersonModel p = new PersonModel(); @@ -78,7 +78,7 @@ namespace TrackerLibrary.DataAccess.TextHelpers string[] personIds = cols[2].Split('|'); - foreach(string id in personIds) + foreach (string id in personIds) { t.TeamMembers.Add(people.Where(x => x.Id == int.Parse(id)).First()); } @@ -90,9 +90,48 @@ namespace TrackerLibrary.DataAccess.TextHelpers return output; } - public static List ConvertToTournamentModels(this List lines) + public static List ConvertToTournamentModels( + this List lines, + string teamFileName, + string peopleFileName, + string prizesFileName + ) { + // id = 0 + // TournamentName = 1 + // EntryFee = 2 + // EnteredTeams = 3 + // Prizes = 4 + // Rounds = 5 + // id, TournamentName, EntryFee, (id|id|id - entered teams), (id|id|id - entered prizes), (rounds - id^id^id|id^id^id|id^id^id) + List output = new List(); + List teams = teamFileName.FullFilePath().LoadFile().ConvertToTeamModels(peopleFileName); + List prizes = prizesFileName.FullFilePath().LoadFile().ConvertToPrizeModels(); + foreach (string line in lines) + { + string[] cols = line.Split(','); + TournamentModel tm = new TournamentModel(); + tm.Id = int.Parse(cols[0]); + tm.TournamentName = cols[1]; + tm.EntryFee = decimal.Parse(cols[2]); + string[] teamIds = cols[3].Split('|'); + foreach (string teamId in teamIds) + { + tm.EnteredTeams.Add(teams.Where(x => x.Id == int.Parse(teamId)).First()); + } + string[] prizeIds = cols[4].Split('|'); + foreach (string prizeId in prizeIds) + { + tm.Prizes.Add(prizes.Where(x => x.Id == int.Parse(prizeId)).First()); + } + + // Capture rounds information + + output.Add(tm); + + } + return output; } public static void SaveToPrizeFile(this List models, string fileName) @@ -106,10 +145,10 @@ namespace TrackerLibrary.DataAccess.TextHelpers File.WriteAllLines(fileName.FullFilePath(), lines); } - public static void SaveToPeopleFile(this List models, string fileName) + public static void SaveToPeopleFile(this List models, string fileName) { List lines = new List(); - foreach(PersonModel p in models) + foreach (PersonModel p in models) { lines.Add($"{p.Id},{p.FirstName},{p.LastName},{p.EmailAddress},{p.CellPhoneNumber}"); } @@ -121,7 +160,7 @@ namespace TrackerLibrary.DataAccess.TextHelpers public static void SaveToTeamFile(this List models, string fileName) { List lines = new List(); - foreach(TeamModel t in models) + foreach (TeamModel t in models) { lines.Add($"{t.Id},{t.TeamName},{ConvertPeopleListToString(t.TeamMembers)}"); } @@ -129,14 +168,96 @@ namespace TrackerLibrary.DataAccess.TextHelpers File.WriteAllLines(fileName.FullFilePath(), lines); } - private static string ConvertPeopleListToString(List people) + public static void SaveToTournamentFile(this List models, string fileName) { + + List lines = new List(); + foreach (TournamentModel tm in models) + { + lines.Add($@"{tm.Id}, + {tm.TournamentName}, + {tm.EntryFee}, + {ConvertTeamListToString(tm.EnteredTeams)}, + {ConvertPrizeListToString(tm.Prizes)}, + {ConvertRoundListToString(tm.Rounds)}"); + } + + File.WriteAllLines(fileName.FullFilePath(), lines); + } + + private static string ConvertRoundListToString(List> rounds) + { + // (rounds - id^id^id|id^id^id|id^id^id) string output = ""; - if (people.Count==0) + if (rounds.Count == 0) { return ""; } - foreach(PersonModel p in people) + foreach (List r in rounds) + { + output += $"{ConvertMatchupListToString(r)}|"; + } + + output = output.Substring(0, output.Length - 1); + return output; + } + + private static string ConvertMatchupListToString(List matchups) + { + string output = ""; + if (matchups.Count == 0) + { + return ""; + } + foreach (MatchupModel p in matchups) + { + output += $"{p.Id}^"; + } + + output = output.Substring(0, output.Length - 1); + return output; + } + + private static string ConvertPrizeListToString(List prizes) + { + string output = ""; + if (prizes.Count == 0) + { + return ""; + } + foreach (PrizeModel p in prizes) + { + output += $"{p.Id}|"; + } + + output = output.Substring(0, output.Length - 1); + return output; + } + + private static string ConvertTeamListToString(List teams) + { + string output = ""; + if (teams.Count == 0) + { + return ""; + } + foreach (TeamModel t in teams) + { + output += $"{t.Id}|"; + } + + output = output.Substring(0, output.Length - 1); + return output; + } + + private static string ConvertPeopleListToString(List people) + { + string output = ""; + if (people.Count == 0) + { + return ""; + } + foreach (PersonModel p in people) { output += $"{p.Id}|"; } diff --git a/TrackerLibrary/Models/MatchupModel.cs b/TrackerLibrary/Models/MatchupModel.cs index fd0491d..e051215 100644 --- a/TrackerLibrary/Models/MatchupModel.cs +++ b/TrackerLibrary/Models/MatchupModel.cs @@ -9,6 +9,10 @@ namespace TrackerLibrary.Models /// public class MatchupModel { + /// + /// The unique identifier for the matchup + /// + public int Id { get; set; } /// /// The set of teams that were involved in this match. /// diff --git a/TrackerUI/CreateTournamentForm.cs b/TrackerUI/CreateTournamentForm.cs index cba1296..0f7768d 100644 --- a/TrackerUI/CreateTournamentForm.cs +++ b/TrackerUI/CreateTournamentForm.cs @@ -124,7 +124,7 @@ namespace TrackerUI tm.Prizes = selectedPrizes; tm.EnteredTeams = selectedTeams; - // Wireup our matchups + // TODO Wireup our matchups // Finally create the tournament entry // Create all of the prizes entries