public async Task <IActionResult> GetAllHearings()
        {
            _logger.LogDebug("GetAllHearings");

            try
            {
                const int LIMIT = HearingData.GET_HEARINGS_LIMIT;
                var       types = new List <int> {
                    HearingData.GENERIC_CASE_TYPE_ID_FROM_BOOKINGS_API
                };
                var response = await _bookingsApiClient.GetHearingsByTypesAsync(types, null, LIMIT);

                var hearings = new List <BookingsHearingResponse>();
                foreach (var day in response.Hearings)
                {
                    hearings.AddRange(day.Hearings);
                }

                return(Ok(hearings));
            }
            catch (BookingsApiException e)
            {
                return(e.StatusCode == (int)HttpStatusCode.NotFound ? Ok(new List <BookingsHearingResponse>()) : StatusCode(e.StatusCode, e.Response));
            }
        }
        public async Task <List <Guid> > DeleteHearingsByPartialCaseText(DeleteTestHearingDataRequest request)
        {
            request.Limit ??= DEFAULT_LIMIT;

            try
            {
                var caseTypes = new List <int> {
                    HearingData.CACD_CASE_TYPE_ID_FROM_BOOKINGS_API, HearingData.GENERIC_CASE_TYPE_ID_FROM_BOOKINGS_API
                };
                var response = await _bookingsApiClient.GetHearingsByTypesAsync(caseTypes, CURSOR, DEFAULT_LIMIT);

                var hearings = new List <BookingsHearingResponse>();

                foreach (var bookedHearing in response.Hearings)
                {
                    hearings.AddRange(bookedHearing.Hearings);
                }

                return(await DeleteHearings(hearings, request.PartialHearingCaseName));
            }
            catch (BookingsApiException e)
            {
                _logger.LogError(e, "Encountered error '{message}'", e.Message);
                throw;
            }
        }
        public async Task <ActionResult> GetBookingsList(string cursor, int limit = 100)
        {
            if (cursor != null)
            {
                cursor = _encoder.Encode(cursor);
            }

            IEnumerable <string> caseTypes;

            if (_userIdentity.IsAdministratorRole())
            {
                caseTypes = _userIdentity.GetGroupDisplayNames();
            }
            else
            {
                return(Unauthorized());
            }

            try
            {
                var types           = caseTypes ?? Enumerable.Empty <string>();
                var hearingTypesIds = await GetHearingTypesId(types);

                var bookingsResponse = await _bookingsApiClient.GetHearingsByTypesAsync(hearingTypesIds, cursor, limit);

                return(Ok(bookingsResponse));
            }
            catch (BookingsApiException e)
            {
                if (e.StatusCode == (int)HttpStatusCode.BadRequest)
                {
                    return(BadRequest(e.Response));
                }

                throw;
            }
        }