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);
        }
示例#4
0
 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);
        }