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));
        }
Example #3
0
        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);
        }
Example #4
0
 private StatTarget(int sportId, StatTargetType statTargetType)
 {
     SportId        = sportId;
     StatTargetType = statTargetType;
 }