public IMatchProvisioningEngine Create(CompetitionType competitionType) { if (competitionType.Method == CompetitionMethod.Knockout) { return Build.New<KnockoutMatchProvisioningEngine>(); } else { throw new NotImplementedException(); } }
public MatchHeaderInfo[] BuildMatches(CompetitionType competitionType, CompetitionDetails competitionDetails) { var helper = new KnockoutMatchProvisioningEngineHelper(); var pMatches = helper.ProvisionMatches(competitionType.PlayersCount, competitionType.QualifyingToFinalPlayersCount, competitionDetails.Players.Length); var fMatches = pMatches.Where(m => m.SectionCode == "MD").ToArray(); var qMatches = pMatches.Where(m => m.SectionCode == "Q").ToArray(); var rankedPlayersCount = competitionType.PlayersCount - competitionType.QualifyingToFinalPlayersCount; var qPlayersCount = competitionDetails.Players.Length - rankedPlayersCount; if (qPlayersCount <= competitionType.QualifyingToFinalPlayersCount) { qPlayersCount = 0; } var matches = new List<MatchHeaderInfo>(); var finalPlayersCount = PlayersCountCalculator.CalculatePlayersCount(rankedPlayersCount); var qualifyingPlayersCount = PlayersCountCalculator.CalculatePlayersCount(qPlayersCount); var finalSectionMatches = CreateSectionMatches(finalPlayersCount, CompetitionSection.Final).ToArray(); var qualifyingSectionMatches = CreateSectionMatches(qualifyingPlayersCount, CompetitionSection.Qualifying, competitionType.QualifyingToFinalPlayersCount).ToArray(); var consolationSectionMatches = CreateConselationMatches(finalPlayersCount); for (var i = 0; i < fMatches.Length; i++) { finalSectionMatches[i].Player1Code = fMatches[i].Player1Code; finalSectionMatches[i].Player2Code = fMatches[i].Player2Code; } for (var i = 0; i < qMatches.Length; i++) { qualifyingSectionMatches[i].Player1Code = qMatches[i].Player1Code; qualifyingSectionMatches[i].Player2Code = qMatches[i].Player2Code; } matches.AddRange(qualifyingSectionMatches); matches.AddRange(finalSectionMatches); matches.AddRange(consolationSectionMatches); return matches.ToArray(); }
public ActionResult Create() { var competitionType = new CompetitionType(); return View(competitionType); }
public ActionResult Create(CompetitionType competitionType) { var competitionTypesRepository = ServiceProvider.Get<ICompetitionTypeRepository>(); competitionTypesRepository.Add(competitionType); return RedirectToAction("Index"); }