public TournamentStructure GetTournament(int id) { using (var context = new LoLEsportsDbContext()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { TournamentStructure tourney = new TournamentStructure(); Tournament t = context.Tournament.Where(i => i.TournamentId == id).FirstOrDefault(); if (t == null) { tourney.error = 1; tourney.message = "Tournament does not exist in the database."; return(tourney); } tourney.TournamentName = t.TournamentName; tourney.StartDate = t.StartDate; tourney.EndDate = t.EndDate; tourney.Season = t.Season; PlayerTransaction p = new PlayerTransaction(); tourney.MVP = p.GetPlayer(t.Mvpid); Coach c = context.Coach.Where(i => i.CoachId == t.Mvcid).FirstOrDefault(); tourney.MVCName = context.Person.Where(i => i.PersonId == c.PersonId).Select(x => x.PersonName).FirstOrDefault(); tourney.MVCIgn = c.CoachIgn; MatchTransaction mt = new MatchTransaction(); TeamTransaction tt = new TeamTransaction(); tourney.TournamentBanner = t.TournamentBanner; tourney.Matches = new List <SimpleMatchStructure>(); tourney.Standings = new List <StandingsStructure>(); context.Team.ToList().ForEach((team) => { StandingsStructure s = new StandingsStructure(); s.TeamName = team.TeamName; s.TeamLogo = team.TeamPicture; s.TeamId = team.TeamId; tourney.Standings.Add(s); }); context.Match.Where(i => (!i.IsFinals).GetValueOrDefault() && (!i.IsQuarters).GetValueOrDefault() && (!i.IsSemis).GetValueOrDefault() && i.TournamentId == t.TournamentId).OrderBy(o => o.DatePlayed) .ToList().ForEach((match) => { SimpleMatchStructure sms = new SimpleMatchStructure(); sms.MatchId = match.MatchId; sms.DatePlayed = match.DatePlayed; sms.WinningTeam = tt.GetTeam(match.WinningTeamId); sms.LosingTeam = tt.GetTeam(match.LosingTeamId); tourney.Matches.Add(sms); tourney.Standings.Find(l => l.TeamName == sms.WinningTeam.TeamName).Wins++; tourney.Standings.Find(l => l.TeamName == sms.LosingTeam.TeamName).Losses++; }); tourney.Playsoffs = new List <SimpleMatchStructure>(); context.Match.Where(i => ((i.IsFinals).GetValueOrDefault() == true || (i.IsQuarters).GetValueOrDefault() == true || (i.IsSemis).GetValueOrDefault() == true) && i.TournamentId == t.TournamentId).OrderBy(o => o.DatePlayed) .ToList().ForEach((match) => { SimpleMatchStructure sms = new SimpleMatchStructure(); sms.MatchId = match.MatchId; sms.DatePlayed = match.DatePlayed; sms.WinningTeam = tt.GetTeam(match.WinningTeamId); sms.LosingTeam = tt.GetTeam(match.LosingTeamId); tourney.Playsoffs.Add(sms); }); tourney.Standings = tourney.Standings.OrderByDescending(o => o.Wins).ThenBy(x => x.Losses).ToList(); dbContextTransaction.Commit(); return(tourney); } catch (Exception e) { TournamentStructure tourney = new TournamentStructure(); tourney.error = 1; tourney.message = e.ToString(); dbContextTransaction.Rollback(); return(tourney); } } } }
public MatchStructure GetMatch(int id) { using (var context = new LoLEsportsDbContext()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { MatchStructure match = new MatchStructure(); Match m = context.Match.Where(i => i.MatchId == id).FirstOrDefault(); if (m == null) { match.error = 1; match.message = "Match does not exist in the database."; return(match); } match.DatePlayed = m.DatePlayed; match.MatchLocation = m.MatchLocation; match.Duration = m.Duration; Team wt = context.Team.Where(i => i.TeamId == m.WinningTeamId).FirstOrDefault(); TeamTransaction tt = new TeamTransaction(); match.WinningTeam = tt.GetTeam(wt.TeamId); Team lt = context.Team.Where(i => i.TeamId == m.LosingTeamId).FirstOrDefault(); match.LosingTeam = tt.GetTeam(lt.TeamId); match.WinningTeamStats = context.PlayerMatchRef.Where(i => i.MatchId == m.MatchId && match.WinningTeam.ids.Contains(i.PlayerId)).OrderBy(o => o.PlayerId).ToList(); match.LosingTeamStats = context.PlayerMatchRef.Where(i => i.MatchId == m.MatchId && match.LosingTeam.ids.Contains(i.PlayerId)).OrderBy(o => o.PlayerId).ToList(); match.PlayerNames = new List <String>(); match.ChampionImages = new List <String>(); match.ChampionBans = new List <String>(); match.WinningTeamStats.ForEach((player) => { match.PlayerNames.Add(context.Player.Where(x => player.PlayerId == x.PlayerId).Select(l => l.PlayerIgn).FirstOrDefault()); match.ChampionImages.Add(context.Champion.Where(x => player.ChampionPlayedId == x.ChampionId).Select(l => l.ChampionImage).FirstOrDefault()); match.ChampionBans.Add(context.Champion.Where(x => player.ChampionBannedId == x.ChampionId).Select(l => l.ChampionImage).FirstOrDefault()); }); match.PlayerNames2 = new List <String>(); match.ChampionImages2 = new List <String>(); match.ChampionBans2 = new List <String>(); match.LosingTeamStats.ForEach((player) => { match.PlayerNames2.Add(context.Player.Where(x => player.PlayerId == x.PlayerId).Select(l => l.PlayerIgn).FirstOrDefault()); match.ChampionImages2.Add(context.Champion.Where(x => player.ChampionPlayedId == x.ChampionId).Select(l => l.ChampionImage).FirstOrDefault()); match.ChampionBans2.Add(context.Champion.Where(x => player.ChampionBannedId == x.ChampionId).Select(l => l.ChampionImage).FirstOrDefault()); }); Tournament t = context.Tournament.Where(x => x.TournamentId == m.TournamentId).FirstOrDefault(); match.TournamentID = t.TournamentId; match.TournamentName = t.TournamentName; dbContextTransaction.Commit(); return(match); } catch (Exception e) { MatchStructure match = new MatchStructure(); match.error = 1; match.message = e.ToString(); dbContextTransaction.Rollback(); return(match); } } } }