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 })); } }
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); }