public async Task <IActionResult> AcceptChallenge([FromBody] ChallengeAcceptRequest request) { string accessToken = await HttpContext.GetToken(); var session = await sessionService.GetSession(accessToken); if (session == null) { return(Unauthorized(new { message = "Session expired. Please login again." })); } try { var queue = gameQueueService.GetQueue(request.ChallengeId); if (queue == null) { throw new ApplicationException("Invalid Challenge Id"); } var game = await gameService.AcceptChallenge(request.ChallengeId, request.Accept); var challenger = ClientHandler.FindByUserName(queue.Player1); if (challenger != null) { await gameHubContext.Clients.Client(challenger.ConnectionId).ChallengeAccepted(queue.Id, request.Accept, game?.Id); } if (game != null) { return(Ok(game)); } return(NoContent()); } catch (Exception ex) { await log.ErrorAsync("Error in QueueGame()", ex); return(BadRequest(new { title = ex.GetType().ToString(), details = ex.StackTrace, message = ex.Message })); } }