public ActionResult CreateMatches(string DeleteIT) { var numOfWeeks = db.WednesdaySchedules.Count(); var numofTeams = db.WednesdayTeams.Count(); db.WednesdayMatches.RemoveRange(db.WednesdayMatches); db.SaveChanges(); var cs = new CreateSchedule(); var matches = numofTeams % 2 == 0 ? cs.NoByes(numOfWeeks, numofTeams) : cs.Byes(numOfWeeks, numofTeams); foreach (var match in matches) { db.WednesdayMatches.Add(new WednesdayMatch() { id = 0, GameDate = match.Week + 1, Rink = match.Rink == -1 ? -1 : match.Rink + 1, Team1 = match.Team1 + 1, Team2 = match.Team2 + 1, Team1Score = 0, Team2Score = 0 }); } try { db.SaveChanges(); } catch (Exception e) { ErrorSignal.FromCurrentContext().Raise(e); } return(RedirectToAction("index", new { ScheduleID = 1 })); }
public ActionResult CreateMatches() { var leaguename = ""; var cookie = Request.Cookies["leaguename"]; if (cookie != null) { leaguename = cookie.Value; } ViewBag.LeagueName = leaguename; var leagueid = 0; cookie = Request.Cookies["leagueid"]; if (cookie != null) { int.TryParse(cookie.Value, out leagueid); } var numOfWeeks = _db.Schedules.Count(x => x.Leagueid == leagueid); var numofTeams = _db.Teams.Count(x => x.Leagueid == leagueid); var missing = Missing(leagueid); //if (missing.Count > 0) //{ // ViewBag.Error = "Some players not assigned to a team"; // return View(missing); //} var complete = Complete(leagueid); if (!complete) { ViewBag.Error = "Not all teams are complete"; return(View(missing)); } var matches = _db.Matches.Where(x => x.Team.Leagueid == leagueid).ToList(); foreach (var match in matches) { if (match.Team1Score != 0 || match.Team2Score != 0 || match.ForFeitId != 0) { ViewBag.Error = "Matches cannot be delete, some matches have scores"; return(View(missing)); } } _db.Matches.RemoveRange(matches); var cs = new CreateSchedule(); var newMatches = numofTeams % 2 == 0 ? cs.NoByes(numOfWeeks, numofTeams) : cs.Byes(numOfWeeks, numofTeams); var scheduleList = _db.Schedules.Where(x => x.Leagueid == leagueid).ToList(); var lookup = new Dictionary <int, DateTime>(); int i = 1; foreach (var item in scheduleList) { lookup[i++] = item.GameDate; } var teamList = _db.Teams.Where(x => x.Leagueid == leagueid).ToList(); foreach (var match in newMatches) { var team1 = teamList.Find(x => x.TeamNo == match.Team1 + 1); var team2 = teamList.Find(x => x.TeamNo == match.Team2 + 1); var date = lookup[match.Week + 1]; var round = scheduleList.Find(x => x.GameDate == date); _db.Matches.Add(new Match() { id = 0, WeekId = round.id, Rink = match.Rink == -1 ? -1 : match.Rink + 1, TeamNo1 = team1.id, TeamNo2 = match.Rink == -1? (int?)null : team2.id, Team1Score = 0, Team2Score = 0, ForFeitId = 0 }); } try { _db.SaveChanges(); } catch (Exception e) { ErrorSignal.FromCurrentContext().Raise(e); ViewBag.Error = $"No matches were created, Error {e.Message}"; return(View(new List <Player>())); } var rounds = _db.Schedules.Where(x => x.Leagueid == leagueid); if (!rounds.Any()) { ViewBag.Error = "No matches created becuse no weeks have been scheduled"; return(View(missing)); } return(RedirectToAction("index", new { weekid = rounds.First().id, id = leagueid })); }