Ejemplo n.º 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));
            }
        }
Ejemplo n.º 2
0
        public static AdminConsultationRequest MapToAdminConsultationRequest(PrivateAdminConsultationRequest request)
        {
            ConsultationAnswer?answer = Enum.Parse <ConsultationAnswer>(request.Answer.ToString());


            RoomType room = Enum.Parse <RoomType>(request.ConsultationRoom.ToString());

            return(new AdminConsultationRequest
            {
                Conference_id = request.ConferenceId,
                Participant_id = request.ParticipantId,
                Consultation_room = room,
                Answer = answer
            });
        }