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