public async Task <IActionResult> RemoveParticipantFromHearing(Guid hearingId, Guid participantId) { if (hearingId == Guid.Empty) { ModelState.AddModelError(nameof(hearingId), $"Please provide a valid {nameof(hearingId)}"); return(BadRequest(ModelState)); } var getHearingByIdQuery = new GetHearingByIdQuery(hearingId); var videoHearing = await _queryHandler.Handle <GetHearingByIdQuery, VideoHearing>(getHearingByIdQuery); if (videoHearing == null) { return(NotFound()); } if (participantId == Guid.Empty) { ModelState.AddModelError(nameof(participantId), $"Please provide a valid {nameof(participantId)}"); return(BadRequest(ModelState)); } List <Participant> participants; var query = new GetParticipantsInHearingQuery(hearingId); try { participants = await _queryHandler.Handle <GetParticipantsInHearingQuery, List <Participant> >(query); } catch (HearingNotFoundException) { return(NotFound()); } var participant = participants.FirstOrDefault(x => x.Id == participantId); if (participant == null) { return(NotFound()); } var command = new RemoveParticipantFromHearingCommand(hearingId, participant); await _commandHandler.Handle(command); // ONLY publish this event when Hearing is set for ready for video if (videoHearing.Status == Domain.Enumerations.BookingStatus.Created) { await _eventPublisher.PublishAsync(new ParticipantRemovedIntegrationEvent(hearingId, participantId)); } return(NoContent()); }
public async Task <IActionResult> GetParticipantInHearing(Guid hearingId, Guid participantId) { if (hearingId == Guid.Empty) { ModelState.AddModelError(nameof(hearingId), $"Please provide a valid {nameof(hearingId)}"); return(BadRequest(ModelState)); } if (participantId == Guid.Empty) { ModelState.AddModelError(nameof(participantId), $"Please provide a valid {nameof(participantId)}"); return(BadRequest(ModelState)); } var query = new GetParticipantsInHearingQuery(hearingId); try { var participants = await _queryHandler.Handle <GetParticipantsInHearingQuery, List <Participant> >(query); var participant = participants.FirstOrDefault(x => x.Id == participantId); if (participant == null) { return(NotFound()); } var mapper = new ParticipantToResponseMapper(); var response = mapper.MapParticipantToResponse(participant); return(Ok(response)); } catch (HearingNotFoundException) { return(NotFound()); } }