public async Task Should_return_bad_request_status_if_no_items_in_the_date_list()
        {
            var startDate = new DateTime(2020, 10, 1);
            var endDate   = new DateTime(2020, 10, 1);
            var request   = new MultiHearingRequest {
                StartDate = startDate, EndDate = endDate
            };


            var response = await _controller.CloneHearing(Guid.NewGuid(), request);

            response.Should().BeOfType <BadRequestResult>();
        }
        public async Task <IActionResult> CloneHearing(Guid hearingId, MultiHearingRequest hearingRequest)
        {
            _logger.LogDebug("Attempting to clone hearing {Hearing}", hearingId);
            var publicHolidays = await _publicHolidayRetriever.RetrieveUpcomingHolidays();

            var listOfDates = DateListMapper.GetListOfWorkingDates(hearingRequest.StartDate, hearingRequest.EndDate, publicHolidays);

            if (listOfDates.Count == 0)
            {
                _logger.LogWarning("No working dates provided to clone to");
                return(BadRequest());
            }

            var cloneHearingRequest = new CloneHearingRequest {
                Dates = listOfDates
            };

            try
            {
                _logger.LogDebug("Sending request to clone hearing to Bookings API");
                await _bookingsApiClient.CloneHearingAsync(hearingId, cloneHearingRequest);

                _logger.LogDebug("Successfully cloned hearing {Hearing}", hearingId);
                return(NoContent());
            }
            catch (BookingsApiException e)
            {
                _logger.LogError(e,
                                 "There was a problem cloning the booking. Status Code {StatusCode} - Message {Message}",
                                 e.StatusCode, e.Response);
                if (e.StatusCode == (int)HttpStatusCode.BadRequest)
                {
                    return(BadRequest(e.Response));
                }
                throw;
            }
        }