public List <PeopleSearchResponse> SearchPeople(PeopleSearchRequest request) { var data = _dataReadClient.ReadJsonData(_configuration.DataFile); var result = new List <PeopleSearchResponse>(); if (request.Gender == null) { foreach (var ancestralData in data) { var people = ancestralData.People.Where(n => n.Name.ToLower().Contains(request.Keyword.ToLower())); result.AddRange(from person in people let birthPlace = ancestralData.Places.FirstOrDefault(s => s.Id == person.PlaceId)?.Name select new PeopleSearchResponse(person, birthPlace)); } } else { var gender = request.Gender == Gender.Female ? "F" : "M"; foreach (var ancestralData in data) { var people = ancestralData.People.Where(n => n.Name.ToLower().Contains(request.Keyword.ToLower()) && string.Equals(n.Gender, gender, StringComparison.CurrentCultureIgnoreCase)); result.AddRange(from person in people let birthPlace = ancestralData.Places.FirstOrDefault(s => s.Id == person.PlaceId)?.Name select new PeopleSearchResponse(person, birthPlace)); } } return(result); }
public async Task <IActionResult> Search([FromBody] PeopleSearchRequest peopleSearchRequest) { var searchRequested = SearchRequested.Create(peopleSearchRequest); await this._busControl.Publish(searchRequested); return(Accepted(PeopleSearchResponse.Create(searchRequested.CorrelationId))); }
public void it_should_create_a_search_request() { var sut = new PeopleSearchRequest("firstName", "lastName", "*****@*****.**"); Assert.AreEqual("firstName", sut.FirstName); Assert.AreEqual("lastName", sut.LastName); Assert.AreEqual("*****@*****.**", sut.Email); }
public void SearchPeople_FilterByNameAndGenderMale_Success() { //Arrange var request = new PeopleSearchRequest { Gender = Gender.Male, Keyword = "sam" }; //Act var result = _peopleService.SearchPeople(request); //Assert Assert.NotNull(result); Assert.Single(result); }
public void SearchPeople_FilterByName_Success() { //Arrange var request = new PeopleSearchRequest { Gender = null, Keyword = "sam" }; //Act var result = _peopleService.SearchPeople(request); //Assert Assert.NotNull(result); Assert.Equal(2, result.Count); }
public async Task <IEnumerable <Person> > SearchAsync(PeopleSearchRequest request = null) { request ??= new PeopleSearchRequest { PageSize = PageSize, }; using (var client = CreateElvantoClient("people/search")) { var response = await client.PostAsync(string.Empty, new StringContent(JsonConvert.SerializeObject(request, Formatting.None), Encoding.UTF8, "application/json")).ConfigureAwait(false); await response.EnsureSuccessElvantoAsync().ConfigureAwait(false); return((await response.Content.ReadAsJsonAsync <PeopleResponse>().ConfigureAwait(false))?.PeopleData.People); } }
public IActionResult Get([FromQuery(Name = "keyword")] string keyWord, [FromQuery(Name = "gender")] string gender) { if (string.IsNullOrEmpty(keyWord)) { return(new BadRequestObjectResult(new ResponseError(ErrorCode.KeywordRequired.ToString(), "Search keyword required"))); } var request = new PeopleSearchRequest { Gender = (Gender?)(string.IsNullOrEmpty(gender) ? null : Enum.Parse(typeof(Gender), gender, true)), Keyword = keyWord }; var result = _peopleService.SearchPeople(request); return(Ok(result)); }
public static SearchRequested Create(PeopleSearchRequest peopleSearchRequest) { return(new SearchRequested(peopleSearchRequest)); }
public SearchRequested(PeopleSearchRequest peopleSearchRequest) { this.CorrelationId = Guid.NewGuid(); this.PeopleSearchRequest = peopleSearchRequest; }