Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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));
        }
Пример #8
0
 public static SearchRequested Create(PeopleSearchRequest peopleSearchRequest)
 {
     return(new SearchRequested(peopleSearchRequest));
 }
Пример #9
0
 public SearchRequested(PeopleSearchRequest peopleSearchRequest)
 {
     this.CorrelationId       = Guid.NewGuid();
     this.PeopleSearchRequest = peopleSearchRequest;
 }