private async void LoadComboBoxWithOpponentsAsync(ItemsControl control, Team homeTeam) { try { control.Items.Clear(); // get API data var teamGender = _repository.GetTeamGender(); var endpoint = EndpointBuilder.GetMatchesEndpoint(teamGender); var matches = await _api.GetDataAsync <IList <Match> >(endpoint); var matchesPlayed = matches.Where(m => m.HomeMatchTeam.Country == homeTeam.Country); matchesPlayed.ToList().ForEach(m => control.Items.Add(m.AwayMatchTeam)); } catch (Exception ex) when(ex is IOException || ex is JsonReaderException || ex is ArgumentNullException) { MessageBox.Show("Could not retrieve data", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
private async void LoadPanelWithPlayersAsync(dynamic team) { try { _goals.Clear(); _yellowCards.Clear(); flpRankByAttendances.Controls.Clear(); var country = team is Team t ? t.Country : team as string; // show loading animation var busyIndicator = new BusyIndicator(); busyIndicator.Show(flpAllPlayers); // get API data var teamGender = _repository.GetTeamGender(); var endpoint = EndpointBuilder.GetMatchesEndpoint(teamGender); var matches = await _api.GetDataAsync <IList <Match> >(endpoint); // find all players for selected team var match = matches?.FirstOrDefault(m => m.HomeTeamCountry == country); var players = match?.HomeTeamStatistics.StartingEleven.Union(match.HomeTeamStatistics.Substitutes).ToList(); // load all players to FlowLayoutPanel players?.ForEach(p => { var playerUserControl = new PlayerUserControl { PlayerName = p.Name, PlayerNumber = p.ShirtNumber.ToString(), PlayerPosition = p.Position.ToString(), Captain = p.Captain ? Resources.Resources.yes : Resources.Resources.no, Name = $"{p.Name}" }; LoadPictureIfPreviouslySelected(playerUserControl); flpAllPlayers.Controls.Add(playerUserControl); playerUserControl.MouseDown += PlayerUserControl_MouseDown; _goals.Add(p.Name, 0); _yellowCards.Add(p.Name, 0); }); // Get goals and yellow cards per each player matches? .Where(m => m.HomeTeamCountry == match?.HomeTeamCountry) .ToList() .ForEach(m => { m.HomeTeamEvents.ToList().ForEach(te => { switch (te.TypeOfEvent) { case TypeOfEvent.Goal: _goals[te.Player] += 1; break; case TypeOfEvent.YellowCard: _yellowCards[te.Player] += 1; break; case TypeOfEvent.YellowCardSecond: _yellowCards[te.Player] += 1; break; } }); }); // Get all matches for selected country ordered by attendance matches? .Where(m => m.HomeTeamCountry == match?.HomeTeamCountry || m.AwayTeamCountry == match?.HomeTeamCountry) .OrderByDescending(m => m.Attendance) .ToList() .ForEach(m => { flpRankByAttendances.Controls.Add(new MatchUserControl { Location = m.Location, Attendances = m.Attendance.ToString(), HomeTeam = m.HomeTeamCountry, AwayTeam = m.AwayTeamCountry }); }); LoadFavoritePlayers(); busyIndicator.Hide(); } catch (Exception ex) when(ex is IOException || ex is ArgumentNullException || ex is JsonReaderException) { MessageBox.Show(Resources.Resources.dataNotLoaded, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private async void OnUserControlClick(object sender, RoutedEventArgs e) { try { if (!(CbHomeTeam.SelectionBoxItem is Team homeTeam) || !(CbAwayTeam.SelectionBoxItem is MatchTeam awayTeam)) { return; } // get API data var teamGender = _repository.GetTeamGender(); var endpoint = EndpointBuilder.GetMatchesEndpoint(teamGender); var matches = await _api.GetDataAsync <IList <Match> >(endpoint); // get match data with selected teams var selectedMatch = matches.FirstOrDefault(m => m.HomeTeamCountry == homeTeam.Country && m.AwayTeamCountry == awayTeam.Country); // get all data needed for selected player var userControlButton = sender as Button; var userControlPanel = userControlButton?.Content as StackPanel; var playerName = (userControlPanel?.Children[0] as Label)?.Content.ToString(); var playerInformation = selectedMatch?.HomeTeamStatistics.StartingEleven .Union(selectedMatch.AwayTeamStatistics.StartingEleven) .FirstOrDefault(p => p.Name == playerName); int goalsScored = 0, yellowCards = 0; selectedMatch?.HomeTeamEvents .Union(selectedMatch?.AwayTeamEvents) .Where(ev => ev.Player == playerName) .ToList().ForEach(ev => { switch (ev.TypeOfEvent) { case TypeOfEvent.Goal: goalsScored++; break; case TypeOfEvent.GoalOwn: goalsScored++; break; case TypeOfEvent.YellowCard: yellowCards++; break; case TypeOfEvent.YellowCardSecond: yellowCards++; break; } }); new PlayerInformation( playerName, playerInformation?.ShirtNumber.ToString(), playerInformation?.Position.ToString(), playerInformation?.Captain.ToString().FirstCharToUpper(), goalsScored.ToString(), yellowCards.ToString()).ShowDialog(); } catch { MessageBox.Show("Could not retrieve data", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
private async void LoadPanelWithPlayersAsync(dynamic team, bool awayTeam) { try { LoadingSpinner.Visibility = Visibility.Visible; LoadingSpinner.Spin = true; Panel panel; var country = awayTeam ? (team as MatchTeam)?.Country : team is Team t ? t.Country : team as string; // get API data var teamGender = _repository.GetTeamGender(); var endpoint = EndpointBuilder.GetMatchesEndpoint(teamGender); var matches = await _api.GetDataAsync <IList <Match> >(endpoint); // find all players for selected team var match = matches?.FirstOrDefault(m => m.HomeTeamCountry == country); var players = match?.HomeTeamStatistics.StartingEleven.ToList(); // load all players to FlowLayoutPanel players?.ForEach(p => { var playerUserControl = new PlayerUserControl(p.Name, (int)p.ShirtNumber) { MaxHeight = 140, MaxWidth = 120, BtnUserControl = { ClickMode = ClickMode.Press } }; playerUserControl.BtnUserControl.Click += OnUserControlClick; switch (p.Position) { case Position.Defender: panel = awayTeam ? PnlAwayTeamDefender : PnlHomeTeamDefender; panel.Children.Add(playerUserControl); break; case Position.Forward: panel = awayTeam ? PnlAwayTeamForward : PnlHomeTeamForward; panel.Children.Add(playerUserControl); break; case Position.Goalie: panel = awayTeam ? PnlAwayTeamGoalie : PnlHomeTeamGoalie; panel.Children.Add(playerUserControl); break; case Position.Midfield: panel = awayTeam ? PnlAwayTeamMidfield : PnlHomeTeamMidfield; panel.Children.Add(playerUserControl); break; default: return; } LoadingSpinner.Visibility = Visibility.Hidden; LoadingSpinner.Spin = false; }); } catch (Exception ex) when(ex is IOException || ex is JsonReaderException || ex is ArgumentNullException) { MessageBox.Show("Could not retrieve data", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }