public override async Task <GameResponse> DoPlay(GameRequest request, ServerCallContext context) { _logger.LogInformation($"Player {request.Username} picked {ResultsDao.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 {ResultsDao.ToText(pick.Value)} against {request.Username}."); result.ChallengerPick = pick.Value; result.IsValid = IsValid(pick); result.Result = !result.IsValid ? Result.Player : _gameService.Check(result.UserPick, result.ChallengerPick); _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); } return(result); }
private static bool IsValid(PickDto pick) { if (pick.Value > 4 || pick.Value < 0) { return(false); } if (pick.Text.ToLowerInvariant() != ResultsDao.ToText(pick.Value).ToLowerInvariant()) { return(false); } return(true); }