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