Esempio n. 1
0
        public async Task Should_return_error_when_consultation_accepted_but_no_room_is_available()
        {
            var conferenceId = TestConference.Id;
            var requestedBy  = TestConference.GetParticipants()[2];
            var requestedFor = TestConference.GetParticipants()[3];

            VideoPlatformServiceMock
            .Setup(x => x.StartPrivateConsultationAsync(TestConference, requestedBy, requestedFor))
            .ThrowsAsync(new DomainRuleException("Unavailable room", "No consultation rooms available"));

            // make sure no rooms are available
            TestConference.Participants[1].UpdateCurrentRoom(RoomType.ConsultationRoom1);
            TestConference.Participants[4].UpdateCurrentRoom(RoomType.ConsultationRoom2);

            var answer = ConsultationAnswer.Accepted;

            var request = new ConsultationRequest
            {
                ConferenceId = conferenceId,
                RequestedBy  = requestedBy.Id,
                RequestedFor = requestedFor.Id,
                Answer       = answer
            };

            var result = await Controller.HandleConsultationRequestAsync(request);

            var typedResult = (ObjectResult)result;

            typedResult.StatusCode.Should().Be((int)HttpStatusCode.BadRequest);
            ((SerializableError)typedResult.Value).ContainsKeyAndErrorMessage("ConsultationRoom", "No consultation room available");
            VideoPlatformServiceMock.Verify(x =>
                                            x.StartPrivateConsultationAsync(TestConference, requestedBy, requestedFor), Times.Once);
            VideoPlatformServiceMock.VerifyNoOtherCalls();
        }
Esempio n. 2
0
        private void SerialiseConsultationRequest(ConsultationRequest request)
        {
            _context.Uri        = ConsultationEndpoints.HandleConsultationRequest;
            _context.HttpMethod = HttpMethod.Post;
            var jsonBody = RequestHelper.Serialise(request);

            _context.HttpContent = new StringContent(jsonBody, Encoding.UTF8, "application/json");
        }
        public ActionResult CreateConsultation(ConsultationRequest consultationRequest)
        {
            try
            {
                this.StudentService.CreateConsultation(consultationRequest);

                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                return(View());
            }
        }
Esempio n. 4
0
        public async Task <IActionResult> HandleConsultationRequestAsync(ConsultationRequest request)
        {
            _logger.LogDebug("HandleConsultationRequest");
            var getConferenceByIdQuery = new GetConferenceByIdQuery(request.ConferenceId);
            var conference             = await _queryHandler.Handle <GetConferenceByIdQuery, Conference>(getConferenceByIdQuery);

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

            var requestedBy = conference.GetParticipants().SingleOrDefault(x => x.Id == request.RequestedBy);

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

            var requestedFor = conference.GetParticipants().SingleOrDefault(x => x.Id == request.RequestedFor);

            if (requestedFor == null)
            {
                _logger.LogWarning("Unable to find participant request for with id {RequestedFor}", request.RequestedFor);
                return(NotFound());
            }

            var command = new SaveEventCommand(conference.Id, Guid.NewGuid().ToString(), EventType.Consultation,
                                               DateTime.UtcNow, null, null, $"Consultation with {requestedFor.DisplayName}", null)
            {
                ParticipantId = requestedBy.Id
            };
            await _commandHandler.Handle(command);

            try
            {
                await InitiateStartConsultationAsync(conference, requestedBy, requestedFor, request.Answer.GetValueOrDefault());
            }
            catch (DomainRuleException ex)
            {
                _logger.LogError(ex, "No consultation room available for conference");
                ModelState.AddModelError("ConsultationRoom", "No consultation room available");
                return(BadRequest(ModelState));
            }

            return(NoContent());
        }
Esempio n. 5
0
        public void GivenIHaveAValidRequestPrivateConsultationRequest()
        {
            var individual     = _context.Test.ConferenceResponse.Participants.Find(x => x.UserRole.Equals(UserRole.Individual)).Id;
            var representative = _context.Test.ConferenceResponse.Participants
                                 .Find(x => x.UserRole.Equals(UserRole.Representative)).Id;

            var request = new ConsultationRequest()
            {
                ConferenceId = _context.Test.ConferenceResponse.Id,
                RequestedBy  = individual,
                RequestedFor = representative,
                Answer       = ConsultationAnswer.Accepted
            };

            _context.Request = _context.Post(HandleConsultationRequest, request);
        }
        public void CreateConsultation_LectorDoesntExist_NullReferenceException()
        {
            const int WrongLectorId = 1;

            Mock.Get(stRep).Setup(x => x.GetById("1")).Returns(new Student());
            ConsultationRequest consultationRequest = new ConsultationRequest
            {
                LectorId  = WrongLectorId,
                StudentId = 1,
                Date      = DateTime.Now,
                Duration  = 2,
                Topic     = "Math"
            };

            Assert.Throws <NullReferenceException>(() => { studentService.CreateConsultation(consultationRequest); });
        }
Esempio n. 7
0
        public JsonResult RequestConsultation(ConsultationRequest consultationRequest)
        {
            var success = false;

            if (ModelState.IsValid)
            {
                using (var db = new ApplicationDbContext())
                {
                    consultationRequest.DateOfRequest = DateTime.Now;
                    db.ConsultationRequests.Add(consultationRequest);
                    db.SaveChanges();
                    success = true;
                }
            }

            return(Json(new { success = success }));
        }
Esempio n. 8
0
        private ConsultationRequest SetupConsultationRequest(bool withAnswer)
        {
            var request = new ConsultationRequest();

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

            request.ConferenceId = _context.Test.Conference.Id;
            request.RequestedBy  = participants[0].Id;
            request.RequestedFor = participants[1].Id;

            if (withAnswer)
            {
                request.Answer = ConsultationAnswer.Accepted;
            }

            return(request);
        }
        public void CreateConsultation_LectorStudentExist_HappyPath()
        {
            Mock.Get(lcRep).Setup(x => x.GetById("1")).Returns(new Lector());
            Mock.Get(stRep).Setup(x => x.GetById("1")).Returns(new Student());
            ConsultationRequest consultationRequest = new ConsultationRequest
            {
                LectorId  = 1,
                StudentId = 1,
                Date      = DateTime.Now,
                Duration  = 2,
                Topic     = "Math"
            };


            var result = studentService.CreateConsultation(consultationRequest);


            Assert.True(result);
        }
Esempio n. 10
0
        public bool CreateConsultation(ConsultationRequest consultationRequest)
        {
            var student = unitOfWork.Student.GetById(consultationRequest.StudentId.ToString())
                          ?? throw new NullReferenceException($"Student with id = {consultationRequest.StudentId} is missing in system");

            var lector = unitOfWork.Lector.GetById(consultationRequest.LectorId.ToString())
                         ?? throw new NullReferenceException($"Lector with id = {consultationRequest.LectorId} is missing in system");
            var cons = new Consultation
            {
                Duration = consultationRequest.Duration,
                Date     = consultationRequest.Date,
                Topic    = consultationRequest.Topic,
                Student  = student,
                Lector   = lector
            };

            unitOfWork.Consultation.Add(cons);
            return(true);
        }
Esempio n. 11
0
        public async Task Should_return_notfound_when_no_requested_for_participant_is_found()
        {
            var conferenceId = TestConference.Id;
            var requestedFor = TestConference.GetParticipants()[3];

            var answer = ConsultationAnswer.Accepted;

            var request = new ConsultationRequest
            {
                ConferenceId = conferenceId,
                RequestedBy  = Guid.NewGuid(),
                RequestedFor = requestedFor.Id,
                Answer       = answer
            };

            var result = await Controller.HandleConsultationRequestAsync(request);

            var typedResult = (NotFoundResult)result;

            typedResult.Should().NotBeNull();
        }
Esempio n. 12
0
        public async Task Should_raise_notification_to_requester_and_admin_when_consultation_is_accepted()
        {
            var conferenceId = TestConference.Id;
            var requestedBy  = TestConference.GetParticipants()[2];
            var requestedFor = TestConference.GetParticipants()[3];

            var answer = ConsultationAnswer.Accepted;

            var request = new ConsultationRequest
            {
                ConferenceId = conferenceId,
                RequestedBy  = requestedBy.Id,
                RequestedFor = requestedFor.Id,
                Answer       = answer
            };

            await Controller.HandleConsultationRequestAsync(request);

            CommandHandlerMock.Verify(x => x.Handle(It.Is <SaveEventCommand>(s => s.Reason == $"Consultation with {requestedFor.DisplayName}")), Times.Once);
            VideoPlatformServiceMock.Verify(x =>
                                            x.StartPrivateConsultationAsync(TestConference, requestedBy, requestedFor), Times.Once);
            VideoPlatformServiceMock.VerifyNoOtherCalls();
        }
Esempio n. 13
0
 public HomeIndexVM()
 {
     ConsultationRequest = new ConsultationRequest();
 }
Esempio n. 14
0
        /// <summary>
        /// Envia uma requisição de consulta
        /// </summary>
        /// <param name="tid">TID da operação</param>
        /// <returns>Uma instância de Transaction com a resposta da requisição</returns>
        public Transaction consultationRequest(String tid)
        {
            ConsultationRequest request = ConsultationRequest.create(tid, merchant);

            return(TransacaoElement.unserialize(null, sendHttpRequest(serialize(request))));
        }
 public IActionResult GetConsult([FromBody] ConsultationRequest request, [FromServices] IEmailService emailService)
 {
     emailService.SendEmail(_emailSenderConfig.InfoEmail, "Консультация-получить консультацию",
                            $"Имя:{request.Name}Телефон:{request.Phone}");
     return(Json(ApiResponse.Success(true)));
 }