示例#1
0
        private async Task <DefaultIdentityCommandResponse> CreateFixture(CompetitionEntrantResult result, Entities.Competition competition, CompetitionEvent compEvent, CompetitionEntrant winnerEntrant, CompetitionEntrant loserEntrant)
        {
            var command = new AddPlayerFixtureCommand
            {
                Competition = new CompetitionLookupModel
                {
                    CompetitionID = result.CompetitionID,
                    CompetitionStageLookupMode = CompetitionLookupModel.CompetitionStageLookupModes.Auto
                },
                CompetitionEventID = compEvent.ID,
                Round = new CompetitionRoundLookupModel
                {
                    RoundType       = CompetitionRoundTypes.Final,
                    GameNumber      = 0,
                    CreateIfMissing = true
                },
                Date      = competition.StartDate,
                TotalLegs = 1,
                VenueType = VenueTypes.Neutral,
                Entrant1  = new PlayerFixtureEntrantConfigurationModel
                {
                    Mode      = PlayerFixtureEntrantConfigurationModel.PendingEntrantModes.Manual,
                    EntrantID = winnerEntrant.ID
                },
                Entrant2 = new PlayerFixtureEntrantConfigurationModel
                {
                    Mode      = PlayerFixtureEntrantConfigurationModel.PendingEntrantModes.Manual,
                    EntrantID = loserEntrant.ID
                },
                Reference = "F"
            };
            var commandHandler = this._serviceProvider.GetService <AddPlayerFixtureCommandHandler>();

            return(await commandHandler.Handle(command));
        }
示例#2
0
 public static CompetitionEntrantResultDto ToDto(this CompetitionEntrantResult data)
 {
     return(new CompetitionEntrantResultDto
     {
         ID = data.ID,
         CompetitionName = data.CompetitionName,
         LoserChalks = data.LoserChalks,
         LoserEntrant = data.LoserEntrant.AssembleDto(),
         LoserHandicap = data.LoserHandicap,
         WinnerChalks = data.WinnerChalks,
         WinnerHandicap = data.WinnerHandicap,
         WinnerEntrant = data.WinnerEntrant.AssembleDto(),
         CompetitionID = data.CompetitionID,
         CompetitionRoundTypeID = data.CompetitionRoundTypeID,
         SeasonID = data.SeasonID,
         CompetitionEntrantResultStatusID = data.CompetitionEntrantResultStatusID
     });
 }
        public async Task <DefaultCommandResponse> Handle(AddCompetitionEntrantResultCommand command)
        {
            var status = false;
            DefaultCommandResponse response = new DefaultCommandResponse();

            this._unitOfWork.Begin();
            this._adminUnitOfWork.Begin();

            RecaptchaResponse recaptchaResponse = null;

            try
            {
                this._competition = await this._competitionRepository.GetForUpdate(command.CompetitionID);

                this._entrants = await this._competitionEntrantRepository.GetAll(command.CompetitionID);

                var existingResults = await this._competitionEntrantResultRepository.GetAll(command.CompetitionID);

                if (existingResults.Count > 0)
                {
                    this._validationResult.Errors.Add(new ValidationFailure("ExistingResult", "There has already been a result submitted."));
                }

                if (this._validationResult.IsValid)
                {
                    this._validationResult = await this._validator.ValidateAsync(command);
                }

                if (this._validationResult.IsValid)
                {
                    foreach (var roundResult in command.Rounds)
                    {
                        var data = new CompetitionEntrantResult();
                        data.CompetitionID                    = this._competition.ID;
                        data.SeasonID                         = this._competition.Season.ID;
                        data.CompetitionName                  = this._competition.Name;
                        data.WinnerEntrant                    = this._entrants.Single(x => x.ID == roundResult.Winner.EntrantID);
                        data.LoserEntrant                     = this._entrants.Single(x => x.ID == roundResult.Loser.EntrantID);
                        data.WinnerChalks                     = roundResult.Winner.Score.Chalks;
                        data.WinnerHandicap                   = roundResult.Winner.Score.Handicap;
                        data.LoserChalks                      = roundResult.Loser.Score.Chalks;
                        data.LoserHandicap                    = roundResult.Loser.Score.Handicap;
                        data.CompetitionRoundTypeID           = roundResult.RoundTypeID;
                        data.CompetitionEntrantResultStatusID = CompetitionEntrantResultStatuses.Pending;
                        data.SetAuditFields(this._user.ID);

                        await this._competitionEntrantResultRepository.Save(data);
                    }


                    this._unitOfWork.SoftCommit();
                    this._adminUnitOfWork.SoftCommit();
                }
                else
                {
                    this._unitOfWork.Rollback();
                    this._adminUnitOfWork.Rollback();
                }

                response = DefaultCommandResponse.Create(this._validationResult);
            }
            catch (Exception e)
            {
                this._unitOfWork.Rollback();
                this._adminUnitOfWork.Rollback();
                Console.WriteLine(e);
                throw;
            }

            return(response);
        }