Exemplo n.º 1
0
        public string Manage(MatchFeedModel feedModel, string tournamentId, string homeTeamId, string awayTeamId)
        {
            IEnumerable <int> keys = new List <int>()
            {
                feedModel.Key
            };
            EntitiesByKeyQuery <Match> matchQuery = new EntitiesByKeyQuery <Match>(keys);
            Match match = queryDispatcher.Dispatch <EntitiesByKeyQuery <Match>, IEnumerable <Match> >(matchQuery).FirstOrDefault();

            if (match != null)
            {
                UpdateMatchCommand updateCommand = Mapper.Map <UpdateMatchCommand>(feedModel);
                updateCommand.Id = match.Id;

                return(commandDispatcher.Dispatch <UpdateMatchCommand, string>(updateCommand));
            }

            CreateMatchCommand createCommand = Mapper.Map <CreateMatchCommand>(feedModel);

            createCommand.TournamentId = tournamentId;
            createCommand.HomeTeamId   = homeTeamId;
            createCommand.AwayTeamId   = awayTeamId;

            return(commandDispatcher.Dispatch <CreateMatchCommand, string>(createCommand));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateMatch([FromBody] CreateMatchCommand command)
        {
            command.UserId = UserId;

            var created = await Mediator.Send(command);

            return(Ok(created));
        }
        public async Task <MatchModel> CreateMatch([FromBody] CreateMatchCommand command)
        {
            if (command == null)
            {
                throw new ArgumentException(nameof(command));
            }

            return(await matchService.CreateMatch(command));
        }
        private async Task AddMatch(MatchResponse match, TeamDto homeTeam, TeamDto awayTeam)
        {
            var date = TryParseDate(match.dateEvent, match.strTime);

            var score = Score.CreateNew("Placeholder", TryParseInt(match.intHomeScore), TryParseInt(match.intAwayScore));

            var command = new CreateMatchCommand(match.strEvent, homeTeam.Id, awayTeam.Id, date.GetValueOrDefault(), "Placeholder",
                                                 score, match.strSeason,
                                                 match.idEvent);

            await CommandsExecutor.Execute(command);
        }
Exemplo n.º 5
0
        public void ShouldMatchCommandHaveNotEmptyValues()
        {
            //Arrange
            var command = new CreateMatchCommand
            {
                AwayTeam  = new List <int>(),
                HouseTeam = new List <int>(),
            };

            //Assert
            FluentActions.Invoking(() =>
                                   SendAsync(command)).Should().Throw <ValidationException>();
        }
Exemplo n.º 6
0
        public void Handle(ResetDbCommand message)
        {
            // 1. Clear the relational DB used to track scheduled matches
            _repository.ResetDb();

            // 2. Places two commands to create new matches against MatchSaga
            var cmd1 = new CreateMatchCommand("WP0001", "Frogs", "Sharks");

            EventBus.Send(cmd1);
            var cmd2 = new CreateMatchCommand("WP0002", "Sharks", "Eels");

            EventBus.Send(cmd2);
        }
Exemplo n.º 7
0
        public async Task Handle_GivenInvalidRequest_ShouldThrowForbiddenException()
        {
            // Arrange
            var teamsRepository     = new EfDeletableEntityRepository <Team>(this.dbContext);
            var playWeeksRepository = new EfDeletableEntityRepository <PlayWeek>(this.dbContext);

            var command = new CreateMatchCommand {
                HomeTeamId = 1, AwayTeamId = 4, PlayWeekId = 1, PlayDate = new DateTime(2019, 08, 15), TournamentTableId = 1
            };
            var sut = new CreateMatchCommandHandler(this.deletableEntityRepository, teamsRepository, playWeeksRepository);

            // Act & Assert
            await Should.ThrowAsync <ForbiddenException>(sut.Handle(command, It.IsAny <CancellationToken>()));
        }
Exemplo n.º 8
0
        public async System.Threading.Tasks.Task CreateMatchWithValidInputReturnSuccessTestAsync()
        {
            //Arrange
            Mock <IRepository <Domain.MainBoundleContext.Match> > matchMoqRepository = new Mock <IRepository <Domain.MainBoundleContext.Match> >();

            matchMoqRepository.Setup(m => m.InsertAtomic(It.IsAny <Domain.MainBoundleContext.Match>()))
            .Verifiable();
            Mock <IRepository <Manager> > managerMoqRepository = new Mock <IRepository <Manager> >();

            managerMoqRepository.Setup(m => m.GetByID(It.IsAny <int>()))
            .Returns(new Manager
            {
                Id   = 3,
                Name = "Test",
            });
            Mock <IRepository <Referee> > refereeMoqRepository = new Mock <IRepository <Referee> >();

            refereeMoqRepository.Setup(m => m.GetByID(It.IsAny <int>()))
            .Verifiable();
            Mock <IRepository <Player> > playerMoqRepository = new Mock <IRepository <Player> >();

            playerMoqRepository.Setup(m => m.Get(It.IsAny <bool>()))
            .Verifiable();
            Mock <IRepository <PlayerMatch> > playerMatchMoqRepository = new Mock <IRepository <PlayerMatch> >();

            playerMatchMoqRepository.Setup(m => m.Insert(It.IsAny <PlayerMatch>()))
            .Verifiable();

            var moqUnitOfWork = new Mock <IUnitOfWork>();

            moqUnitOfWork.Setup(uow => uow.MatchRepository).Returns(matchMoqRepository.Object);
            moqUnitOfWork.Setup(uow => uow.ManagerRepository).Returns(managerMoqRepository.Object);
            moqUnitOfWork.Setup(uow => uow.RefereeRepository).Returns(refereeMoqRepository.Object);
            moqUnitOfWork.Setup(uow => uow.PlayerRepository).Returns(playerMoqRepository.Object);
            moqUnitOfWork.Setup(uow => uow.PlayerMatchRepository).Returns(playerMatchMoqRepository.Object);

            var createMatchCommand = new CreateMatchCommand();

            var createMatchCommandHandler = new CreateMatchCommandHandler(moqUnitOfWork.Object);

            // Act
            await createMatchCommandHandler.Handle(createMatchCommand, CancellationToken.None);

            //Assert
            matchMoqRepository.Verify(m => m.InsertAtomic(It.IsAny <Domain.MainBoundleContext.Match>()), Times.Once,
                                      "CreateAsync must be called only once");

            moqUnitOfWork.Verify(m => m.Commit(), Times.Once, "Commit must be called only once");
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Create(CreateMatchCommand command)
        {
            if (!this.ModelState.IsValid)
            {
                var notValidViewModel = await this.Mediator.Send(new GetMatchesForPlayWeekQuery { PlayWeekId = command.PlayWeekId });

                return(this.View("~/Areas/Administration/Views/MatchFixtures/Details.cshtml", notValidViewModel));
            }

            var viewModel = await this.Mediator.Send(command);

            return(this.RedirectToAction(nameof(Details), new GetMatchesForPlayWeekQuery {
                PlayWeekId = command.PlayWeekId
            }));
        }
Exemplo n.º 10
0
        public async Task Handle_GivenValidRequest_ShouldCreateMatch()
        {
            // Arrange
            var teamsRepository     = new EfDeletableEntityRepository <Team>(this.dbContext);
            var playWeeksRepository = new EfDeletableEntityRepository <PlayWeek>(this.dbContext);

            var command = new CreateMatchCommand {
                HomeTeamId = 1, AwayTeamId = 5, PlayWeekId = 1, PlayDate = new DateTime(2019, 08, 15), TournamentTableId = 1
            };
            var sut = new CreateMatchCommandHandler(this.deletableEntityRepository, teamsRepository, playWeeksRepository);

            // Act
            var matchId = await sut.Handle(command, It.IsAny <CancellationToken>());

            // Assert
            matchId.ShouldBeGreaterThan(0);

            var createdMatch = this.dbContext.Matches.SingleOrDefault(x => x.ScheduledDate == new DateTime(2019, 08, 15));

            createdMatch.HomeTeamId.ShouldBe(1);
        }
        public async Task <MatchModel> CreateMatch(CreateMatchCommand command)
        {
            Player winner = await playersApiClient.GetPlayer(command.WinnerId);

            Player loser = await playersApiClient.GetPlayer(command.LoserId);

            PlayersRatings ratings = await ratingApiClient.CalculatePlayersRatings(RatingMapper.Map(winner, loser));

            UpdatePlayerRequest updateWinnerRequest = new UpdatePlayerRequest(winner.Id, winner.Name, ratings.WinnerRating.Rating, ratings.WinnerRating.Deviation, ratings.WinnerRating.Volatility);

            winner = await playersApiClient.UpdatePlayer(updateWinnerRequest);

            UpdatePlayerRequest updateLoserRequest = new UpdatePlayerRequest(loser.Id, loser.Name, ratings.LoserRating.Rating, ratings.LoserRating.Deviation, ratings.LoserRating.Volatility);

            loser = await playersApiClient.UpdatePlayer(updateLoserRequest);

            CreateMatchRequest createMatchRequest = new CreateMatchRequest(winner.Id, loser.Id, command.Score);
            Match match = await matchesApiClient.CreateMatch(createMatchRequest);

            return(MatchMapper.Map(match, new List <Player> {
                winner, loser
            }));
        }
Exemplo n.º 12
0
        public async Task <ActionResult> CreateMatch([FromBody] CreateMatchCommand command)
        {
            var matchId = await _commandHandler.CreateMatch(command);

            return(Created($"{Request.Scheme}://{Request.Host}/Api/Matches/{matchId}", matchId));
        }
 public async Task <ActionResult <int> > Create(CreateMatchCommand command)
 {
     return(await Mediator.Send(command));
 }
Exemplo n.º 14
0
        public async Task <IActionResult> Create([FromBody] CreateMatchCommand command)
        {
            await Mediator.Send(command);

            return(NoContent());
        }
Exemplo n.º 15
0
 public async Task <Response <int> > Post([FromBody] CreateMatchCommand command)
 {
     return(await Mediator.Send(command));
 }