Example #1
0
        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();
            }
        }
        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());
        }