public override async Task <GameResponse> DoPlay(GameRequest request, ServerCallContext context) { _logger.LogInformation($"Player {request.Username} picked {PickDto.ToText(request.Pick)} against {request.Challenger}."); var challenger = _challengersService.SelectChallenger(request); var result = new GameResponse() { Challenger = request.Challenger, User = request.Username, UserPick = request.Pick }; var pick = await challenger.Pick(GetContext(context), request.TwitterLogged, request.Username); _logger.LogInformation($"Challenger {result.Challenger} picked {PickDto.ToText(pick.Value)} against {request.Username}."); result.ChallengerPick = pick.Value; result.IsValid = IsValid(pick); result.Result = result.IsValid ? _gameService.Check(result.UserPick, result.ChallengerPick) : Result.Player; _logger.LogInformation($"Result of User {request.Username} vs Challenger {result.Challenger}, winner: {result.Result}"); if (result.IsValid && request.TwitterLogged) { await _resultsDao.SaveMatch(pick, request.Username, request.Pick, result.Result); } if (_playFabService.HasCredentials) { var username = !request.TwitterLogged ? $"${request.Username}" : request.Username; await _playFabService.UpdateStats(username, result.Result == Result.Player); } return(result); }
public override async Task <Empty> Pick(PickRequest request, ServerCallContext context) { var username = GetUsername(request.Username, request.TwitterLogged); var dto = await _repository.SaveMatchPick(request.MatchId, username, request.Pick); if (!string.IsNullOrWhiteSpace(dto.ChallengerMove?.Text) && !string.IsNullOrWhiteSpace(dto.PlayerMove?.Text)) { var result = _gameService.Check(dto.PlayerMove.Value, dto.ChallengerMove.Value); await _playFabService.UpdateStats(dto.PlayerName, result == Result.Player); await _playFabService.UpdateStats(dto.Challenger.Name, result == Result.Challenger); await _repository.SaveMatchResult(request.MatchId, result); } return(new Empty()); }