public async Task <IActionResult> HealthAsync() { var response = new HealthCheckResponse { BookingsApiHealth = { Successful = true }, UserApiHealth = { Successful = true }, VideoApiHealth = { Successful = true }, AppVersion = AppVersion.Instance() }; try { await _userApiClient.GetJudgesAsync(); } catch (Exception ex) { _logger.LogError(ex, "Unable to retrieve judges"); if (!(ex is UserApiException)) { response.UserApiHealth.Successful = false; response.UserApiHealth.ErrorMessage = ex.Message; response.UserApiHealth.Data = ex.Data; } } try { await _bookingsApiClient.GetCaseTypesAsync(); } catch (Exception ex) { _logger.LogError(ex, "Unable to retrieve case types"); if (!(ex is BookingsApiException)) { response.BookingsApiHealth.Successful = false; response.BookingsApiHealth.ErrorMessage = ex.Message; response.BookingsApiHealth.Data = ex.Data; } } try { await _videoApiClient.GetExpiredOpenConferencesAsync(); } catch (Exception ex) { _logger.LogError(ex, "Unable to retrieve expired open conferences"); response.VideoApiHealth = HandleVideoApiCallException(ex); } if (!response.UserApiHealth.Successful || !response.BookingsApiHealth.Successful || !response.VideoApiHealth.Successful) { return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } return(Ok(response)); }
public async Task <ActionResult <IList <HearingTypeResponse> > > GetHearingTypes() { var allowedTypes = _identity.GetAdministratorCaseTypes(); var caseTypes = await _bookingsApiClient.GetCaseTypesAsync(); caseTypes = caseTypes.Where(c => allowedTypes.Contains(c.Name)).ToList(); return(caseTypes.SelectMany(caseType => caseType.HearingTypes.Select(hearingType => new HearingTypeResponse { Group = caseType.Name, Code = string.Empty, // not used anymore Id = hearingType.Id, Name = hearingType.Name })).ToList()); }
public async Task <IActionResult> Health() { var response = new Models.HealthCheckResponse { BookingsApiHealth = { Successful = true }, UserApiHealth = { Successful = true }, AppVersion = GetApplicationVersion() }; try { await _userApiClient.GetJudgesAsync(); } catch (Exception ex) { if (!(ex is UserApiException)) { response.UserApiHealth.Successful = false; response.UserApiHealth.ErrorMessage = ex.Message; response.UserApiHealth.Data = ex.Data; } } try { await _bookingsApiClient.GetCaseTypesAsync(); } catch (Exception ex) { if (!(ex is BookingsApiException)) { response.BookingsApiHealth.Successful = false; response.BookingsApiHealth.ErrorMessage = ex.Message; response.BookingsApiHealth.Data = ex.Data; } } if (!response.UserApiHealth.Successful || !response.BookingsApiHealth.Successful) { return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } return(Ok(response)); }
private async Task <List <int> > GetHearingTypesId(IEnumerable <string> caseTypes) { var typeIds = new List <int>(); var types = await _bookingsApiClient.GetCaseTypesAsync(); if (types == null || !types.Any()) { return(typeIds); } foreach (var item in caseTypes) { var caseType = types.FirstOrDefault(s => s.Name == item); if (caseType != null && typeIds.All(s => s != caseType.Id)) { typeIds.Add(caseType.Id); } } return(typeIds); }
public async Task <IActionResult> Health() { var response = new HealthCheckResponse { BookingsApiHealth = { Successful = true }, UserApiHealth = { Successful = true }, VideoApiHealth = { Successful = true }, NotificationApiHealth = { Successful = true }, AppVersion = GetApplicationVersion() }; try { await _userApiClient.GetJudgesAsync(); } catch (UserApiException uaEx) { _logger.LogError(uaEx, "There was a problem getting judgelist from UserAPI on health check. Status Code {StatusCode} - Message {Message}", uaEx.StatusCode, uaEx.Response); } catch (Exception ex) { response.UserApiHealth.Successful = false; response.UserApiHealth.ErrorMessage = ex.Message; response.UserApiHealth.Data = ex.Data; } try { await _bookingsApiClient.GetCaseTypesAsync(); } catch (BookingsApiException baEx) { _logger.LogError(baEx, "There was a problem getting casetypes from BookigAPI on health check. Status Code {StatusCode} - Message {Message}", baEx.StatusCode, baEx.Response); } catch (Exception ex) { response.BookingsApiHealth.Successful = false; response.BookingsApiHealth.ErrorMessage = ex.Message; response.BookingsApiHealth.Data = ex.Data; } try { await _videoApiClient.GetExpiredOpenConferencesAsync(); } catch (VideoApiException baEx) { _logger.LogError(baEx, "There was a problem getting expiered open conferences from VideoApi on health check. " + "Status Code {StatusCode} - Message {Message}", baEx.StatusCode, baEx.Response); } catch (Exception ex) { response.VideoApiHealth.Successful = false; response.VideoApiHealth.ErrorMessage = ex.Message; response.VideoApiHealth.Data = ex.Data; } try { await _notificationApiClient.GetTemplateByNotificationTypeAsync(NotificationType.CreateIndividual); } catch (NotificationApiException naEx) { _logger.LogError(naEx, "There was a problem getting templates on health check. Status Code {StatusCode} - Message {Message}", naEx.StatusCode, naEx.Response); } catch (Exception ex) { response.NotificationApiHealth.Successful = false; response.NotificationApiHealth.ErrorMessage = ex.Message; response.NotificationApiHealth.Data = ex.Data; } if (!response.UserApiHealth.Successful || !response.BookingsApiHealth.Successful || !response.VideoApiHealth.Successful || !response.NotificationApiHealth.Successful) { return(StatusCode((int)HttpStatusCode.InternalServerError, response)); } return(Ok(response)); }