示例#1
0
        public override async Task EnsureUniqueness(Game entity)
        {
            _ = entity ?? throw new ArgumentNullException(nameof(entity));

            var specification = new Game.IsUniqueSpecification(entity);

            var existingGames = await _context.Set <Game>().AnyAsync(specification.SatisfiedBy());

            if (existingGames)
            {
                throw new DomainException(Game.NAME_MUST_UNIQUE);
            }
        }
示例#2
0
        private async Task <Unit> HandleAsync(CreateGame request, CancellationToken cancellationToken)
        {
            var game = Game.Create(request.Name);

            var specification = new Game.IsUniqueSpecification(game, request.Name).SatisfiedBy();

            var anyGame = await _gamesRepository.AnyAsync(specification, cancellationToken);

            if (anyGame)
            {
                throw new ApplicationException(Messages.NameMustUnique);
            }

            await _unitOfWork.Save(default);
示例#3
0
        public async Task <Game> Execute(string name, CancellationToken cancellationToken)
        {
            var game = Game.Create(name);

            var specification = new Game.IsUniqueSpecification(game, name).SatisfiedBy();

            bool anyGame = await _gamesRepository.AnyAsync(specification, cancellationToken);

            if (anyGame)
            {
                throw new DomainException(Game.NAME_MUST_UNIQUE);
            }

            return(game);
        }
示例#4
0
        public async Task Execute(int gameId, string name, CancellationToken cancellationToken)
        {
            var game = await _gamesRepository.Find(gameId, cancellationToken);

            if (game is null)
            {
                throw new DomainException(Game.NOT_FOUND);
            }

            game.SetName(name);

            var specification = new Game.IsUniqueSpecification(game, name).SatisfiedBy();

            var anyGame = await _gamesRepository.AnyAsync(specification, cancellationToken);

            if (anyGame)
            {
                throw new DomainException(Game.NAME_MUST_UNIQUE);
            }
        }
示例#5
0
        private async Task <Unit> HandleAsync(UpdateGame request, CancellationToken cancellationToken)
        {
            var game = await _gamesRepository.Find(request.Id, cancellationToken);

            if (game is null)
            {
                throw new EntityNotFoundException(typeof(Game), request.Id);
            }

            var specification = new Game.IsUniqueSpecification(game, request.Name).SatisfiedBy();

            var anyGame = await _gamesRepository.AnyAsync(specification, cancellationToken);

            if (anyGame)
            {
                throw new ApplicationException(Messages.NameMustUnique);
            }

            game.SetName(request.Name);

            await _unitOfWork.Save(default);