public TournamentDetailViewModel TournamentDetailViewModel(string tournamentId) { if (_tournamentDetailViewModel == null || _tournamentDetailViewModel.Tournament.Id != tournamentId) { _tournamentDetailViewModel = new TournamentDetailViewModel(tournamentService, tournamentId); } return(_tournamentDetailViewModel); }
public ActionResult Participate([Bind(Include = "TeamID")] Team team, [Bind(Include = "TournamentId")] Tournament tournament) { if (db.TeamGeek.Where(tg => tg.Team == team.TeamId && !tg.Deleted).Count() != db.Tournament.Find(tournament.TournamentId).PlayerNumber) { ViewBag.Message = "Le nombre de membres de l'équipe ne correspond pas aux prérequis du tournois"; Tournament tournamentId = db.Tournament.Find(tournament.TournamentId); Geek user = db.Geek.Where(g => g.Username == User.Identity.Name && !g.Deleted).FirstOrDefault(); TournamentDetailViewModel viewModel = new TournamentDetailViewModel { tournament = tournamentId, geek = user, }; return(View("Details", viewModel)); } Participation participation = db.Participation.Where(p => p.Team == team.TeamId && p.Tournament == tournament.TournamentId).FirstOrDefault(); if (participation != null) { db.TournamentLog.Add(new TournamentLog { Deleted = false, Entry = "L'équipe " + participation.Team1.Name + " s'est inscrit au tournoi.", Time = (int)new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(), Tournament = tournament.TournamentId }); participation.Deleted = false; db.SaveChanges(); } else { participation = new Participation(); participation.Deleted = false; participation.Team = team.TeamId; participation.Tournament = tournament.TournamentId; participation.Qualified = true; if (ModelState.IsValid) { TournamentLog newLog = new TournamentLog { Deleted = false, Entry = "L'équipe " + participation.Team1.Name + " s'est inscrit au tournoi.", Time = (int)new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds(), Tournament = tournament.TournamentId }; db.TournamentLog.Add(newLog); db.Participation.Add(participation); db.SaveChanges(); } } return(RedirectToAction("Details", new { id = tournament.TournamentId })); }
// GET: Tournament/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Tournament tournament = db.Tournament.Find(id); Geek user = db.Geek.Where(g => g.Username == User.Identity.Name && !g.Deleted).FirstOrDefault(); TournamentDetailViewModel viewModel = new TournamentDetailViewModel { tournament = tournament, geek = user, }; if (tournament == null) { return(HttpNotFound()); } return(View(viewModel)); }
public ActionResult Detail(string tournamentName) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); string logmessage = ""; logmessage += stopwatch.ElapsedMilliseconds + " | Start Get tournament for " + tournamentName + "<br>"; Tournament tournament; int? id = null; try { id = Convert.ToInt32(tournamentName); tournament = db.Tournaments.Find(id); } catch (FormatException e) { tournament = (from t in db.Tournaments where t.Name.Equals(tournamentName) select t).FirstOrDefault(); } logmessage += stopwatch.ElapsedMilliseconds + " | End Get tournament<br>"; if (tournament == null) { return(RedirectToAction("Index")); } logmessage += stopwatch.ElapsedMilliseconds + " | Start get sets<br>"; var tournamentSets = from set in db.Sets where set.TournamentID == tournament.TournamentID select set; logmessage += stopwatch.ElapsedMilliseconds + " | End get sets<br>"; var tournamentPlayers = from p in db.Players from s in tournamentSets where p.PlayerId == s.WinnerID || p.PlayerId == s.LoserID select p; logmessage += stopwatch.ElapsedMilliseconds + " | Start player dict<br>"; Dictionary <int, Player> idToPlayer = new Dictionary <int, Player>(); foreach (Player p in tournamentPlayers.Distinct()) { idToPlayer.Add(p.PlayerId, p); } logmessage += stopwatch.ElapsedMilliseconds + " | End player dict<br>"; logmessage += stopwatch.ElapsedMilliseconds + " | Start build pools<br>"; var poolsBrackets = from set in tournamentSets where set.isPool group set by set.BracketName; //e.g. Melee Singles R1 -> [[Pool information]] Dictionary <string, List <Pool> > poolsEvents = new Dictionary <string, List <Pool> >(); foreach (var poolsBracket in poolsBrackets) { string bracketName = poolsBracket.Key; poolsEvents[bracketName] = new List <Pool>(); var pools = from set in poolsBracket group set by set.PoolNum; foreach (var poolsSet in pools) { poolsEvents[bracketName].Add(new Pool(poolsSet.ToList())); } } logmessage += stopwatch.ElapsedMilliseconds + " | End build pools<br>"; logmessage += stopwatch.ElapsedMilliseconds + " | Start brackets<br>"; var bracketSets = (from set in tournamentSets where !set.isPool orderby set.DatePlayed descending group set by set.BracketName).ToList(); logmessage += stopwatch.ElapsedMilliseconds + " | End brackets<br>"; log(logmessage); db.Dispose(); TournamentDetailViewModel vm = new TournamentDetailViewModel(bracketSets, poolsEvents, idToPlayer, tournament); return(View(vm)); }