Example #1
0
        public async Task <IActionResult> RespondToAdminConsultationRequestAsync(PrivateAdminConsultationRequest request)
        {
            try
            {
                var conference = await GetConference(request.ConferenceId);

                var participant = conference.Participants?.SingleOrDefault(x => x.Id == request.ParticipantId);
                if (participant == null)
                {
                    return(NotFound());
                }

                var mappedRequest = PrivateAdminConsultationRequestMapper.MapToAdminConsultationRequest(request);
                await _videoApiClient.RespondToAdminConsultationRequestAsync(mappedRequest);

                if (request.Answer != ConsultationAnswer.Accepted)
                {
                    return(NoContent());
                }
                var roomType = Enum.Parse <RoomType>(request.ConsultationRoom.ToString());
                var answer   = Enum.Parse <ConsultationAnswer>(request.Answer.ToString());

                await _hubContext.Clients.Group(participant.Username.ToLowerInvariant()).AdminConsultationMessage
                    (conference.Id, roomType, participant.Username.ToLowerInvariant(), answer);

                return(NoContent());
            }
            catch (VideoApiException e)
            {
                return(StatusCode(e.StatusCode, e.Response));
            }
        }
Example #2
0
        public void should_map_to_admin_consultation_request(ConsultationAnswer answer, ApiConsultationRequestAnswer?expectedAnswer)
        {
            var request = Builder <PrivateAdminConsultationRequest> .CreateNew()
                          .With(x => x.ConferenceId     = Guid.NewGuid())
                          .With(x => x.ParticipantId    = Guid.NewGuid())
                          .With(x => x.ConsultationRoom = RoomType.ConsultationRoom1)
                          .With(x => x.Answer           = answer)
                          .Build();

            var result = PrivateAdminConsultationRequestMapper.MapToAdminConsultationRequest(request);

            result.Conference_id.Should().Be(request.ConferenceId);
            result.Participant_id.Should().Be(request.ParticipantId);
            result.Consultation_room.Should().Be(request.ConsultationRoom);
            result.Answer.Should().Be(answer);
        }