예제 #1
0
        // GET: LeagueTable
        public ActionResult Index(int id, int seasonId, int?union = null)
        {
            string sectionAlias;

            if (union.HasValue)
            {
                var section = _unionsRepo.GetSectionByUnionId(union.Value);
                sectionAlias = section.Alias;
            }
            else
            {
                var section = _sectionsRepo.GetByLeagueId(id);
                sectionAlias = section?.Alias;
            }

            LeagueRankService svc     = new LeagueRankService(id);
            RankLeague        rLeague = svc.CreateLeagueRankTable(seasonId);

            // rLeague.Stages = rLeague.Stages.Where(x => x.Groups.All(y => !y.IsAdvanced)).ToList();


            if (rLeague.Stages.Count == 0)
            {
                rLeague = svc.CreateEmptyRankTable(seasonId);
                rLeague.IsEmptyRankTable = true;
            }

            if (rLeague.Stages.Count == 0)
            {
                rLeague.Teams = _teamsRepo.GetTeams(seasonId, id).ToList();
            }
            rLeague.SeasonId = seasonId;

            switch (sectionAlias)
            {
            case GamesAlias.WaterPolo:
                return(View("Waterpolo/Index", rLeague));

            case GamesAlias.BasketBall:
                return(View("Basketball/Index", rLeague));

            case GamesAlias.NetBall:
            case GamesAlias.VolleyBall:
                return(View("Netball_VolleyBall/Index", rLeague));

            default:
                return(View(rLeague));
            }
        }
예제 #2
0
        public static List <RankTeam> GetRankedTeams(int leagueId, int teamId, int?seasonId)
        {
            var resList = new List <RankTeam>();

            var        leagueRankService = new LeagueRankService(leagueId);
            RankLeague rLeague           = leagueRankService.CreateLeagueRankTable(seasonId);

            if (rLeague != null)
            {
                var stage = rLeague.Stages.OrderByDescending(t => t.Number).FirstOrDefault();
                if (stage == null)
                {
                    return(null);
                }

                var group = stage.Groups.FirstOrDefault(gr => gr.Teams.Any(t => t.Id == teamId));
                if (group == null)
                {
                    return(null);
                }

                var teams = group.Teams.OrderBy(t => t.Position).ToList();
                for (int i = 0; i < teams.Count; i++)
                {
                    if (teams[i].Id == teamId)
                    {
                        if (i > 0)
                        {
                            resList.Add(teams[i - 1]);
                        }

                        resList.Add(teams[i]);

                        if (i < teams.Count - 1)
                        {
                            resList.Add(teams[i + 1]);
                        }
                    }
                }
            }

            return(resList);
        }
예제 #3
0
        public IHttpActionResult GetLeague(int id, string ln)
        {
            CultureModel.ChangeCulture(ln);

            League league = db.Leagues.Find(id);

            if (league == null)
            {
                return(NotFound());
            }

            int?currentSeasonId = league.SeasonId;

            LeagueRankService   lrsvc = new LeagueRankService(id);
            LeaguePageVeiwModel vm    = new LeaguePageVeiwModel();

            //League Info
            vm.LeagueInfo = new LeagueInfoVeiwModel(league);

            //var teamWithMostFans = league.Teams.OrderByDescending(t => t.TeamsFans.Where(tf => tf.LeageId == id).Count()).FirstOrDefault();

            //Team with the most fans
            var teamRepo     = new TeamsRepo();
            var topTeamTuple = teamRepo.GetByMostFans(league.LeagueId);
            var topTeam      = topTeamTuple == null ? null : teamRepo.GetById(topTeamTuple.Item1);

            if (topTeam != null)
            {
                vm.TeamWithMostFans = new TeamCompactViewModel
                {
                    FanNumber = topTeamTuple.Item2,
                    TeamId    = topTeam.TeamId,
                    Logo      = topTeam.Logo,
                    Title     = topTeam.Title,
                    LeagueId  = league.LeagueId
                };
            }

            var leagueGames = db.GamesCycles.Include(t => t.Auditorium)
                              .Include(t => t.GuestTeam)
                              .Include(t => t.HomeTeam)
                              .Where(gc => gc.Stage.LeagueId == id && gc.IsPublished).ToList();

            //Next Game
            vm.NextGame = GamesService.GetNextGame(leagueGames, base.CurrUserId, id, currentSeasonId);

            //List of all next games
            if (vm.NextGame != null)
            {
                vm.NextGames = GamesService.GetNextGames(leagueGames, vm.NextGame.StartDate, currentSeasonId);
            }

            //List of all last games
            vm.LastGames = GamesService.GetLastGames(leagueGames, currentSeasonId);

            //League table
            var rLeague = lrsvc.CreateLeagueRankTable(currentSeasonId);

            if (rLeague != null)
            {
                vm.LeagueTableStages = rLeague.Stages; // lrsvc.CreateLeagueRankTable(currentSeasonId).Stages;
                MakeGroupStages(vm.LeagueTableStages, isEmpty: false);
            }

            if (vm.LeagueTableStages == null || vm.LeagueTableStages.Count == 0)
            {
                vm.LeagueTableStages = lrsvc.CreateEmptyRankTable(currentSeasonId).Stages;
                MakeGroupStages(vm.LeagueTableStages, isEmpty: true);
            }

            vm.GameCycles        = leagueGames.Select(gc => gc.CycleNum).Distinct().OrderBy(c => c).ToList();
            vm.LeagueTableStages = vm.LeagueTableStages.Where(x => x.Groups.All(y => !y.IsAdvanced)).ToList();
            return(Ok(vm));
        }
예제 #4
0
        public IHttpActionResult Rank(int id, string ln)
        {
            CultureModel.ChangeCulture(ln);
            var leagueRank = new LeagueRank
            {
                Stages = new List <StageRank>()
            };

            int?seasonId              = seasonsRepo.GetLastSeasonByLeagueId(id);
            LeagueRankService svc     = new LeagueRankService(id);
            RankLeague        rLeague = svc.CreateLeagueRankTable(seasonId) ?? new RankLeague();

            foreach (var stage in rLeague.Stages)
            {
                if (stage.Groups.All(g => g.IsAdvanced))
                {
                    continue;
                }
                var rankStage = new StageRank();
                var nameStage = "";
                if (stage.Groups.Any() && stage.Groups.All(g => g.IsAdvanced))
                {
                    var firstGroup = stage.Groups.FirstOrDefault();
                    if (firstGroup != null && firstGroup.PlayoffBrackets != null)
                    {
                        int numOfBrackets = (int)firstGroup.PlayoffBrackets;
                        switch (numOfBrackets)
                        {
                        case 1:
                            nameStage = Messages.Final; break;

                        case 2:
                            nameStage = Messages.Semifinals; break;

                        case 4:
                            nameStage = Messages.Quarter_finals;
                            break;

                        case 8:
                            nameStage = Messages.Final_Eighth;
                            break;

                        default:
                            nameStage = (numOfBrackets * 2) + Messages.FinalNumber;
                            break;
                        }
                    }
                }
                else
                {
                    nameStage = Messages.Stage + stage.Number;
                }

                rankStage.NameStage = nameStage;
                rankStage.Groups    = new List <GroupRank>();

                foreach (var group in stage.Groups)
                {
                    var rankGroup = new GroupRank
                    {
                        NameGroup = @group.Title,
                        Teams     = new List <TeamRank>()
                    };

                    for (var i = 0; i < group.Teams.Count(); i++)
                    {
                        var rankTeam = new TeamRank
                        {
                            Team = @group.Teams[i].Title,
                            Logo = @group.Teams[i].Logo
                        };

                        int numOfBrackets = (int)group.PlayoffBrackets;
                        rankTeam.Position = i % (numOfBrackets) == 0 ? (i + 1).ToString() : "-";

                        rankGroup.Teams.Add(rankTeam);
                    }
                    rankStage.Groups.Add(rankGroup);
                }
                leagueRank.Stages.Add(rankStage);
            }

            return(Ok(leagueRank));
        }
예제 #5
0
        internal static TeamInfoViewModel GetTeamInfo(Team team, int leagueId, int?seasonId = null)
        {
            if (!team.LeagueTeams.Any(l => l.LeagueId == leagueId))
            {
                return(null);
            }

            var vm = new TeamInfoViewModel();

            //teamId
            vm.TeamId = team.TeamId;

            //"place": 7,
            //"ratio": "2:3",
            //"succsessLevel": 59,
            LeagueRankService leagueRankService = new LeagueRankService(leagueId);
            RankLeague        rLeague           = leagueRankService.CreateLeagueRankTable(seasonId);

            if (rLeague != null)
            {
                var       stage = rLeague.Stages.OrderByDescending(t => t.Number).FirstOrDefault();
                RankGroup group;
                if (stage != null)
                {
                    group = stage.Groups.Where(gr => gr.Teams.Any(t => t.Id == team.TeamId)).FirstOrDefault();
                    RankTeam rTeam = null;
                    if (group != null)
                    {
                        rTeam = group.Teams.Where(t => t.Id == team.TeamId).FirstOrDefault();
                    }
                    if (rTeam != null)
                    {
                        vm.Place = int.Parse(rTeam.Position);
                        vm.Ratio = rTeam.SetsLost.ToString() + ":" + rTeam.SetsWon.ToString();
                        if (rTeam.Games == 0)
                        {
                            vm.SuccsessLevel = 0;
                        }
                        else
                        {
                            double wins  = rTeam.Wins;
                            double games = rTeam.Games;
                            double ratio = (wins / games) * 100;
                            vm.SuccsessLevel = Convert.ToInt32(ratio);
                        }
                    }
                }
            }
            vm.Logo     = team.Logo;
            vm.Image    = team.PersonnelPic;
            vm.League   = team.LeagueTeams.Where(tl => tl.LeagueId == leagueId).FirstOrDefault().Leagues.Name;
            vm.LeagueId = leagueId;

            if (seasonId.HasValue)
            {
                TeamsDetails teamsDetails = team.TeamsDetails.FirstOrDefault(x => x.SeasonId == seasonId);
                vm.Title = teamsDetails != null ? teamsDetails.TeamName : team.Title;
            }
            else
            {
                vm.Title = team.Title;
            }

            return(vm);
        }
예제 #6
0
        // GET: LeagueRank/Details/5
        public ActionResult Details(int id, int seasonId, int unionId)
        {
            var section      = _unionsRepo.GetSectionByUnionId(unionId);
            var sectionAlias = section.Alias;

            LeagueRankService svc     = new LeagueRankService(id);
            RankLeague        rLeague = svc.CreateLeagueRankTable(seasonId);

            if (rLeague == null)
            {
                rLeague = new RankLeague();
            }

            else if (rLeague.Stages.Count == 0)
            {
                rLeague = svc.CreateEmptyRankTable(seasonId);
                rLeague.IsEmptyRankTable = true;

                if (rLeague.Stages.Count == 0)
                {
                    if (User.IsInAnyRole(AppRole.Workers))
                    {
                        switch (usersRepo.GetTopLevelJob(base.AdminId))
                        {
                        case JobRole.UnionManager:
                            rLeague.Teams = _teamsRepo.GetTeams(seasonId, id).ToList();
                            break;

                        case JobRole.LeagueManager:
                            rLeague.Teams = _teamsRepo.GetTeams(seasonId, id).ToList();
                            break;

                        case JobRole.TeamManager:
                            rLeague.Teams = _teamsRepo.GetByManagerId(base.AdminId, seasonId);
                            break;
                        }
                    }
                    else
                    {
                        rLeague.Teams = _teamsRepo.GetTeams(seasonId, id).ToList();
                    }
                }
            }


            switch (sectionAlias)
            {
            case GamesAlias.WaterPolo:
                return(PartialView("Waterpolo/_Details", rLeague));

            case GamesAlias.BasketBall:
                return(PartialView("Basketball/_Details", rLeague));

            case GamesAlias.NetBall:
            case GamesAlias.VolleyBall:
                //TODO display extended table
                return(PartialView("Netball_VolleyBall/_Details", rLeague));

            default:
                return(PartialView("_Details", rLeague));
            }
        }
예제 #7
0
        public ActionResult Edit(GroupsForm vm)
        {
            if (vm.TeamsArr != null || vm.SelectedTeamsArr != null)
            {
                UpdateGroupFormListsFromSelection(vm);
            }
            else
            {
                UpdateGroupFormListsFromDB(vm);
            }

            if (vm.SelectedTeamsArr == null || vm.SelectedTeamsArr.Count() == 0)
            {
                ModelState.AddModelError("SelectedTeamsArr", "נא להוסיף קבוצות לפני שמירה");
                return(PartialView("_Edit", vm));
            }

            var item = new Group();

            if (vm.GroupId != 0)
            {
                item = groupRepo.GetById(vm.GroupId);
            }
            else
            {
                groupRepo.Create(item);
            }
            if (vm.PointId < 1 || vm.PointId > 3)
            {
                vm.PointId = 0;
            }

            item.PointEditType = vm.PointId - 1;
            TryUpdateModel(item);
            item.IsAdvanced = false;



            LeagueRankService svc = new LeagueRankService(vm.LeagueId);
            var teams             = new List <RankTeam>();

            foreach (var team in vm.SelectedTeamsArr)
            {
                var res = svc.AddTeamIfNotExist(team, teams);
            }
            vm.Points  = new int[teams.Count];
            vm.Names   = new string[teams.Count];
            vm.IdTeams = new int?[teams.Count];
            for (var i = 0; i < teams.Count; i++)
            {
                vm.Points[i] = 0;
                var team = teamRepo.GetGroupTeam((int)item.GroupId, (int)teams[i].Id);
                if (team != null)
                {
                    vm.Points[i] = team.Points != null ? (int)team.Points:0;
                }
                vm.Names[i]   = teams[i].Title;
                vm.IdTeams[i] = teams[i].Id;
            }
            groupRepo.UpdateTeams(item, vm.SelectedTeamsArr);
            vm.InjectFrom(item);
            groupRepo.Save();
            vm.GroupId = item.GroupId;
            if (vm.PointId == 3)
            {
                TempData["GroupId"] = vm.GroupId;
                return(PartialView("_EditPoints", vm));
            }
            ViewBag.SeasonId     = vm.SeasonId;
            TempData["LeagueId"] = vm.LeagueId;
            return(PartialView("_Edit", vm));
        }