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(); }
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()); } }
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()); }
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); }); }
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 })); }
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); }
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); }
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(); }
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(); }
public HomeIndexVM() { ConsultationRequest = new ConsultationRequest(); }
/// <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))); }