public async Task <Unit> Handle(EditGameCommand request, CancellationToken cancellationToken) { var(id, title, maxPlayers, minPlayers, _) = request; _logger.LogInformation($"Getting game {request.Title} with id {request.Id.ToString()}"); var game = await _gamesService.TryGetGameAsync(request.Id, cancellationToken); var isTitleUnique = await _gamesService.IsTitleUniqueAsync(title, id, cancellationToken); _logger.LogInformation($"Checking if {request.Title} is unique"); if (!isTitleUnique) { throw new EntityExistsException(nameof(Game), id); } _logger.LogInformation("Updating game..."); game.Title = title; game.MaxPlayers = maxPlayers; game.MinPlayers = minPlayers; _context.Games.Update(game); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
public async Task <Guid> Handle(AddGameCommand request, CancellationToken cancellationToken) { var isTitleUnique = await _gamesService.IsTitleUniqueAsync(request.Title, null, cancellationToken); if (!isTitleUnique) { _logger.LogError($"Game with title {request.Title} already exists"); throw new EntityExistsException(nameof(Game), request.Title); } var id = _idGenerator.NewGuid(); var game = new Game { Id = id, Title = request.Title, MaxPlayers = request.MaxPlayers, MinPlayers = request.MinPlayers, Added = _dateTimeService.UtcNow }; _logger.LogInformation($"Adding game with id {id.ToString()} title {request.Title}"); await _context.Games.AddAsync(game, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(id); }
public async Task <Unit> Handle(DeleteGameCommand request, CancellationToken cancellationToken) { var game = await _context.Games.FirstOrDefaultAsync(g => g.Id == request.Id, cancellationToken); if (game == null) { _logger.LogError($"Game with id {request.Id} was not found"); throw new NotFoundException(nameof(Game), request.Id); } _logger.LogInformation($"Deleting game with id {request.Id.ToString()}"); _context.Games.Remove(game); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }