예제 #1
0
        public async Task <ActionResult> Post([FromBody] IdsVM ids)
        {
            try
            {
                var teams = await _teamService.GetByIds(ids);

                if (teams == null)
                {
                    throw new AppException("Teams where not found");
                }
                return(Ok(teams));
            }
            catch (AppException ex)
            {
                // return error message if there was an exception
                return(NotFound(new { message = ex.Message }));
            }
        }
예제 #2
0
        public async Task <TeamsWithPlayersVM> GetByIds(IdsVM ids)
        {
            var    teams = new List <TeamVM>();
            Random rnd   = new Random();

            var homeTeam = await _context.Teams
                           .Where(x => x.Id == ids.HomeId)
                           .Select(x => new TeamVM()
            {
                Id          = x.Id,
                Name        = x.Name,
                Since       = x.Since,
                Description = x.Description,
                ImagePath   = x.ImagePath,
                Key         = x.Key
            })
                           .FirstOrDefaultAsync()
                           .ConfigureAwait(false);

            if (homeTeam == null)
            {
                return(null);
            }

            homeTeam.Players = new List <PlayerVM>();

            var awayTeam = await _context.Teams
                           .Where(x => x.Id == ids.AwayId)
                           .Select(x => new TeamVM()
            {
                Id          = x.Id,
                Name        = x.Name,
                Since       = x.Since,
                Description = x.Description,
                ImagePath   = x.ImagePath,
                Key         = x.Key
            })
                           .FirstOrDefaultAsync()
                           .ConfigureAwait(false);

            if (awayTeam == null)
            {
                return(null);
            }

            awayTeam.Players = new List <PlayerVM>();

            teams.Add(homeTeam);
            teams.Add(awayTeam);

            var duelStats = new DuelStatsVM()
            {
                HomeId              = homeTeam.Id,
                AwayId              = awayTeam.Id,
                Played              = 43,
                HomeWins            = homeTeam.Id == 2 ? 10 : 23,
                AwayWins            = homeTeam.Id == 2 ? 23 : 10,
                Drawn               = 10,
                HomeGoals           = homeTeam.Id == 2 ? 46 : 69,
                HomePenaltiesWon    = homeTeam.Id == 2 ? 5 : 4,
                HomePenaltiesScored = homeTeam.Id == 2 ? 4 : 1,
                HomeCleanSheets     = homeTeam.Id == 2 ? 10 : 17,
                HomeYellowCards     = homeTeam.Id == 2 ? 86 : 66,
                HomeRedCards        = homeTeam.Id == 2 ? 8 : 2,
                AwayGoals           = homeTeam.Id == 2 ? 69 : 46,
                AwayPenaltiesWon    = homeTeam.Id == 2 ? 4 : 5,
                AwayPenaltiesScored = homeTeam.Id == 2 ? 1 : 4,
                AwayCleanSheets     = homeTeam.Id == 2 ? 17 : 10,
                AwayYellowCards     = homeTeam.Id == 2 ? 66 : 86,
                AwayRedCards        = homeTeam.Id == 2 ? 2 : 8
            };

            foreach (var team in teams)
            {
                //Get team players
                var teamPlayers = _context.TeamPlayers
                                  .Where(x => x.TeamId == team.Id)
                                  .Select(x => new PlayerVM()
                {
                    Id           = x.PlayerId,
                    LeagueRecord = new LeagueRecordVM()
                    {
                        Appearances = rnd.Next(0, 150),
                        Assists     = rnd.Next(0, 30),
                        Goals       = rnd.Next(0, 30)
                    },
                    PersonalDetails = new PersonalDetailVM()
                    {
                        FirstName   = x.Player.FirstName,
                        LastName    = x.Player.LastName,
                        ImagePath   = x.Player.ImagePath,
                        DateOfBirth = x.Player.DateOfBirth,
                        Nationality = x.Player.Nationality,
                        Height      = x.Player.Height,
                        Weight      = x.Player.Weight
                    },
                    SocialNetworkInfo = new SocialNetworkInfoVM()
                    {
                        Facebook  = x.Player.Facebook,
                        Twitter   = x.Player.Twitter,
                        Instagram = x.Player.Instagram
                    }
                })
                                  .Take(35)
                                  .ToList();

                var seasons = _context.Seasons
                              .OrderBy(x => x.Id)
                              .Take(4)
                              .ToList();

                foreach (var player in teamPlayers)
                {
                    player.Stats = new List <PlayerStatsVM>();
                    foreach (var season in seasons)
                    {
                        var Goals               = rnd.Next(10, 150);
                        var GoalsPerMatch       = rnd.Next(0, 4);
                        var BigChancesMissed    = rnd.Next(9, 20);
                        var FreekicksScored     = rnd.Next(2, Goals / 2);
                        var GoalsWithLeftFoot   = rnd.Next(0, Goals / 2);
                        var GoalsWithRightFoot  = rnd.Next(0, Goals / 2);
                        var HeadedGoals         = rnd.Next(5, Goals / 2);
                        var HitWoodwork         = rnd.Next(4, 25);
                        var PenaltiesScored     = rnd.Next(5, Goals / 2);
                        var Shots               = rnd.Next(Goals, Goals * 4);
                        var ShotsOnTarget       = rnd.Next(Shots / 3, Shots);
                        var Accuracy            = rnd.Next(0, 50);
                        var Tackles             = rnd.Next(0, 150);
                        var TacklesSuccess      = rnd.Next(0, Tackles);
                        var BlockedShots        = rnd.Next(0, 150);
                        var Interceptions       = rnd.Next(0, 150);
                        var Clearances          = rnd.Next(0, 150);
                        var HeadedClearance     = rnd.Next(0, Clearances);
                        var Recoveries          = rnd.Next(0, 150);
                        var DuelsWon            = rnd.Next(0, 150);
                        var DuelsLost           = rnd.Next(0, 150);
                        var Successful          = rnd.Next(0, 60);
                        var ErrorsLeadingToGoal = rnd.Next(0, 20);
                        var AerialBattlesWon    = rnd.Next(0, 150);
                        var AerialBattlesLost   = rnd.Next(0, 150);
                        var Assists             = rnd.Next(0, Goals);
                        var Passes              = rnd.Next(0, Assists * 4);
                        var PassesPerMatch      = rnd.Next(Passes / 3, Passes);
                        var BigChancesCreated   = rnd.Next(0, 150);
                        var Crosses             = rnd.Next(0, Passes);
                        var ThroughBalls        = rnd.Next(0, Passes);
                        var AccurateLongBalls   = rnd.Next(0, Passes);

                        player.Stats.Add(new PlayerStatsVM()
                        {
                            Season = season.Year.Year.ToString(),
                            Attack = new PlayerAttackVM()
                            {
                                Goals              = Goals,
                                GoalsPerMatch      = GoalsPerMatch,
                                BigChancesMissed   = BigChancesMissed,
                                FreekicksScored    = FreekicksScored,
                                GoalsWithLeftFoot  = GoalsWithLeftFoot,
                                GoalsWithRightFoot = GoalsWithRightFoot,
                                HeadedGoals        = HeadedGoals,
                                HitWoodwork        = HitWoodwork,
                                PenaltiesScored    = PenaltiesScored,
                                Shots              = Shots,
                                ShotsOnTarget      = ShotsOnTarget,
                                Accuracy           = Accuracy
                            },
                            Discipline = new DisciplineVM()
                            {
                                Fauls       = rnd.Next(0, 200),
                                Offsides    = rnd.Next(0, 150),
                                RedCards    = rnd.Next(0, 50),
                                YellowCards = rnd.Next(0, 100)
                            },
                            Defense = new PlayerDefenseVM()
                            {
                                Tackles             = Tackles,
                                TacklesSuccess      = TacklesSuccess,
                                BlockedShots        = BlockedShots,
                                Interceptions       = Interceptions,
                                Clearances          = Clearances,
                                HeadedClearance     = HeadedClearance,
                                Recoveries          = Recoveries,
                                DuelsWon            = DuelsWon,
                                DuelsLost           = DuelsLost,
                                Successful          = Successful,
                                ErrorsLeadingToGoal = ErrorsLeadingToGoal,
                                AerialBattlesWon    = AerialBattlesWon,
                                AerialBattlesLost   = AerialBattlesLost
                            },
                            PlayerTeamPlay = new PlayerTeamPlayVM()
                            {
                                Assists           = Assists,
                                Passes            = Passes,
                                PassesPerMatch    = PassesPerMatch,
                                BigChancesCreated = BigChancesCreated,
                                Crosses           = Crosses,
                                Accuracy          = Accuracy,
                                ThroughBalls      = ThroughBalls,
                                AccurateLongBalls = AccurateLongBalls
                            }
                        });
                    }
                }

                team.Players.AddRange(teamPlayers);
            }
            var TeamsWithPlayers = new TeamsWithPlayersVM()
            {
                HomeTeam  = teams[0],
                AwayTeam  = teams[1],
                DuelStats = duelStats
            };

            return(TeamsWithPlayers);
        }