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); }
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); }