diff --git a/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache b/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache index de3e3dc56b3f067a9917313ddd455227431c3248..14a5c34bada98649481229c8762402687adcd32d 100644 --- a/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache +++ b/obj/Debug/net5.0-windows/TournamentManager.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -6dbd88745d59fa151ec2b15eaaf1ea837c62dd6e +9c56342d8d0782585dfb5a8f145b7388446bfec3 diff --git a/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache b/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache index e254cb66747a75cdef819599c1502b7666335de9..31ceece9a93e9f4390f2c97b676c835609f78207 100644 Binary files a/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache and b/obj/Debug/net5.0-windows/TournamentManager.csproj.GenerateResource.cache differ diff --git a/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache b/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache index 548aebadef402014a6cfe8edc074acecb859d308..8ec9cabf84c61390d17139e208b06a1c2e561174 100644 Binary files a/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache and b/obj/Debug/net5.0-windows/TournamentManager.csprojAssemblyReference.cache differ diff --git a/obj/Debug/net5.0-windows/TournamentManager.dll b/obj/Debug/net5.0-windows/TournamentManager.dll index 78fa5521844df9e3162bd1306b99a113c2fc37ea..6f2e7ea04114681f6c484e26bd9ee857a8935216 100644 Binary files a/obj/Debug/net5.0-windows/TournamentManager.dll and b/obj/Debug/net5.0-windows/TournamentManager.dll differ diff --git a/obj/Debug/net5.0-windows/TournamentManager.pdb b/obj/Debug/net5.0-windows/TournamentManager.pdb index 4821a48d2ebe34c5fa11a61df2481eae986fafe0..4fdd009cb254323a4be9c0d595a2999cc8946f1c 100644 Binary files a/obj/Debug/net5.0-windows/TournamentManager.pdb and b/obj/Debug/net5.0-windows/TournamentManager.pdb differ diff --git a/obj/Debug/net5.0-windows/ref/TournamentManager.dll b/obj/Debug/net5.0-windows/ref/TournamentManager.dll index 83052901726b04117b977803cd68016e9b3efa9a..f000f0cdf3bd0f08d98f3b1120648e6c45d7ecb9 100644 Binary files a/obj/Debug/net5.0-windows/ref/TournamentManager.dll and b/obj/Debug/net5.0-windows/ref/TournamentManager.dll differ diff --git a/obj/TournamentManager.csproj.nuget.dgspec.json b/obj/TournamentManager.csproj.nuget.dgspec.json index 8193c420661e33e564749b3c09b80ebdfb856ae4..e77d8e92becc933da122a5ed2968a364b9596ec6 100644 --- a/obj/TournamentManager.csproj.nuget.dgspec.json +++ b/obj/TournamentManager.csproj.nuget.dgspec.json @@ -22,7 +22,7 @@ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ - "net5.0-windows7.0" + "net5.0-windows" ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, diff --git a/obj/TournamentManager.csproj.nuget.g.props b/obj/TournamentManager.csproj.nuget.g.props index fd44c976c105a4b30c1199cf048f8c2e5fd704c2..4411bfa3095a41919a54414b7f894488d2711854 100644 --- a/obj/TournamentManager.csproj.nuget.g.props +++ b/obj/TournamentManager.csproj.nuget.g.props @@ -7,11 +7,10 @@ <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot> <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\micha\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders> <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle> - <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.9.1</NuGetToolVersion> + <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">5.8.0</NuGetToolVersion> </PropertyGroup> <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' "> - <SourceRoot Include="C:\Users\micha\.nuget\packages\" /> - <SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" /> + <SourceRoot Include="$([MSBuild]::EnsureTrailingSlash($(NuGetPackageFolders)))" /> </ItemGroup> <PropertyGroup> <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects> diff --git a/obj/project.assets.json b/obj/project.assets.json index ee563469de198cd0ab5482ac1bf514e5fd784553..9e36234e71f12b941720b79e28d0b6445267f9b6 100644 --- a/obj/project.assets.json +++ b/obj/project.assets.json @@ -74,7 +74,7 @@ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" ], "originalTargetFrameworks": [ - "net5.0-windows7.0" + "net5.0-windows" ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache index f18c7ee364890660cc14f8786af4d8ab8f2e3e09..b2ac104cc0ff2b934e2161280895de53226766b9 100644 --- a/obj/project.nuget.cache +++ b/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "umcWTwWm5FWSLXrCLi1hAiSKMk34e+8HmDyYsi0ix1KwxZS3E/m1Qv9UliO6bACM5E/u5fBHvrSo9PIkJD0wTA==", + "dgSpecHash": "H71bVF2tvvTKiX1pmF6aHb9K3KX+isneTQJ5VfOpVIgT/zpQhwsdigl9to5pbHKJjGW9eAmRAA+cQgirv1ofvA==", "success": true, "projectFilePath": "C:\\Users\\micha\\School\\RiderProjects\\c-sharp-semestral-project-1\\TournamentManager.csproj", "expectedPackageFiles": [ diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info index c114ea24721db3ce29cd1300f7d0ea1c3c731836..d820c47ca79fafdeda233a59374f8ad43d39bde2 100644 --- a/obj/rider.project.restore.info +++ b/obj/rider.project.restore.info @@ -1 +1 @@ -16225471957581258 \ No newline at end of file +16225768046431808 \ No newline at end of file diff --git a/src/CbItemSelectedEventArgs.cs b/src/CbItemSelectedEventArgs.cs deleted file mode 100644 index 2340e71da20f7bb7fd9204c3c9a9fc3955d805a3..0000000000000000000000000000000000000000 --- a/src/CbItemSelectedEventArgs.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace TournamentManager -{ - public class CbItemSelectedEventArgs - { - public string ItemName { get; } - - public CbItemSelectedEventArgs(string itemName) - { - ItemName = itemName; - } - } -} \ No newline at end of file diff --git a/src/GroupControl.Designer.cs b/src/GroupControl.Designer.cs index 4816a3095ae2febddcf7900191c425148817b8fc..ebe463378dcd8b6213bea7edfedfd752dcab8fbc 100644 --- a/src/GroupControl.Designer.cs +++ b/src/GroupControl.Designer.cs @@ -117,6 +117,7 @@ namespace TournamentManager.src this.btnSubmit.TabIndex = 7; this.btnSubmit.Text = "Submit"; this.btnSubmit.UseVisualStyleBackColor = true; + this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click); // // GroupControl // diff --git a/src/GroupControl.cs b/src/GroupControl.cs index 2a785a302b05257c6565783c5bbe9c9ff3bf4a92..bdfe91e0f16d8b6c41ead9714b3a889e0c77b600 100644 --- a/src/GroupControl.cs +++ b/src/GroupControl.cs @@ -14,17 +14,19 @@ namespace TournamentManager.src { public partial class GroupControl : UserControl { - public delegate void CbItemSelectedDelegate(object sender, CbItemSelectedEventArgs e); + public delegate void CbGroupItemSelectedDelegate(object sender, GroupSelectedEventArgs e); + public delegate void OpponentItemsSelectedDelegate(object sender, OpponentsSelectedEventArgs e); + public delegate void MatchSelectedDelegate(object sender, MatchSelectedEventArgs e); - public event CbItemSelectedDelegate CbGroupItemSelected; - public event CbItemSelectedDelegate CbFirstOpponentSelected; - public event CbItemSelectedDelegate CbSecondOpponentSelected; - protected void OnGroupSelected(CbItemSelectedEventArgs e) => CbGroupItemSelected?.Invoke(this, e); - protected void OnFirstOpponentSelected(CbItemSelectedEventArgs e) => - CbFirstOpponentSelected?.Invoke(this, e); - protected void OnSecondOpponentSelected(CbItemSelectedEventArgs e) => - CbSecondOpponentSelected?.Invoke(this, e); + public event CbGroupItemSelectedDelegate CbGroupItemSelected; + public event OpponentItemsSelectedDelegate OpponentsSelected; + public event MatchSelectedDelegate SubmitClicked; + + protected void OnGroupSelected(GroupSelectedEventArgs e) => CbGroupItemSelected?.Invoke(this, e); + protected void OnOpponentsSelected(OpponentsSelectedEventArgs e) => OpponentsSelected?.Invoke(this, e); + protected void OnSubmitClicked(MatchSelectedEventArgs e) => SubmitClicked?.Invoke(this, e); + public GroupControl() { @@ -51,23 +53,70 @@ namespace TournamentManager.src private void cbGroup_SelectedIndexChanged(object sender, EventArgs e) { - ClearComboBox(ref cbFirstOpponent); - ClearComboBox(ref cbSecondOpponent); - ClearTextBoxes(); - OnGroupSelected(new CbItemSelectedEventArgs(cbGroup.SelectedItem.ToString())); + ClearInputData(); + OnGroupSelected(new GroupSelectedEventArgs(cbGroup.SelectedItem.ToString())); } private void cbFirstOpponent_SelectedIndexChanged(object sender, EventArgs e) { - ClearComboBox(ref cbSecondOpponent); - ClearTextBoxes(); - OnFirstOpponentSelected(new CbItemSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString())); + OnOpponentsSelected(); } private void cbSecondOpponent_SelectedIndexChanged(object sender, EventArgs e) + { + OnOpponentsSelected(); + } + + private void btnSubmit_Click(object sender, EventArgs e) + { + if (cbFirstOpponent.SelectedItem == null || cbSecondOpponent.SelectedItem == null) + { + return; + } + + if (cbGroup.SelectedItem == null || !int.TryParse(cbGroup.SelectedItem.ToString(), out var index)) + { + return; + } + + if (!int.TryParse(tbFirstOpponentScore.Text, out var firstScore) || + !int.TryParse(tbFirstOpponentScore.Text, out var secondScore)) + { + return; + } + + OnSubmitClicked(new MatchSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString(), + cbSecondOpponent.SelectedItem.ToString(), (firstScore, secondScore), index)); + } + + protected void OnOpponentsSelected() { ClearTextBoxes(); - OnSecondOpponentSelected(new CbItemSelectedEventArgs(cbSecondOpponent.SelectedItem.ToString())); + if (cbFirstOpponent.SelectedItem == null || cbSecondOpponent.SelectedItem == null) + { + return; + } + + if (cbGroup.SelectedItem == null || !int.TryParse(cbGroup.SelectedItem.ToString(), out var index)) + { + return; + } + + OnOpponentsSelected(new OpponentsSelectedEventArgs(cbFirstOpponent.SelectedItem.ToString(), + cbSecondOpponent.SelectedItem.ToString(), index)); + } + + public void ClearInputData() + { + ClearTextBoxes(); + ClearComboBox(ref cbFirstOpponent); + ClearComboBox(ref cbSecondOpponent); + } + + public void SetTextBoxes((int first, int second) scores) + { + tbFirstOpponentScore.Text = scores.first.ToString(); + tbSecondOpponentScore.Text = scores.second.ToString(); } #region HelperFunctions diff --git a/src/GroupSelectedEventArgs.cs b/src/GroupSelectedEventArgs.cs new file mode 100644 index 0000000000000000000000000000000000000000..577945f7a6c13611f92773faa008e8c5729467af --- /dev/null +++ b/src/GroupSelectedEventArgs.cs @@ -0,0 +1,14 @@ +using System; + +namespace TournamentManager +{ + public class GroupSelectedEventArgs : EventArgs + { + public string ItemName { get; } + + public GroupSelectedEventArgs(string itemName) + { + ItemName = itemName; + } + } +} \ No newline at end of file diff --git a/src/ManageTournamentForm.cs b/src/ManageTournamentForm.cs index 807adbbe7406d14c5c1d0ffdfec986ec5d5ef653..92e89ff05e941f30cc2f1a7d1cb928aa22b0a5d4 100644 --- a/src/ManageTournamentForm.cs +++ b/src/ManageTournamentForm.cs @@ -20,15 +20,17 @@ namespace TournamentManager InitializeComponent(); enterantCntrl.SubmitParticipantClick += OnSubmitParticipantClicked; _participants.CollectionChanged += HandleParticipantsChanged; - manageParticipantsControl.ParticipantsModified += HandleParticipantRemoved; - calculateControl.CalculateGroups += HandleCalculateGroups; - groupControl.CbGroupItemSelected += HandleGroupItemSelected; + manageParticipantsControl.ParticipantsModified += HandleOnParticipantRemovedClicked; + calculateControl.CalculateGroups += HandleOnCalculateGroupsClicked; + groupControl.CbGroupItemSelected += HandleOnGroupSelected; + groupControl.OpponentsSelected += HandleOnGroupOpponentsSelected; + groupControl.SubmitClicked += HandleOnGroupControlSubmitClicked; foreach (var p in _participants) { manageParticipantsControl.CbAddParticipant($"{p.FirstName} {p.Surname}"); } } - + protected void OnSubmitParticipantClicked(object sender, EventArgs e) { if (_participants.Any(x => @@ -53,7 +55,7 @@ namespace TournamentManager } } - private void HandleParticipantRemoved(object sender, ParticipantsModifiedEventArgs e) + private void HandleOnParticipantRemovedClicked(object sender, ParticipantsModifiedEventArgs e) { if (e.Type != OperationType.Remove) return; @@ -74,7 +76,7 @@ namespace TournamentManager } - private void HandleCalculateGroups(object sender, CalculateGroupsEventArgs e) + private void HandleOnCalculateGroupsClicked(object sender, CalculateGroupsEventArgs e) { var numberOfGroups = (_participants.Count - 1) / e.GroupSize + 1; var groupIndex = 0; @@ -99,14 +101,54 @@ namespace TournamentManager } } - private void HandleGroupItemSelected(object sender, CbItemSelectedEventArgs e) + private void HandleOnGroupSelected(object sender, GroupSelectedEventArgs e) { if (!int.TryParse(e.ItemName.Split(" ")[1], out var result)) { return; } - groupControl.AddToFirstOpponentList(_groups[result - 1].Members - .Select(x => $"{x.FirstName} {x.Surname}").ToArray()); + + var groupMembers = _groups[result - 1].Members + .Select(x => $"{x.FirstName} {x.Surname}").ToArray(); + groupControl.AddToFirstOpponentList(groupMembers); + groupControl.AddToSecondOpponentList(groupMembers); + } + + private void HandleOnGroupOpponentsSelected(object sender, OpponentsSelectedEventArgs e) + { + if (e.FirstOpponent.Equals(e.SecondOpponent)) + { + //TODO: throw some message + return; + } + + var match = _groups[e.GroupIndex].Matches.FirstOrDefault(m => + e.FirstOpponent.Equals($"{m.Opponents.Item1.FirstName} {m.Opponents.Item1.Surname}") && + e.SecondOpponent.Equals($"{m.Opponents.Item2.FirstName} {m.Opponents.Item2.Surname}")); + if (match == null ) + { + return; + } + groupControl.SetTextBoxes(match.Scores); + } + + private void HandleOnGroupControlSubmitClicked(object sender, MatchSelectedEventArgs e) + { + if (e.FirstOpponent.Equals(e.SecondOpponent)) + { + //TODO:ERROR MESSAGE + return; + } + var group = _groups[e.GroupIndex]; + Func<string[], Participant> matchOpponent = x => group.Members + .FirstOrDefault(p => p.FirstName.Equals(x[0]) && p.Surname.Equals(x[1])); + + var firstOpponentName = e.FirstOpponent.Split(" "); + var secondOpponentName = e.SecondOpponent.Split(" "); + group.Matches.Add(new Match(new Tuple<Participant, Participant> + (matchOpponent(firstOpponentName), matchOpponent(secondOpponentName)), + e.Score )); + } } } \ No newline at end of file diff --git a/src/Match.cs b/src/Match.cs index 44f2140715754cf5dfbb6b18cd51d1c54c32e726..a3858392d159555246c13a88316fa087885b1306 100644 --- a/src/Match.cs +++ b/src/Match.cs @@ -4,7 +4,22 @@ namespace TournamentManager { public class Match { - public Tuple<Participant, Participant> Opponent { get; set; } - public (int first, int second) Score { get; set; } + public Tuple<Participant, Participant> Opponents { get; set; } + public (int first, int second) Scores { get; set; } + + public Match(Tuple<Participant, Participant> opponents, (int first, int second) scores) + { + if (opponents.Item1.Equals(opponents.Item2)) + { + throw new Exception(); + } + + Opponents = opponents; + Scores = scores; + + + } } + + } \ No newline at end of file diff --git a/src/MatchSelectedEventArgs.cs b/src/MatchSelectedEventArgs.cs new file mode 100644 index 0000000000000000000000000000000000000000..92554161f7a0f9807d7d6bf263733b40d381db34 --- /dev/null +++ b/src/MatchSelectedEventArgs.cs @@ -0,0 +1,17 @@ +using System; + +namespace TournamentManager +{ + public class MatchSelectedEventArgs : OpponentsSelectedEventArgs + { + public (int first, int second) Score { get; } + + public MatchSelectedEventArgs(string firstOpponentName, string secondOpponentName, + (int first, int second) score, int groupIndex) : + base(firstOpponentName, secondOpponentName, groupIndex) + { + Score = score; + } + + } +} \ No newline at end of file diff --git a/src/OpponentsSelectedEventArgs.cs b/src/OpponentsSelectedEventArgs.cs new file mode 100644 index 0000000000000000000000000000000000000000..0d9beb977bef6830712b1b14565bc0503f20852a --- /dev/null +++ b/src/OpponentsSelectedEventArgs.cs @@ -0,0 +1,20 @@ +using System; + +namespace TournamentManager +{ + public class OpponentsSelectedEventArgs : EventArgs + { + public string FirstOpponent { get; } + public string SecondOpponent { get; } + + public int GroupIndex { get; } + + public OpponentsSelectedEventArgs(string firstOpponentName, string secondOpponentName, int groupIndex) + { + FirstOpponent = firstOpponentName; + SecondOpponent = secondOpponentName; + GroupIndex = groupIndex; + } + + } +} \ No newline at end of file