public void Should_map_conference_event_to_callback_event() { var testConference = new Conference { Id = Guid.NewGuid(), HearingId = Guid.NewGuid(), Participants = new List <Participant>() { Builder <Participant> .CreateNew() .With(x => x.Role = Role.Judge).With(x => x.Id = Guid.NewGuid()) .Build(), Builder <Participant> .CreateNew().With(x => x.Role = Role.Individual) .With(x => x.Id = Guid.NewGuid()).Build(), Builder <Participant> .CreateNew().With(x => x.Role = Role.Representative) .With(x => x.Id = Guid.NewGuid()).Build(), Builder <Participant> .CreateNew().With(x => x.Role = Role.Individual) .With(x => x.Id = Guid.NewGuid()).Build(), Builder <Participant> .CreateNew().With(x => x.Role = Role.Representative) .With(x => x.Id = Guid.NewGuid()).Build() } }; var conferenceEventRequest = Builder <ConferenceEventRequest> .CreateNew() .With(x => x.Conference_id = testConference.Id.ToString()) .With(x => x.Participant_id = testConference.Participants[0].Id.ToString()) .With(x => x.Event_type = EventType.Joined) .Build(); var result = CallbackEventMapper.MapConferenceEventToCallbackEventModel(conferenceEventRequest, testConference); result.Should().NotBeNull(); result.TransferFrom.Should().Be(conferenceEventRequest.Transfer_from); result.TransferTo.Should().Be(conferenceEventRequest.Transfer_to); }
public void should_map_callback_to_endpoint_transferred() { var testConference = CreateTestConferenceForEndpointEvent(); var conferenceEventRequest = Builder <ConferenceEventRequest> .CreateNew() .With(x => x.Conference_id = testConference.Id.ToString()) .With(x => x.Participant_id = testConference.Endpoints[0].Id.ToString()) .With(x => x.Event_type = EventType.Transfer) .Build(); var result = CallbackEventMapper.MapConferenceEventToCallbackEventModel(conferenceEventRequest, testConference); result.Should().NotBeNull(); result.EventType.Should().Be(EventType.EndpointTransfer); }
public async Task <IActionResult> UpdateParticipantStatusAsync(Guid conferenceId, UpdateParticipantStatusEventRequest updateParticipantStatusEventRequest) { var conference = await _conferenceCache.GetOrAddConferenceAsync(conferenceId, () => { _logger.LogTrace($"Retrieving conference details for conference: ${conferenceId}"); return(_videoApiClient.GetConferenceDetailsByIdAsync(conferenceId)); }); var username = User.Identity.Name; var participantId = GetIdForParticipantByUsernameInConference(conference, username); var conferenceEventRequest = new ConferenceEventRequest { Conference_id = conferenceId.ToString(), Participant_id = participantId.ToString(), Event_id = Guid.NewGuid().ToString(), Event_type = updateParticipantStatusEventRequest.EventType, Time_stamp_utc = DateTime.UtcNow, Reason = EventTypeReasonMapper.Map(updateParticipantStatusEventRequest.EventType) }; var callbackEvent = CallbackEventMapper.MapConferenceEventToCallbackEventModel(conferenceEventRequest, conference); var handler = _eventHandlerFactory.Get(callbackEvent.EventType); try { await handler.HandleAsync(callbackEvent); } catch (ConferenceNotFoundException) { return(BadRequest()); } try { await _videoApiClient.RaiseVideoEventAsync(conferenceEventRequest); return(NoContent()); } catch (VideoApiException e) { return(StatusCode(e.StatusCode, e.Response)); } }
public async Task <IActionResult> SendHearingEventAsync(ConferenceEventRequest request) { try { _logger.LogTrace("Received callback from Kinly."); _logger.LogTrace($"ConferenceId: {request.Conference_id}, EventType: {request.Event_type}, Participant ID : {request.Participant_id}"); var conferenceId = Guid.Parse(request.Conference_id); var conference = await _conferenceCache.GetOrAddConferenceAsync(conferenceId, () => { _logger.LogTrace($"Retrieving conference details for conference: ${conferenceId}"); return(_videoApiClient.GetConferenceDetailsByIdAsync(conferenceId)); }); var callbackEvent = CallbackEventMapper.MapConferenceEventToCallbackEventModel(request, conference); request.Event_type = Enum.Parse <VAEventType>(callbackEvent.EventType.ToString()); if (callbackEvent.EventType != EventType.VhoCall) { _logger.LogTrace($"Raising video event: ConferenceId: {request.Conference_id}, EventType: {request.Event_type}"); await _videoApiClient.RaiseVideoEventAsync(request); } if (!string.IsNullOrEmpty(request.Phone)) { return(NoContent()); } var handler = _eventHandlerFactory.Get(callbackEvent.EventType); await handler.HandleAsync(callbackEvent); return(NoContent()); } catch (VideoApiException e) { _logger.LogError(e, $"ConferenceId: {request.Conference_id}, ErrorCode: {e.StatusCode}"); return(StatusCode(e.StatusCode, e.Response)); } }