Esempio n. 1
0
        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"));
            }
        }
Esempio n. 2
0
        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"));
            }
        }
Esempio n. 3
0
        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");
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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();
        }
Esempio n. 8
0
        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);
        }