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)); } }
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 }); }