public async Task <ResultsEngineStatuses> Process(IPlayerResultEngineContext context, IGameResults request, ResultsEngineResponse response)
        {
            bool ok = true;

            if (request.GameResults != null && request.GameResults.Count > 0)
            {
                var matchModel = await context.PlayerFixture.GetMatch(request.MatchID);

                var competition = context.Competition;

                var validationContext = new ValidationContext <List <GameResult> >(request.GameResults);
                validationContext.RootContextData.Add("match", matchModel.Data);
                validationContext.RootContextData.Add("gameCalculationEngineRepository", this._gameCalculationEngineRepository);

                var result = await this._gameResultsValidator.ValidateAsync(validationContext);

                response.SetValidationResult(result);

                // HashSet<int> homePlayers = new HashSet<int>();
                // HashSet<int> awayPlayers = new HashSet<int>();
                //
                // homePlayers.UnionWith(request.GameResults.SelectMany(x => x.HomePlayers.Where(y => y > 0)));
                // awayPlayers.UnionWith(request.GameResults.SelectMany(x => x.AwayPlayers.Where(y => y > 0)));
                //
                // //foreach (var gameResult in request.GameResults)
                // {
                //  if (!homePlayers.SequenceEqual(matchModel.Data.Home.GetPlayerIDs()))
                //  {
                //      response.ValidationResult.Errors.Add(new ValidationFailure(nameof(homePlayers),
                //          "Home players are different to the entrant players on the match."));
                //      ok = false;
                //  }
                //
                //  if (!awayPlayers.SequenceEqual(matchModel.Data.Away.GetPlayerIDs()))
                //  {
                //      response.ValidationResult.Errors.Add(
                //          new ValidationFailure(nameof(awayPlayers), "Away players are different to the entrant players on the match"));
                //      ok = false;
                //  }
                // }
            }

            if (response.ValidationResult.IsValid)
            {
                return(ResultsEngineStatuses.Success);
            }

            return(ResultsEngineStatuses.UnknownError);
        }
예제 #2
0
        public async Task <ResultsEngineStatuses> Process(ITeamResultEngineContext context, IGameResults request, ResultsEngineResponse response)
        {
            if (request.GameResults != null && request.GameResults.Count > 0)
            {
                var match = await context.Fixture.GetMatch(request.MatchID);

                var validationContext = new ValidationContext <List <GameResult> >(request.GameResults);
                validationContext.RootContextData.Add("match", match.Data);
                validationContext.RootContextData.Add("gameCalculationEngineRepository", this._gameCalculationEngineRepository);

                var result = await this._gameResultsValidator.ValidateAsync(validationContext);

                response.SetValidationResult(result);
            }

            if (response.ValidationResult.IsValid)
            {
                return(ResultsEngineStatuses.Success);
            }

            return(ResultsEngineStatuses.ValidationError);
        }