public async Task <IActionResult> Health() { var response = new HealthResponse { Version = GetApplicationVersion() }; try { const string username = "******"; var query = new GetUserByUsernameQuery(username); await _queryHandler.Handle <GetUserByUsernameQuery, UserDto>(query); response.TestApiHealth.Successful = true; } catch (Exception ex) { response.TestApiHealth.Successful = false; response.TestApiHealth.ErrorMessage = ex.Message; response.TestApiHealth.Data = ex.Data; } try { await _bookingsApiClient.CheckServiceHealthAsync(); response.BookingsApiHealth.Successful = true; } catch (Exception ex) { response.BookingsApiHealth.Successful = false; response.BookingsApiHealth.ErrorMessage = ex.Message; response.BookingsApiHealth.Data = ex.Data; } try { await _userApiClient.CheckServiceHealthAsync(); response.UserApiHealth.Successful = true; } catch (Exception ex) { response.UserApiHealth.Successful = false; response.UserApiHealth.ErrorMessage = ex.Message; response.UserApiHealth.Data = ex.Data; } try { await _videoApiClient.CheckServiceHealthAsync(); response.VideoApiHealth.Successful = true; } catch (Exception ex) { response.VideoApiHealth.Successful = false; response.VideoApiHealth.ErrorMessage = ex.Message; response.VideoApiHealth.Data = ex.Data; } return(response.TestApiHealth.Successful && response.BookingsApiHealth.Successful && response.UserApiHealth.Successful && response.VideoApiHealth.Successful ? Ok(response) : StatusCode((int)HttpStatusCode.InternalServerError, response)); }