public ActionResult Edit(MatchBracket matchBracket) { try { User user = (User)Session["user"]; matchBracket.Match = MatchManager.LoadById(matchBracket.MatchId); matchBracket.Match.ReportingPlayer = user; matchBracket.Match.Winner = UserManager.LoadById(matchBracket.WinnerId); MatchManager.Update(matchBracket.Match); matchBracket.Bracket = BracketManager.LoadById(matchBracket.BracketId); if (matchBracket.Match.Winner != null) { bool isDivisionOver = true; for (int i = matchBracket.Bracket.GetFirstRoundOfDivision() - 1; i < matchBracket.Bracket.GetLastRoundOfDivision(); i++) { isDivisionOver = matchBracket.Bracket.SortedMatches[i].Winner != null; //end the loop if any of the matches are not finished if (isDivisionOver == false) { break; } } if (isDivisionOver) { for (int i = matchBracket.Bracket.GetFirstRoundOfDivision() - 1; i < matchBracket.Bracket.GetLastRoundOfDivision(); i += 2) { Match match = new Match(); match.Round = (int)Math.Ceiling((double)matchBracket.Bracket.SortedMatches[i].Round / 2) + matchBracket.Bracket.OriginalRoundCount; if (i + 1 == matchBracket.Bracket.GetLastRoundOfDivision()) { match.Player1 = matchBracket.Bracket.SortedMatches[i].Winner; match.ReportingPlayer = match.Player1; match.Winner = match.Player1; match.Division = matchBracket.Bracket.CurrentDivision + 1; } else { match.Player1 = matchBracket.Bracket.SortedMatches[i].Winner; match.Player2 = matchBracket.Bracket.SortedMatches[i + 1].Winner; match.Division = matchBracket.Bracket.CurrentDivision + 1; } matchBracket.Bracket.Matches.Add(match); MatchManager.Insert(match, matchBracket.Bracket.Id); } matchBracket.Bracket.CurrentDivision++; BracketManager.Update(matchBracket.Bracket); } } return(RedirectToAction("Details", "Bracket", new { @id = matchBracket.BracketId })); } catch (Exception ex) { throw ex; } }
// GET: Match/Edit/5 public ActionResult Edit(Guid id) { var matchBracket = new MatchBracket(MatchManager.LoadById(id)); if (Authenticate.IsParticipant(matchBracket.Match) || Authenticate.IsModerator(matchBracket.Bracket)) { return(View(matchBracket)); } else { //TODO: Direct user to page that says they can't edit that match. possibly gray out matches that they are not part of return(RedirectToAction("Detail", "Bracket", new { returnurl = HttpContext.Request.Url })); } }