public AnswerSubmitResult SubmitGuess(int gameId, string guess) { return(Operation(() => { CheckIsUserAuthenticated(); if (!serverManager.IsUserInGame(LoggedUser, gameId)) { throw new Exception("Can't submit a guess to a game you are not in"); } var result = serverManager.SubmitGuess(LoggedUser, gameId, guess); var gameUsers = serverManager.GetGameUsers(gameId); foreach (var user in gameUsers) { if (user.Id == LoggedUser.Id) { continue; } var callback = userCallbacks.First(pair => pair.Key == user.Id).Value; if (result == AnswerSubmitResult.Wrong) { callback.PlayerSubmitedGuess(LoggedUser, guess); } else if (result == AnswerSubmitResult.Right) { callback.PlayerAnsweredCorrectly(LoggedUser, serverManager.GetPlayerGameData(LoggedUser, gameId)); } } return result; })); }