Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
            }
        }