// GET: /TeamStunt/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            TeamStunt teamstunt = db.TeamStunts.Find(id);

            if (teamstunt == null)
            {
                return(HttpNotFound());
            }

            // Make sure the current user is registered, part of a team and have access to this stunt
            var userid = User.Identity.GetUserId();
            var user   = db.Users.Find(userid);

            if (user == null)
            {
                return(RedirectToAction("Login", "Account"));
            }
            if (user.Team == null)
            {
                return(RedirectToAction("Start", "Team"));
            }
            if (user.Team.TeamStunts.All(x => x.Id != id))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
            }

            return(View(teamstunt.Globalize(Language)));
        }
示例#2
0
        public ActionResult Create([Bind(Include = "Id,Keyword,MaxScore,Type,JudgeNotes,Published,Collapsible")] Stunt stunt)
        {
            if (ModelState.IsValid)
            {
                // Créer une traduction par défaut et rediriger
                var st = new StuntTranslation();
                stunt.Translations = new Collection <StuntTranslation>()
                {
                    st
                };

                db.Stunts.Add(stunt);
                db.SaveChanges();

                // Il faut aussi l'ajouter/assigner aux équipes déjà inscrites
                foreach (var team in db.Teams)
                {
                    var ts = new TeamStunt()
                    {
                        Stunt = stunt, Team = team
                    };
                    db.TeamStunts.Add(ts);
                }

                db.SaveChanges();

                return(RedirectToAction("Edit", "StuntTranslation", new { id = st.Id }));
            }

            return(View(stunt));
        }
示例#3
0
        // GET: /Judge/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TeamStunt teamstunt = db.TeamStunts.Find(id);

            if (teamstunt == null)
            {
                return(HttpNotFound());
            }
            return(View(teamstunt.Globalize(Language)));
        }
示例#4
0
        public ActionResult Edit([Bind(Include = "Id,Score,JudgeNotes,JudgeFeedback,Status")] TeamStunt teamstunt)
        {
            if (ModelState.IsValid)
            {
                // Get previous stunt object
                var teamStunt = db.TeamStunts.Find(teamstunt.Id);

                teamStunt.DateUpdated   = DateTime.Now;
                teamStunt.Score         = teamstunt.Score;
                teamStunt.Status        = teamstunt.Status;
                teamStunt.JudgeFeedback = teamstunt.JudgeFeedback;
                teamStunt.JudgeNotes    = teamstunt.JudgeNotes;

                db.Entry(teamStunt).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(teamstunt));
        }
        public ActionResult Edit([Bind(Include = "Id,TeamNotes,Submission,Status")] TeamStunt teamstunt)
        {
            if (ModelState.IsValid)
            {
                // Get previous stunt object
                var teamStunt = db.TeamStunts.Find(teamstunt.Id);

                teamStunt.TeamNotes   = teamstunt.TeamNotes;
                teamStunt.Submission  = teamstunt.Submission;
                teamStunt.Status      = teamstunt.Status;
                teamStunt.DateUpdated = DateTime.Now;

                // Special logic if it's a flag
                if (teamStunt.Stunt.Type == StuntTypeEnum.Flag && !string.IsNullOrEmpty(teamStunt.Stunt.JudgeNotes) && !string.IsNullOrEmpty(teamStunt.Submission))
                {
                    if (teamstunt.Submission == teamStunt.Stunt.JudgeNotes)
                    {
                        teamStunt.Score  = teamStunt.Stunt.MaxScore;
                        teamStunt.Status = TeamStuntStatusEnum.Done;
                    }
                    else
                    {
                        // Store the amount of failed tries
                        int tries;
                        int.TryParse(teamStunt.JudgeNotes, out tries);

                        teamStunt.JudgeNotes = (++tries).ToString();
                        db.Entry(teamStunt);
                        db.SaveChanges();

                        ModelState.AddModelError("Submission", "Wrong flag");
                        return(View(teamStunt.Globalize(Language)));
                    }
                }

                db.Entry(teamStunt).State = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(teamstunt.Globalize(Language)));
        }
示例#6
0
        public ActionResult DataImport(string data)
        {
            var d = JsonConvert.DeserializeObject <List <Stunt> >(data);

            db.Stunts.AddRange(d);
            db.SaveChanges();

            // Create TeamStunts for the teams
            foreach (var stunt in d)
            {
                foreach (var team in db.Teams)
                {
                    var ts = new TeamStunt()
                    {
                        Stunt = stunt, Team = team
                    };
                    db.TeamStunts.Add(ts);
                }
            }
            db.SaveChanges();

            return(RedirectToAction("IndexAdmin"));
        }
示例#7
0
 public static TeamStunt Globalize(this TeamStunt teamStunt, string language)
 {
     teamStunt.Stunt = teamStunt.Stunt.Globalize(language);
     return(teamStunt);
 }