public async Task <ActionResult <PersonResponse> > SearchForNonJudgePersonsByContactEmail([FromQuery] string contactEmail) { if (!contactEmail.IsValidEmail()) { ModelState.AddModelError(nameof(contactEmail), $"Please provide a valid {nameof(contactEmail)}"); return(BadRequest(ModelState)); } var personQuery = new GetPersonByContactEmailQuery(contactEmail); var person = await _queryHandler.Handle <GetPersonByContactEmailQuery, Person>(personQuery); if (person == null) { return(NotFound($"Person with {contactEmail} does not exist")); } var hearingsQuery = new GetHearingsByUsernameQuery(person.Username); var hearings = await _queryHandler.Handle <GetHearingsByUsernameQuery, List <VideoHearing> >(hearingsQuery); var judicialHearings = hearings.SelectMany(v => v.Participants.Where(p => p.PersonId == person.Id)) .Any(x => x.HearingRole.UserRole.IsJudge); if (judicialHearings) { return(Unauthorized("Only searches for non Judge persons are allowed")); } var mapper = new PersonToResponseMapper(); var response = mapper.MapPersonToResponse(person); return(Ok(response)); }
public async Task Should_return_null_when_no_person_found() { var query = new GetPersonByContactEmailQuery("*****@*****.**"); var person = await _handler.Handle(query); person.Should().BeNull(); }
public async Task Should_return_person_that_exists() { var seededHearing = await Hooks.SeedVideoHearing(); TestContext.WriteLine($"New seeded video hearing id: {seededHearing.Id}"); var existingPerson = seededHearing.GetParticipants().First().Person; var query = new GetPersonByContactEmailQuery(existingPerson.ContactEmail); var person = await _handler.Handle(query); person.Should().NotBeNull(); person.Should().BeEquivalentTo(existingPerson); }
public async Task <IActionResult> GetPersonByContactEmail(string contactEmail) { if (!contactEmail.IsValidEmail()) { ModelState.AddModelError(nameof(contactEmail), $"Please provide a valid {nameof(contactEmail)}"); return(BadRequest(ModelState)); } var query = new GetPersonByContactEmailQuery(contactEmail); var person = await _queryHandler.Handle <GetPersonByContactEmailQuery, Person>(query); if (person == null) { return(NotFound()); } var mapper = new PersonToResponseMapper(); var response = mapper.MapPersonToResponse(person); return(Ok(response)); }