示例#1
0
 public TournamentDetailViewModel TournamentDetailViewModel(string tournamentId)
 {
     if (_tournamentDetailViewModel == null || _tournamentDetailViewModel.Tournament.Id != tournamentId)
     {
         _tournamentDetailViewModel = new TournamentDetailViewModel(tournamentService, tournamentId);
     }
     return(_tournamentDetailViewModel);
 }
示例#2
0
        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 }));
        }
示例#3
0
        // 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));
        }
示例#4
0
        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));
        }