public ActionResult GetContextEditor(int sportId, StatTargetType targetType, string elements, StatTargetType contextType) { ViewBag.ContextType = contextType; var selectList = StatisticHelper.GetContextEditor(sportId, targetType, elements.Split(',').Select(int.Parse).ToArray(), contextType, DataContext); return(PartialView("_ContextEditor", selectList)); }
public ActionResult GetStatTargetEditor(int sportId, StatTargetType type) { var sport = DataContext.Sports.Single(x => x.Id == sportId); SelectList result; List <StatTargetType> contextTypes; switch (type) { case StatTargetType.Players: var players = DataContext.Players.Where(x => x.SportId == sportId).ToList(); result = new SelectList(players, "Id", "Name"); contextTypes = new List <StatTargetType>(); if (sport.IsTeamSport) { contextTypes.Add(StatTargetType.Teams); } contextTypes.Add(StatTargetType.Games); contextTypes.Add(StatTargetType.Tournaments); break; case StatTargetType.Teams: var teams = DataContext.Teams.Where(x => x.SportId == sportId).ToList(); result = new SelectList(teams, "Id", "Name"); contextTypes = new List <StatTargetType> { StatTargetType.Players, StatTargetType.Games, StatTargetType.Tournaments }; break; default: var games = DataContext.Games.Where(x => x.SportId == sportId).ToList() .Select(x => new GamePreviewViewModel(x, DataContext)) .ToList(); result = new SelectList(games, "Id", "DisplayName"); contextTypes = new List <StatTargetType> { StatTargetType.Players }; if (sport.IsTeamSport) { contextTypes.Add(StatTargetType.Teams); } break; } ViewBag.StatType = type; ViewBag.ContextTypes = contextTypes; return(PartialView("_StatTargetEditor", result)); }
public static SelectList GetContextEditor(int sportId, StatTargetType targetType, int[] elems, StatTargetType contextType, DataContext context) { SelectList result = null; var sport = context.Sports.Single(x => x.Id == sportId); switch (targetType) { case StatTargetType.Players: var players = context.Players.Where(x => elems.Contains(x.Id)).Select(x => x.Id).ToList(); switch (contextType) { case StatTargetType.Teams: var teamsWithPlayers = context.GameParticipants.Where( x => x.GameParticipantPlayers.Any(y => players.Contains(y.PlayerId))).ToList().Select(x => (Team)x.Participant); var teamsPlayersResult = new HashSet <Team>(teamsWithPlayers); result = new SelectList(teamsPlayersResult, "Id", "Name"); break; case StatTargetType.Games: var gamesWithPlayer = context.Games.Where(x => x.GameParticipants.Any( z => z.GameParticipantPlayers.Any(y => players.Contains(y.PlayerId)))).ToList() .Select(x => new GamePreviewViewModel(x, context)); result = new SelectList(gamesWithPlayer, "Id", "DisplayName"); break; case StatTargetType.Tournaments: var tournaments = context.Tournaments.Where( x => x.Games.Any( y => y.GameParticipants.Any( z => z.GameParticipantPlayers.Any(f => players.Contains(f.PlayerId))))) .ToList(); result = new SelectList(tournaments, "Id", "Name"); break; } break; case StatTargetType.Teams: var teams = context.Teams.Where(x => elems.Contains(x.Id)).Select(x => x.Id).ToList(); switch (contextType) { case StatTargetType.Players: var playersInTeam = context.Players.Where(x => x.Teams.Any(y => teams.Contains(y.Id))); result = new SelectList(playersInTeam, "Id", "Name"); break; case StatTargetType.Games: var gamesOfTeam = context.Games.Where(x => x.GameParticipants.Any(y => teams.Contains(y.ParticipantId))) .ToList().Select(x => new GamePreviewViewModel(x, context)); result = new SelectList(gamesOfTeam, "Id", "DisplayName"); break; case StatTargetType.Tournaments: var tournsWithTeam = context.Tournaments.Where(x => x.Games.Any( y => y.GameParticipants.Any(z => teams.Contains(z.ParticipantId)))); result = new SelectList(tournsWithTeam, "Id", "Name"); break; } break; case StatTargetType.Games: var games = context.Games.Where(x => elems.Contains(x.Id)).Select(x => x.Id).ToList(); switch (contextType) { case StatTargetType.Players: var playersInGames = new HashSet <Player>(context.GameParticipantPlayers.Where( x => games.Contains(x.GameParticipant.GameId)).Select(x => x.Player)); result = new SelectList(playersInGames, "Id", "Name"); break; case StatTargetType.Teams: var teamsInGames = new HashSet <Team>(context.GameParticipants.Where( x => games.Contains(x.GameId)).ToList().Select(x => (Team)x.Participant)); result = new SelectList(teamsInGames, "Id", "Name"); break; } break; } return(result); }
private StatTarget(int sportId, StatTargetType statTargetType) { SportId = sportId; StatTargetType = statTargetType; }