public async Task <IActionResult> UpdateHearingDetails(Guid hearingId, [FromBody] UpdateHearingRequest request) { if (hearingId == Guid.Empty) { ModelState.AddModelError(nameof(hearingId), $"Please provide a valid {nameof(hearingId)}"); return(BadRequest(ModelState)); } var result = new UpdateHearingRequestValidation().Validate(request); if (!result.IsValid) { ModelState.AddFluentValidationErrors(result.Errors); return(BadRequest(ModelState)); } var getHearingByIdQuery = new GetHearingByIdQuery(hearingId); var videoHearing = await _queryHandler.Handle <GetHearingByIdQuery, VideoHearing>(getHearingByIdQuery); if (videoHearing == null) { return(NotFound()); } var venue = await GetVenue(request.HearingVenueName); if (venue == null) { ModelState.AddModelError(nameof(request.HearingVenueName), "Hearing venue does not exist"); return(BadRequest(ModelState)); } var cases = MapCase(request.Cases); // use existing video hearing values here when request properties are null request.AudioRecordingRequired ??= videoHearing.AudioRecordingRequired; request.QuestionnaireNotRequired ??= videoHearing.QuestionnaireNotRequired; request.HearingRoomName ??= videoHearing.HearingRoomName; request.OtherInformation ??= videoHearing.OtherInformation; var command = new UpdateHearingCommand(hearingId, request.ScheduledDateTime, request.ScheduledDuration, venue, request.HearingRoomName, request.OtherInformation, request.UpdatedBy, cases, request.QuestionnaireNotRequired.Value, request.AudioRecordingRequired.Value); await _commandHandler.Handle(command); var hearingMapper = new HearingToDetailsResponseMapper(); var updatedHearing = await _queryHandler.Handle <GetHearingByIdQuery, VideoHearing>(getHearingByIdQuery); var response = hearingMapper.MapHearingToDetailedResponse(updatedHearing); if (videoHearing.Status == BookingStatus.Created) { // publish this event when Hearing is set for ready for video await _eventPublisher.PublishAsync(new HearingDetailsUpdatedIntegrationEvent(updatedHearing)); } return(Ok(response)); }
public void OneTimeSetUp() { _validator = new UpdateHearingRequestValidation(); }