public async Task <IActionResult> StartConsultationRequestAsync(StartConsultationRequest request) { try { var room = await _consultationService.GetAvailableConsultationRoomAsync(request.ConferenceId, request.RoomType.MapToDomainEnum()); await _consultationService.ParticipantTransferToRoomAsync(request.ConferenceId, request.RequestedBy, room.Label); return(Accepted()); } catch (ConferenceNotFoundException ex) { _logger.LogError(ex, "Cannot create consultation for conference: {ConferenceId} as the conference does not exist", request.ConferenceId); return(NotFound("Conference does not exist")); } catch (ParticipantNotFoundException ex) { _logger.LogError(ex, "Cannot create consultation with participant: {ParticipantId} as the participant does not exist", request.RequestedBy); return(NotFound("Participant doesn't exist")); } catch (KinlyApiException ex) { _logger.LogError(ex, "Unable to create a consultation room for ConferenceId: {ConferenceId}", request.ConferenceId); return(BadRequest("Consultation room creation failed")); } }
public async Task <IActionResult> StartNewConsultationRequestAsync(StartConsultationRequest request) { try { var room = await _consultationService.CreateNewConsultationRoomAsync(request.ConferenceId); await _consultationService.ParticipantTransferToRoomAsync(request.ConferenceId, request.RequestedBy, room.Label); var response = RoomToDetailsResponseMapper.MapConsultationRoomToResponse(room); return(Ok(response)); } catch (ConferenceNotFoundException ex) { _logger.LogError(ex, "Cannot create consultation for conference: {conferenceId} as the conference does not exist", request.ConferenceId); return(NotFound("Conference does not exist")); } catch (ParticipantNotFoundException ex) { _logger.LogError(ex, "Cannot create consultation with participant: {participantId} as the participant does not exist", request.RequestedBy); return(NotFound("Participant doesn't exist")); } catch (KinlyApiException ex) { _logger.LogError(ex, "Unable to create a consultation room for ConferenceId: {conferenceId}", request.ConferenceId); return(BadRequest("Consultation room creation failed")); } }
private void SerialiseStartConsultationRequest(StartConsultationRequest request) { _context.Uri = ConsultationEndpoints.StartPrivateConsultationRequest; _context.HttpMethod = HttpMethod.Post; var jsonBody = RequestHelper.Serialise(request); _context.HttpContent = new StringContent(jsonBody, Encoding.UTF8, "application/json"); }
private List <ConsultationRoom> CreateTestRooms(StartConsultationRequest request) { var rooms = new List <ConsultationRoom>(); var room1 = new ConsultationRoom(request.ConferenceId, "Judge", request.RoomType.MapToDomainEnum(), false); var room2 = new ConsultationRoom(Guid.NewGuid(), "Waiting", VirtualCourtRoomType.JudgeJOH, false); rooms.Add(room1); rooms.Add(room2); return(rooms); }
public void Setup() { _kinlyApiClient = new Mock <IKinlyApiClient>(); _logger = new Mock <ILogger <ConsultationService> >(); _commandHandler = new Mock <ICommandHandler>(); _queryHandler = new Mock <IQueryHandler>(); _consultationService = new ConsultationService(_kinlyApiClient.Object, _logger.Object, _commandHandler.Object, _queryHandler.Object); SetupTestConference(); _request = InitConsultationRequestForJudge(); _rooms = CreateTestRooms(_request); }
public async Task should_fail_validation_when_values_are_invalid() { var request = new StartConsultationRequest { ConferenceId = Guid.Empty, RequestedBy = Guid.Empty, RoomType = (VirtualCourtRoomType)20 }; var result = await _validator.ValidateAsync(request); result.IsValid.Should().BeFalse(); }
public async Task should_pass_validation() { var request = new StartConsultationRequest { ConferenceId = Guid.NewGuid(), RequestedBy = Guid.NewGuid(), RoomType = VirtualCourtRoomType.JudgeJOH }; var result = await _validator.ValidateAsync(request); result.IsValid.Should().BeTrue(); }
public async Task GivenIHaveAValidStartConsultationRequest() { var conference = await Response.GetResponses <ConferenceDetailsResponse>(_context.Response.Content); var judge = conference.Participants.First(x => x.UserRole == Contract.Enums.UserRole.Judge); var request = new StartConsultationRequest() { ConferenceId = conference.Id, RequestedBy = judge.Id, RoomType = Contract.Enums.VirtualCourtRoomType.JudgeJOH }; SerialiseStartConsultationRequest(request); }