コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }