Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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));
        }