public IEnumerable<GenericMatchDetailQuery> UpdateResults(DateTime fixtureDate) { var tb365Uri = this.fixtureRepository .GetDaysResultsURI(fixtureDate); var webRepository = this.webRepositoryProvider .CreateWebRepository(fixtureDate); var persistedMatches = this.fixtureRepository .GetDaysMatchesWithTeamsTournaments(fixtureDate, "Tennis") .ToList(); var daysResults = webRepository.GetJsonObjects<APIDaysResults>(tb365Uri, s => { return; }); foreach (var result in daysResults) { bool playerAWins = true; Entities.Match persistedMatch; persistedMatch = persistedMatches .FirstOrDefault(x => x.TeamsPlayerA.FirstName == result.WinnerFirstName && x.TeamsPlayerA.Name == result.WinnerSurname && x.TeamsPlayerB.FirstName == result.LoserFirstName && x.TeamsPlayerB.Name == result.LoserSurname); if (persistedMatch == null) { persistedMatch = persistedMatches .FirstOrDefault(x => x.TeamsPlayerA.FirstName == result.LoserFirstName && x.TeamsPlayerA.Name == result.LoserSurname && x.TeamsPlayerB.FirstName == result.WinnerFirstName && x.TeamsPlayerB.Name == result.WinnerSurname); playerAWins = false; } if (persistedMatch == null) { ProgressReporterProvider.Current.ReportProgress( string.Format("No result for {0} {1} vs. {2} {3} @ {4} had no persisted match", result.WinnerFirstName, result.WinnerSurname, result.LoserFirstName, result.LoserSurname, result.TournamentName), ReporterImportance.High, ReporterAudience.Admin); continue; } int playerAScore = 0; int playerBScore = 0; var setsPlayed = ((result.WinnerFirstSetScore.HasValue && result.LoserFirstSetScore.HasValue) ? 1 : 0) + ((result.WinnerSecondSetScore.HasValue && result.LoserSecondSetScore.HasValue) ? 1 : 0) + ((result.WinnerThirdSetScore.HasValue && result.LoserThirdSetScore.HasValue) ? 1 : 0) + ((result.WinnerFourthSetScore.HasValue && result.LoserFourthSetScore.HasValue) ? 1 : 0) + ((result.WinnerFifthSetScore.HasValue && result.LoserFifthSetScore.HasValue) ? 1 : 0); if (setsPlayed >= 1) { playerAScore += (result.WinnerFirstSetScore.Value > result.LoserFirstSetScore ? 1 : 0); playerBScore += (result.WinnerFirstSetScore.Value > result.LoserFirstSetScore ? 0 : 1); } if (setsPlayed >= 2) { playerAScore += (result.WinnerSecondSetScore.Value > result.LoserSecondSetScore ? 1 : 0); playerBScore += (result.WinnerSecondSetScore.Value > result.LoserSecondSetScore ? 0 : 1); } if (setsPlayed >= 3) { playerAScore += (result.WinnerThirdSetScore.Value > result.LoserThirdSetScore ? 1 : 0); playerBScore += (result.WinnerThirdSetScore.Value > result.LoserThirdSetScore ? 0 : 1); } if (setsPlayed >= 4) { playerAScore += (result.WinnerFourthSetScore.Value > result.LoserFourthSetScore ? 1 : 0); playerBScore += (result.WinnerFourthSetScore.Value > result.LoserFourthSetScore ? 0 : 1); } if (setsPlayed >= 5) { playerAScore += (result.WinnerFifthSetScore.Value > result.LoserFifthSetScore ? 1 : 0); playerBScore += (result.WinnerFifthSetScore.Value > result.LoserFifthSetScore ? 0 : 1); } var scoreOutcome = this.fixtureRepository .GetScoreOutcome(playerAScore, playerBScore, playerAWins); int commentID = 1; if (result.LoserRetired) commentID = 2; else if (result.LoserWalkedOver) commentID = 3; //need to check if this already exists var observedOutcome = new ObservedOutcome() { MatchID = persistedMatch.Id, ScoreOutcomeID = scoreOutcome.Id, OutcomeCommentID = commentID }; this.fixtureRepository.AddOrUpdateObservedOutcome(observedOutcome); ProgressReporterProvider.Current.ReportProgress( string.Format("Persisted result for {0} {1} vs. {2} {3} @ {4}", result.WinnerFirstName, result.WinnerSurname, result.LoserFirstName, result.LoserSurname, result.TournamentName), ReporterImportance.Medium, ReporterAudience.Admin); } return this.storedProcRepository .GetGenericMatchDetails(fixtureDate, "Tennis") .ToList(); }
public void AddOrUpdateObservedOutcome(ObservedOutcome observedOutcome) { var persisted = First<ObservedOutcome>(x => x.MatchID == observedOutcome.MatchID); if (persisted == null) { Save<ObservedOutcome>(observedOutcome); } else { persisted.OutcomeCommentID = observedOutcome.OutcomeCommentID; persisted.ScoreOutcomeID = observedOutcome.ScoreOutcomeID; SaveChanges(); } }