Пример #1
0
        private void SerialiseRespondToAdminConsultationRequest(AdminConsultationRequest request)
        {
            _context.Uri        = ConsultationEndpoints.RespondToAdminConsultationRequest;
            _context.HttpMethod = HttpMethod.Post;
            var jsonBody = RequestHelper.Serialise(request);

            _context.HttpContent = new StringContent(jsonBody, Encoding.UTF8, "application/json");
        }
Пример #2
0
        private AdminConsultationRequest SetupRespondToAdminConsultationRequest()
        {
            var request = new AdminConsultationRequest();

            var participants = _context.Test.Conference.GetParticipants().Where(x =>
                                                                                x.UserRole == UserRole.Individual || x.UserRole == UserRole.Representative).ToList();

            request.ConferenceId     = _context.Test.Conference.Id;
            request.ParticipantId    = participants[0].Id;
            request.Answer           = ConsultationAnswer.Accepted;
            request.ConsultationRoom = RoomType.ConsultationRoom1;

            return(request);
        }
Пример #3
0
        public async Task <IActionResult> RespondToAdminConsultationRequestAsync(AdminConsultationRequest request)
        {
            _logger.LogDebug("RespondToAdminConsultationRequest");

            const string modelErrorMessage      = "Response to consultation is missing";
            var          getConferenceByIdQuery = new GetConferenceByIdQuery(request.ConferenceId);
            var          conference             =
                await _queryHandler.Handle <GetConferenceByIdQuery, Conference>(getConferenceByIdQuery);

            if (!request.Answer.HasValue)
            {
                ModelState.AddModelError(nameof(request.Answer), modelErrorMessage);
                return(BadRequest(ModelState));
            }

            if (conference == null)
            {
                _logger.LogWarning("Unable to find conference");
                return(NotFound());
            }

            var participant = conference.GetParticipants().SingleOrDefault(x => x.Id == request.ParticipantId);

            if (participant == null)
            {
                _logger.LogWarning("Unable to find participant request by id");
                return(NotFound());
            }

            if (request.Answer.Value == ConsultationAnswer.Accepted)
            {
                await _videoPlatformService.TransferParticipantAsync(conference.Id, participant.Id,
                                                                     participant.GetCurrentRoom(), request.ConsultationRoom);
            }

            return(NoContent());
        }