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