Никита 3 lat temu
rodzic
commit
5e82c5f327

+ 2 - 2
Курсовой проект 3.1/TeamProfileWindow.xaml

@@ -213,7 +213,7 @@
                         </Grid.RowDefinitions>
 
 
-                        <TextBlock x:Name="WinCountTB" Grid.Row="0" Grid.Column="0" Text=" побед" VerticalAlignment="Bottom" Margin="3 0 0 0"></TextBlock>
+                        <TextBlock x:Name="WinCountTB" Grid.Row="0" Grid.Column="0" Text="0 побед" VerticalAlignment="Bottom" Margin="3 0 0 0"></TextBlock>
                         <Rectangle Grid.Row="1" Grid.Column="0" Fill="#33CC00"></Rectangle>
                         <TextBlock x:Name="WinPercentTB" Grid.Row="2" Grid.Column="0" Text="0%" VerticalAlignment="Top" Margin="4 0 0 0"></TextBlock>
 
@@ -387,7 +387,7 @@
                             </DataGrid.Columns>
                         </DataGrid>
 
-                        <Button Grid.Row="1" Content="Показать ещё"></Button>
+                        <Button x:Name="MoreAchievementBtn" Grid.Row="1" Content="Показать ещё" Click="MoreAchievementBtn_Click"></Button>
                     </Grid>
                 </GroupBox>
                 <!-- AchievementListGroupBox-->

+ 130 - 7
Курсовой проект 3.1/TeamProfileWindow.xaml.cs

@@ -16,6 +16,10 @@ namespace Курсовой_проект_3._1
 
         List<PlayerInTeamList> teamList = new List<PlayerInTeamList>();
 
+        List<Achievement> achievementList = new List<Achievement>();
+        List<string> tournamentIds = new List<string>();
+        int offsetAchievment = 0;
+
         public TeamProfileWindow(string teamId)
         {
             InitializeComponent();
@@ -65,8 +69,8 @@ namespace Курсовой_проект_3._1
                 LoseCountTB.Text = loseCount.ToString() + " поражений";
 
                 WinPercentTB.Text = Math.Round(Convert.ToDouble(winCount) * 100.0 / Convert.ToDouble(gamesCount), 2).ToString() + "%";
-                DrawPercentTB.Text = Math.Round(Convert.ToDouble(drawCount) * 100 / Convert.ToDouble(gamesCount), 2).ToString() + "%";
-                LosePercentTB.Text = Math.Round(Convert.ToDouble(loseCount) * 100 / Convert.ToDouble(gamesCount), 2).ToString() + "%";
+                DrawPercentTB.Text = Math.Round(Convert.ToDouble(drawCount) * 100.0 / Convert.ToDouble(gamesCount), 2).ToString() + "%";
+                LosePercentTB.Text = Math.Round(Convert.ToDouble(loseCount) * 100.0 / Convert.ToDouble(gamesCount), 2).ToString() + "%";
             }
 
             // Подгрузка состава -- происходит в NowStatusRB_Checked
@@ -75,11 +79,25 @@ namespace Курсовой_проект_3._1
             // Подгрузка истории матчей
 
             // Подгрузка достижений
-            List<Achievement> achievementList = new List<Achievement>(3)
+            tournamentIds = GetTournamentIds(this.teamId);
+            int offsetInc = 0;
+            if (tournamentIds.Count > 5)
+            {
+                for (int i = 0; i < 5; i++)
+                {
+                    achievementList.Add(GetAchievement(this.teamId, tournamentIds[i]));
+                    offsetInc++;
+                }
+            }
+            else
             {
-                new Achievement { Place="1", Tournament="The International 10 (2021)", Venue="Бухарест, Румыния", DateOfVenue="17.10.2021", Prize="18 000 000$", PrizeFond="40 000 000$"},
-                new Achievement { Place="7", Tournament="ESL One Summer 2021", Venue="Онлайн", DateOfVenue="20.07.2021", Prize="30 000$", PrizeFond="1 000 000$"},
-            };
+                for (int i = 0; i < tournamentIds.Count; i++)
+                {
+                    achievementList.Add(GetAchievement(this.teamId, tournamentIds[i]));
+                    offsetInc++;
+                }
+            }
+            offsetAchievment += offsetInc;
             AchievementDataGrid.ItemsSource = achievementList;
         }
 
@@ -113,6 +131,76 @@ namespace Курсовой_проект_3._1
             TeamLB.ItemsSource = teamList;
         }
 
+        private void MoreAchievementBtn_Click(object sender, RoutedEventArgs e)
+        {
+            if (tournamentIds.Count <= achievementList.Count)
+            {
+                MessageBox.Show("Больше достижений нет!");
+                return;
+            }
+
+            int offsetInc = 0;
+            if (tournamentIds.Count - achievementList.Count > 5)
+            {
+                for (int i = offsetAchievment; i < offsetAchievment + 5; i++)
+                {
+                    achievementList.Add(GetAchievement(this.teamId, tournamentIds[i]));
+                    offsetInc++;
+                }
+            }
+            else
+            {
+                for (int i = offsetAchievment; i < tournamentIds.Count - achievementList.Count + offsetAchievment; i++)
+                {
+                    achievementList.Add(GetAchievement(this.teamId, tournamentIds[i]));
+                    offsetInc++;
+                }
+            }
+            AchievementDataGrid.ItemsSource = new List<Achievement>();
+            AchievementDataGrid.ItemsSource = achievementList;
+            offsetAchievment += offsetInc;
+        }
+
+        // Возвращает список турниров, в котором участвовала команда
+        private List<string> GetTournamentIds(string teamId)
+        {
+            List<string> tournamentIds = new List<string>();
+
+            DataTable dt = query.SendSelectQuery("SELECT TournamentId FROM TournamentPlaces WHERE TeamId = " + teamId);
+            foreach (DataRow dr in dt.Rows)
+            {
+                tournamentIds.Add(dr[0].ToString());
+            }
+
+            return tournamentIds;
+        }
+
+        // Возвращает информацию (DataTable) о турнире
+        private DataTable GetTournamentInfo(string tournamentId)
+        {
+            return query.SendSelectQuery("SELECT * FROM Tournaments WHERE TournamentId = " + tournamentId);
+        }
+
+        // Возвращает место команды в турнире
+        private string GetPlaceInTournament(string tournamentId, string teamId)
+        {
+           
+            DataTable dt = query.SendSelectQuery("SELECT Place FROM TournamentPlaces WHERE TournamentId = " + tournamentId + " AND TeamId = " + teamId);
+
+            if (dt.Rows.Count > 0)
+            {
+                if (dt.Rows[0].IsNull(0))
+                {
+                    return null;
+                }
+
+                return dt.Rows[0][0].ToString();
+            }
+
+            return null;
+        }
+
+
         // Возвращает список всех игроков команды в настоящий момент
         private List<string> GetPlayerIdsInTeamPresent(string teamId)
         {
@@ -364,8 +452,31 @@ namespace Курсовой_проект_3._1
 
             return player;
         }
+
+        // Возвращает объект класса Achievment
+        private Achievement GetAchievement(string teamId, string tournamentId)
+        {
+            Achievement achievement = new Achievement();
+            DataTable dt = GetTournamentInfo(tournamentId);
+
+            string place = GetPlaceInTournament(tournamentId, teamId);
+            if (place != "")
+            {
+                achievement.Place = GetPlaceInTournament(tournamentId, teamId);
+                achievement.Tournament = dt.Rows[0][1].ToString();
+                achievement.Venue = dt.Rows[0][4].ToString() + ",";
+                achievement.DateOfVenue = dt.Rows[0][2].ToString() + " - " + dt.Rows[0][3].ToString();
+                achievement.Place = place;
+                achievement.PrizeFond = dt.Rows[0][5].ToString();
+
+                return achievement;
+            }
+            else
+            {
+                return null;
+            }
+        }
     }
-}
 
     // Класс, описывающий объект/элемент ListBox - TeamListGroupBox
     public class PlayerInTeamList
@@ -388,3 +499,15 @@ namespace Курсовой_проект_3._1
         public string Prize { get; set; }
         public string PrizeFond { get; set; }
     }
+
+    // Класс, описывающий объект/элемент DataGrid - MatchesGrid
+    public class Match
+    {
+        public string FrstTeamName { get; set; }
+        public string ScndTeamName { get; set; }
+        public string Scores { get; set; }
+        public string GameDate { get; set; }
+        public string Tournament { get; set; }
+        public string WinTeam { get; set; }
+    }
+}