public async Task SetWalkover(ISetMatchWalkoverRequest request) { short homeChalks = 0; short homeGames = 0; short awayGames = 0; short awayChalks = 0; foreach (var gameConfig in this.Data.MatchFormat.GameVariations) { var calculationEngine = this._gameCalculationEngineFactory.Create(gameConfig.GameCalculationEngineID); if (request.Walkover == Walkover.Home) { homeChalks += calculationEngine.GameScoreTarget; awayChalks += gameConfig.Handicap ?? 0; homeGames++; } else { awayChalks += calculationEngine.GameScoreTarget; homeChalks += gameConfig.Handicap ?? 0; awayGames++; } } var config = await this.GetMatchCalculationEngineConfiguration(); await this._teamMatchCalculationEngine.OverrideAndCalculate(this.Data, homeGames, homeChalks, awayGames, awayChalks, config); this.Data.HomeWalkover = WalkoverHelper.MapHomeWalkoverValue(request.Walkover); this.Data.AwayWalkover = WalkoverHelper.MapAwayWalkoverValue(request.Walkover); }
public Task <bool> IsSatisfiedBy(ITeamResultEngineContext context, ISetMatchWalkoverRequest request, ResultsEngineResponse response) { return(Task.FromResult(true)); }
public async Task <ResultsEngineStatuses> Process(ITeamResultEngineContext context, ISetMatchWalkoverRequest request, ResultsEngineResponse response) { var match = await context.Fixture.GetMatch(request.MatchID); await match.SetWalkover(request); return(ResultsEngineStatuses.Success); }
public Task <ResultsEngineResponse> SetWalkover(ISetMatchWalkoverRequest request) { return(this._setTeamMatchWalkoverAction.Execute(this._context, request)); }
public Task <ResultsEngineResponse> Execute(ITeamResultEngineContext context, ISetMatchWalkoverRequest request) { this._unitOfWork.GuardCheckInTransaction(); var response = new ResultsEngineResponse(); var processors = this._processorFactory.Create(context, request); var status = this._processorExecutor.Execute(context, request, response, processors); response.Status = status; return(Task.FromResult(response)); }
public IList <IProcessor <ITeamResultEngineContext, ISetMatchWalkoverRequest, ResultsEngineResponse> > Create(ITeamResultEngineContext context, ISetMatchWalkoverRequest request) { var list = new List <IProcessor <ITeamResultEngineContext, ISetMatchWalkoverRequest, ResultsEngineResponse> >(); switch (context.CompetitionStage.CompetitionStageFormatID) { case CompetitionStageFormats.SingleLeague: case CompetitionStageFormats.Groups: { list.Add(this._validateMatchStatusProcessor); list.Add(this._handicapCalculationEngineProcessor); list.Add(this._setWalkoverProcessor); list.Add(this._matchResultValidatorProcessor); list.Add(this._fixtureCalculationProcessor); list.Add(this._updateLeagueTableProcessor); list.Add(this._careerTeamStatisticsProcessor); } break; case CompetitionStageFormats.SingleKnockout: { list.Add(this._validateMatchStatusProcessor); list.Add(this._handicapCalculationEngineProcessor); list.Add(this._setWalkoverProcessor); list.Add(this._matchResultValidatorProcessor); list.Add(this._fixtureCalculationProcessor); list.Add(this._careerTeamStatisticsProcessor); list.Add(this._pendingFixtureProcessor); } break; default: { throw new ArgumentOutOfRangeException(); } } return(list); }