public void Verify_ApproveCompetition() { try { Browser.Start(); CompetitionDetails details = CreateCompetition(ConfigurationManager.AppSettings["UN1"]); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN2"], ConfigurationManager.AppSettings["UN2Password"]); Pages.CompetitionPage.ClickCompetitionLink(); Pages.CompetitionPage.SelectCompetition(details.Title); Pages.CompetitionDetailsPage.ParticipatePage.RegisterForChallange(); Pages.HomePage.ClickLogOff(); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN1"], ConfigurationManager.AppSettings["UN1Password"]); Pages.MyCodaLabPage.ClickMyCodaLabLink(); Pages.MyCodaLabPage.SelectCompetitionOptionlink(MyCodaLabPageOps.CompetitionOptionLinks.Participants, details.Title); Pages.MyCodaLabPage.ChangeStatus(MyCodaLabPageOps.RequestTo.Approve, ConfigurationManager.AppSettings["UN2"]); Pages.HomePage.ClickLogOff(); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN2"], ConfigurationManager.AppSettings["UN2Password"]); Pages.MyCodaLabPage.ClickMyCodaLabLink(); Pages.MyCodaLabPage.SelectTab(MyCodaLabPageOps.MyCodaLabTabs.CompetitionIParticipateIn); Assert.IsTrue(Pages.MyCodaLabPage.IsCompetitionPresent(details.Title), "Competition was not present in the \"Competition I participate in\" page"); Assert.IsTrue(StringUtilities.CompareStrings(Pages.MyCodaLabPage.GetParticipantStatus(details.Title), Constants.StaticStrings.MyCodaLabPage.ParticipantApproved, true, true), "Competition status was not as approved in \"Competition I participate in\" page"); } catch (Exception ex) { LogException(ex); throw; } }
public void QualifyByeMatches(CompetitionDetails details, CompetitionSection section) { var competitionMatchesRepository = ServiceProvider.Get <ICompetitionMatchesRepository>(); var sectionMatches = details.Matches.Where(m => m.Section == section && (m.Player1Code == BYE || m.Player2Code == BYE)).Select(m => competitionMatchesRepository.GetMatch(m.Id)).ToArray(); foreach (var match in sectionMatches) { match.Result = MatchResult.Win; if (match.Player1Code == BYE) { match.Winner = MatchWinner.Player2; } else if (match.Player2Code == BYE) { match.Winner = MatchWinner.Player1; } UpdateMatchResult(new MatchScoreUpdateInfo() { MatchId = match.Id, Result = match.Result, Winner = match.Winner }); Qualify(match); } }
public void Verify_RequestCompetition() { try { Browser.Start(); CompetitionDetails details = CreateCompetition(ConfigurationManager.AppSettings["UN1"]); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN2"], ConfigurationManager.AppSettings["UN2Password"]); Pages.CompetitionPage.ClickCompetitionLink(); Pages.CompetitionPage.SelectCompetition(details.Title); Pages.CompetitionDetailsPage.ParticipatePage.RegisterForChallange(); Assert.IsTrue(Pages.CompetitionDetailsPage.ParticipatePage.IsRegisteringPending(), "Registration was not sent for approval"); Pages.HomePage.ClickLogOff(); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN1"], ConfigurationManager.AppSettings["UN1Password"]); Pages.MyCodaLabPage.ClickMyCodaLabLink(); Pages.MyCodaLabPage.SelectCompetitionOptionlink(MyCodaLabPageOps.CompetitionOptionLinks.Participants, details.Title); List <ParticipantDetails> allparticipants = Pages.MyCodaLabPage.GetAllParticipants(); foreach (var item in allparticipants) { if (StringUtilities.CompareStrings(ConfigurationManager.AppSettings["UN2"], item.ParticipantName, true, true)) { Assert.IsTrue(StringUtilities.CompareStrings(item.StatusMessage, Constants.StaticStrings.ParticipantPage.ParticipationPendingApproval, true, true), "Status message was not as expected"); } } } catch (Exception ex) { LogException(ex); throw; } }
private void backBtn_Click(object sender, EventArgs e) { CompetitionDetails frm = new CompetitionDetails(comp); frm.Show(); Hide(); }
private void oldCompCbox_SelectedIndexChanged(object sender, EventArgs e) { comp = new Competition(); CompetitionDetails CompDetails = new CompetitionDetails(comp.GetCompettion(oldCompCbox.SelectedItem.ToString())); if (CompDetails.Visible == false) { CompDetails.Show(); } }
private DrawGeneratorInfo GetGenerateInfo(CompetitionDetails details, HebrewWordInverter inverter) { var result = GetDefaultGenerateInfo(); result.DrawTitle = inverter.Invert(details.Name); result.DrawType = inverter.Invert(details.SitePhone) + ", " + inverter.Invert(details.Site); result.DrawOtherInfo = inverter.Invert(details.MainRefereePhone) + ", " + inverter.Invert(details.MainRefereeName); result.DocumentAuthor = "Simple. SAMS - ITA " + DateTime.Now.Year.ToString(); return(result); }
public void Verify_CompetitionCreateWithPhases() { try { Browser.Start(); Pages.LoginPage.Login(); DataSetDetails dataSetDetails1 = new DataSetDetails() { AccessString = StringUtilities.GetRandomPlainString(10), BlobURL = StringUtilities.GetRandomPlainString(10), DataSetType = PhaseDetailsPageOps.DataSetType.AzureBlob }; DataSetDetails dataSetDetails2 = new DataSetDetails() { AccessString = StringUtilities.GetRandomPlainString(10), BlobURL = StringUtilities.GetRandomPlainString(10), DataSetType = PhaseDetailsPageOps.DataSetType.AzureBlobSharedAccessSignature }; List <DataSetDetails> dsDetails = new List <DataSetDetails>(); dsDetails.Add(dataSetDetails1); dsDetails.Add(dataSetDetails2); CompPhaseDetails phaseDetails = new CompPhaseDetails() { DataSets = dsDetails, MaxSubmissions = 10, StartDate = DateTime.Now.Date.ToString("MM/dd/yyyy"), Titile = StringUtilities.GetRandomPlainString(10) }; Pages.MyCodaLabPage.ClickMyCodaLabLink(); CompetitionDetails details = Pages.MyCodaLabPage.CreateCompetition(phaseDetails); this.competitionTitle = phaseDetails.Titile; Pages.MyCodaLabPage.SelectCompetitionOptionlink(MyCodaLabPageOps.CompetitionOptionLinks.Edit, details.Title); Pages.MyCodaLabPage.CreatePage.SelectTab(CompetitionCreatePageOps.Tab.PhaseDetails); List <CompPhaseDetails> actual = Pages.MyCodaLabPage.CreatePage.PhaseDetailsPage.GetAllPhaseDetails(); Assert.AreEqual <string>(phaseDetails.Titile, actual[0].Titile, "Phase details are not as expected"); Assert.AreEqual <string>(phaseDetails.StartDate, actual[0].StartDate, "Start date was not as expected"); Assert.AreEqual <int>(phaseDetails.MaxSubmissions, actual[0].MaxSubmissions, "Maximum submissions are not as expected"); Assert.AreEqual <MI_UI_Framework.PageOperations.PhaseDetailsPageOps.DataSetType>(phaseDetails.DataSets[0].DataSetType, actual[0].DataSets[0].DataSetType, "Dataset type is not as expected"); Assert.AreEqual <string>(phaseDetails.DataSets[0].BlobURL, actual[0].DataSets[0].BlobURL, "Blob URL is not as expected"); Assert.AreEqual <string>(phaseDetails.DataSets[0].AccessString, actual[0].DataSets[0].AccessString, "Access string is not as expected"); Assert.IsTrue(!string.IsNullOrEmpty(actual[0].DataSets[0].DownloadURL), "Download URL was not generated"); Assert.AreEqual <MI_UI_Framework.PageOperations.PhaseDetailsPageOps.DataSetType>(phaseDetails.DataSets[1].DataSetType, actual[0].DataSets[1].DataSetType, "Dataset type is not as expected"); Assert.AreEqual <string>(phaseDetails.DataSets[1].BlobURL, actual[0].DataSets[1].BlobURL, "Blob URL is not as expected"); Assert.AreEqual <string>(phaseDetails.DataSets[1].AccessString, actual[0].DataSets[1].AccessString, "Access string is not as expected"); this.deleteCompetition = true; } catch (Exception ex) { LogException(ex); throw; } }
private MatchPlayerViewModel GetPlayer(MatchPlayer player, CompetitionDetails competition) { var result = default(MatchPlayerViewModel); if (player.IsNotNull()) { var cp = competition.Players.FirstOrDefault(p => p.Id == player.Id); if (cp.IsNotNull()) { result = new MatchPlayerViewModel(player); result.Rank = cp.CompetitionRank; } } return(result); }
private CompetitionPosition[] PositionFinalPlayersInCompetition(CompetitionDetails details, CompetitionPlayer[] players) { var positioningEngine = new FinalPositioningEngine(); var positioningParameters = new FinalPositioningParameters { QualifyingToFinal = details.Type.QualifyingToFinalPlayersCount, Players = (from p in players select new Simple.SAMS.CompetitionEngine.Player { Id = p.Id, Rank = p.CompetitionRank, AccumulatedScore = p.AccumulatedScore.GetValueOrDefault(), AverageScore = p.AverageScore.GetValueOrDefault() }).ToArray <Simple.SAMS.CompetitionEngine.Player>() }; return(positioningEngine.Evaluate(positioningParameters)); }
private UpdatePlayerPositionInfo[] GetQualifyingPlayersPositions(CompetitionDetails details) { var items = Enumerable.Empty <UpdatePlayerPositionInfo>(); var orderedMatches = (from m in details.Matches where m.Section == CompetitionSection.Qualifying orderby m.Position select m).Take <MatchHeaderInfo>((details.Type.QualifyingPlayersCount / 2)).ToArray <MatchHeaderInfo>(); var qualifyingPlayers = (from p in details.Players where p.Section == CompetitionSection.Qualifying select p).ToArray <CompetitionPlayer>(); if (qualifyingPlayers.Length > 0) { items = GetUpdatePlayerPositionInfos(PositionQualifyingPlayers(details, qualifyingPlayers), orderedMatches); } return(items.ToArray <UpdatePlayerPositionInfo>()); }
public void CompetitionDetails_Verify_LoginPromptForRegister() { try { Browser.Start(); CompetitionDetails details = Pages.MyCodaLabPage.CreateCompetition(1)[0]; Pages.CompetitionPage.ClickCompetitionLink(); this.competitionTitle = details.Title; EnterCompetitionDetailsPage(); Pages.CompetitionDetailsPage.ParticipatePage.RegisterForChallange(); Assert.IsTrue(Pages.LoginPage.IsUserNameFiledVisible(), "Control did not prompt for username and password when user tried to register for competition"); } catch (Exception ex) { LogException(ex); throw; } }
private CompetitionPosition[] PositionQualifyingPlayers(CompetitionDetails details, CompetitionPlayer[] qualifyingPlayers) { var qualifyingPositioningEngine = new QualifyingPositioningEngine(); var qualifyingPositioningParameters = new QualifyingPositionParameters { PlayersCount = details.Type.QualifyingPlayersCount, QualifyingCount = details.Type.QualifyingToFinalPlayersCount, Players = (from p in qualifyingPlayers.Take <CompetitionPlayer>(details.Type.QualifyingPlayersCount) select new Simple.SAMS.CompetitionEngine.Player { Id = p.Id, Rank = p.CompetitionRank, AverageScore = p.AverageScore.GetValueOrDefault(), AccumulatedScore = p.AccumulatedScore.GetValueOrDefault() }).ToArray <Simple.SAMS.CompetitionEngine.Player>() }; return(qualifyingPositioningEngine.Evaluate(qualifyingPositioningParameters)); }
private CompetitionDetails GetCompetitionDetails(Func <CompetitionsDataContext, Competition> queryCompetitionDetails, Func <IQueryable <Match>, IQueryable <Match> > filterMatches = null) { var result = default(CompetitionDetails); UseDataContext( dataContext => { dataContext.ObjectTrackingEnabled = false; dataContext.LoadOptions = GetCompetitionsLoadOptions(); var competitionData = queryCompetitionDetails(dataContext); if (competitionData.IsNotNull()) { result = new CompetitionDetails(); MapCompetitionDataToHeader(competitionData, result); result.MainRefereeName = competitionData.MainReferee; result.MainRefereePhone = competitionData.MainRefereePhone; result.Site = competitionData.Site; result.SitePhone = competitionData.SitePhone; var dataPlayers = dataContext.CompetitionPlayers.Where(cp => cp.CompetitionId == competitionData.Id && cp.Player.RowStatus == 0).ToArray().AsEnumerable(); var players = dataPlayers.Select(dataEntity => MapDataCompetitionPlayer(dataEntity, competitionData.Id)); players = SortByRank(players); result.Players = players.ToArray(); var matches = dataContext.Matches.Where(m => m.CompetitionId == competitionData.Id && m.RowStatus == 0); if (filterMatches.IsNotNull()) { matches = filterMatches(matches); } result.Matches = matches.Select(m => m.MapFromData()).ToArray(); } }); return(result); }
public string Generate(CompetitionDetails details, CompetitionSection section) { var name = string.Format("{0}-{1}-{2}-{3}", details.Name, details.Id, Guid.NewGuid(), section); var outputPath = Path.Combine(m_targetPath, name + ".pdf"); var infoPath = Path.Combine(m_targetPath, name + ".pcdf"); var playersPath = Path.Combine(m_targetPath, name + ".players.csv"); var schedulePath = Path.Combine(m_targetPath, name + ".schedule.csv"); var inverter = new HebrewWordInverter(); var info = GetGenerateInfo(details, inverter); var players = details.Players.Where(p => p.Section == section).ToArray(); var matches = details.Matches.Where(m => m.Section == section).ToArray(); SavePlayers(players, playersPath, inverter); SaveSchedule(matches, players, schedulePath); info.DataParticipantsFile = playersPath; info.DataScheduleFile = schedulePath; info.Write(infoPath); GeneratePdf(infoPath, outputPath); return(outputPath); }
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 CompetitionDetails CreateCompetition(string userName) { CompetitionDetails details = new CompetitionDetails(); if (ConfigurationManager.AppSettings["UseUI"] == "1") { if (!Pages.HomePage.GetLoggedInUserName().Contains(userName)) { Pages.HomePage.ClickLogOff(); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN1"], ConfigurationManager.AppSettings["UN1Password"]); } details = Pages.MyCodaLabPage.CreateCompetition(isPublic: true); Pages.HomePage.ClickLogOff(); } else { details = DBUtils.InsertCompetitions(ConfigurationManager.AppSettings["UN1"])[0]; } return(details); }
public void Verify_LearnTheDetailsEdit() { try { Browser.Start(); Pages.LoginPage.Login(); Pages.MyCodaLabPage.ClickMyCodaLabLink(); CompetitionDetails details = Pages.MyCodaLabPage.CreateCompetition(1)[0]; Pages.MyCodaLabPage.SelectCompetitionOptionlink(MyCodaLabPageOps.CompetitionOptionLinks.Edit, details.Title); Pages.MyCodaLabPage.CreatePage.SelectTab(CompetitionCreatePageOps.Tab.Details); string overViewText = StringUtilities.GetRandomPlainString(20); Pages.MyCodaLabPage.CreatePage.DetailsPage.SetTextIntoLDSubTabTextArea(overViewText); Pages.MyCodaLabPage.CreatePage.ClickSave(); Pages.MyCodaLabPage.CreatePage.DetailsPage.SelectLDSubTab(1); string evaluationText = StringUtilities.GetRandomPlainString(20); Pages.MyCodaLabPage.CreatePage.DetailsPage.SetTextIntoLDSubTabTextArea(evaluationText); Pages.MyCodaLabPage.CreatePage.ClickSave(); Pages.MyCodaLabPage.CreatePage.ClickNext(); Pages.MyCodaLabPage.CreatePage.PublishPage.PublishCompetition(); Pages.MyCodaLabPage.CreatePage.ClickFinish(); Pages.MyCodaLabPage.SelectCompetitionOptionlink(MyCodaLabPageOps.CompetitionOptionLinks.Edit, details.Title); Pages.MyCodaLabPage.CreatePage.SelectTab(CompetitionCreatePageOps.Tab.Details); Assert.IsTrue(StringUtilities.CompareStrings(overViewText, Pages.MyCodaLabPage.CreatePage.DetailsPage.GetTextFromLDSubTabTextArea(), true, true), "Text in the overview tab was not as expected"); Pages.MyCodaLabPage.CreatePage.DetailsPage.SelectLDSubTab(1); Assert.IsTrue(StringUtilities.CompareStrings(evaluationText, Pages.MyCodaLabPage.CreatePage.DetailsPage.GetTextFromLDSubTabTextArea(), true, true), "Text in the evaluation tab was not as expected"); } catch (Exception ex) { LogException(ex); throw; } }
private UpdatePlayerPositionInfo[] GetFinalPlayersPositions(CompetitionDetails details) { var items = Enumerable.Empty <UpdatePlayerPositionInfo>(); var orderedMatches = (from m in details.Matches where m.Section == CompetitionSection.Final orderby m.Position select m).Take <MatchHeaderInfo>(details.Type.PlayersCount / 2).ToArray(); var finalPlayers = (from p in details.Players where p.Section == CompetitionSection.Final select p).ToArray <CompetitionPlayer>(); if (details.Type.QualifyingPlayersCount > 0) { finalPlayers = finalPlayers.Take(details.Type.PlayersCount - details.Type.QualifyingToFinalPlayersCount).ToArray(); } if (finalPlayers.Length > 0) { var finalPositions = PositionFinalPlayersInCompetition(details, finalPlayers); items = GetUpdatePlayerPositionInfos(finalPositions, orderedMatches); } return(items.ToArray <UpdatePlayerPositionInfo>()); }
public void Verify_PendingApproval() { try { Browser.Start(); CompetitionDetails details = CreateCompetition(ConfigurationManager.AppSettings["UN1"]); Pages.LoginPage.Login(ConfigurationManager.AppSettings["UN2"], ConfigurationManager.AppSettings["UN2Password"]); Pages.CompetitionPage.ClickCompetitionLink(); Pages.CompetitionPage.SelectCompetition(details.Title); Pages.CompetitionDetailsPage.ParticipatePage.RegisterForChallange(); Pages.MyCodaLabPage.ClickMyCodaLabLink(); Pages.MyCodaLabPage.SelectTab(MyCodaLabPageOps.MyCodaLabTabs.CompetitionIParticipateIn); Assert.IsTrue(StringUtilities.CompareStrings(Pages.MyCodaLabPage.GetParticipantStatus(details.Title), Constants.StaticStrings.MyCodaLabPage.ParticipantPendingApproval, true, true), "Competition status was not as pending in \"Competition I participate in\" page"); } catch (Exception ex) { LogException(ex); throw; } }
public string Generate(CompetitionDetails competition, CompetitionSection section) { var result = string.Empty; var map = new Dictionary <int, Queue <MatchHeaderInfo> >(); var sectionMatches = competition.Matches.Where(m => m.Section == section); foreach (var match in sectionMatches) { var matches = default(Queue <MatchHeaderInfo>); if (map.TryGetValue(match.Round, out matches)) { matches.Enqueue(match); } else { matches = new Queue <MatchHeaderInfo>(); matches.Enqueue(match); map[match.Round] = matches; } } var rounds = map.Keys.Max(); using (var stringWriter = new StringWriter()) using (var htmlWriter = new HtmlTextWriter(stringWriter)) { htmlWriter.RenderBeginTag(HtmlTextWriterTag.Html); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Head); htmlWriter.AddAttribute(HtmlTextWriterAttribute.Href, VirtualPathUtility.ToAbsolute("~/Static/Css/bracket.css")); htmlWriter.AddAttribute(HtmlTextWriterAttribute.Type, "text/css"); htmlWriter.AddAttribute(HtmlTextWriterAttribute.Rel, "stylesheet"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Link); htmlWriter.RenderEndTag(); htmlWriter.RenderEndTag(); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Body); htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "header"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.Write(competition.Name); htmlWriter.RenderEndTag(); if (competition.MainRefereeName.NotNullOrEmpty()) { htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "referee"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.Write(competition.MainRefereeName); if (competition.MainRefereePhone.NotNullOrEmpty()) { htmlWriter.Write(", "); htmlWriter.Write(competition.MainRefereePhone); } htmlWriter.RenderEndTag(); } if (competition.Site.NotNullOrEmpty()) { htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "site"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.Write(competition.Site); if (competition.SitePhone.NotNullOrEmpty()) { htmlWriter.Write(", "); htmlWriter.Write(competition.SitePhone); } htmlWriter.RenderEndTag(); } htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "rounds clearfix"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); foreach (var round in sectionMatches.Select(m => m.Round).Distinct()) { htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "round"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.Write(HtmlExtensions.RoundName(null, round)); htmlWriter.RenderEndTag(); } htmlWriter.RenderEndTag(); var tournamentMatches = sectionMatches.Count(); if (tournamentMatches > 8) { tournamentMatches = ((tournamentMatches / 16) + 1) * 16; } htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "tournament" + tournamentMatches + "-wrap"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.AddAttribute(HtmlTextWriterAttribute.Class, "round6-top winner6"); htmlWriter.RenderBeginTag(HtmlTextWriterTag.Div); htmlWriter.RenderEndTag(); WriteRound(htmlWriter, 6, 0, map); htmlWriter.RenderEndTag(); htmlWriter.RenderEndTag(); htmlWriter.RenderEndTag(); htmlWriter.Flush(); result = stringWriter.ToString(); } return(result); }
public UpdatePlayerPositionInfo[] PositionPlayers(CompetitionDetails details, CompetitionSection section) { var helper = new KnockoutMatchProvisioningEngineHelper(); var engine = new KnockoutCalculationEngine(); var output = engine.Calculate(details.Type.PlayersCount, details.Type.QualifyingToFinalPlayersCount, details.Players.Length); var sectionCodes = section == CompetitionSection.Final ? helper.GenerateMainDrawCodesQueue(output.TotalMainDrawPlayers, output.ActualMainDrawPlayers, details.Type.QualifyingToFinalPlayersCount) : helper.GenerateQualifyingDrawCodes(output.TotalQualifyingPlayers, output.ActualQualifyingPlayers); var sectionPlayers = details.Players.Where(p => p.Section == section); var items = new List <UpdatePlayerPositionInfo>(); if (sectionCodes.Count > 0 && sectionPlayers.Any()) { var map = new Dictionary <string, int>(); foreach (var competitionPlayer in sectionPlayers) { map[sectionCodes.Dequeue()] = competitionPlayer.Id; } var sectionMatches = details.Matches.Where(m => m.Section == section); foreach ( var match in sectionMatches.Where(m => m.Player1Code.NotNullOrEmpty() || m.Player2Code.NotNullOrEmpty()) ) { int playerId; if (match.Player1Code.NotNullOrEmpty()) { if (map.TryGetValue(match.Player1Code, out playerId)) { items.Add(new UpdatePlayerPositionInfo() { MatchId = match.Id, PlayerId = playerId, Position = 0 }); } } if (match.Player2Code.NotNullOrEmpty()) { if (map.TryGetValue(match.Player2Code, out playerId)) { items.Add(new UpdatePlayerPositionInfo() { MatchId = match.Id, PlayerId = playerId, Position = 1 }); } } } } return(items.ToArray()); if (details.Type.QualifyingPlayersCount > 0 && section == CompetitionSection.Qualifying) { items.AddRange(this.GetQualifyingPlayersPositions(details)); } if (section == CompetitionSection.Final) { items.AddRange(this.GetFinalPlayersPositions(details)); } return((from item in items where item.IsNotNull <UpdatePlayerPositionInfo>() select item).ToArray <UpdatePlayerPositionInfo>()); }
public UpdatePlayerPositionInfo AddPlayerToSection(int playerId, CompetitionSection section, CompetitionDetails details) { var result = default(UpdatePlayerPositionInfo); // rounds are in descending order, so first will be the max var maxRound = details.Matches.Where(m => m.Section == section).Max(m => m.Round); var match = details.Matches.FirstOrDefault( m => m.Section == section && m.Round == 1 && (m.Player1.IsNull() || m.Player2.IsNull())); if (match.IsNotNull()) { result = new UpdatePlayerPositionInfo(); result.MatchId = match.Id; result.PlayerId = playerId; result.Position = match.Player1.IsNull() ? 0 : 1; } return(result); }