public int GetSearchTotal(PersonSearchRequest searchRequest) { var criteria = CreateSearchCriteria(searchRequest); criteria.SetProjection(Projections.RowCount()); return((int)criteria.UniqueResult()); }
public void CanListPeople() { // Establish Context var viewModel = new SearchResultFormViewModel <PersonDto, PersonSearchRequest>(); IList <PersonDto> personSummariesToExpect = new List <PersonDto>(); viewModel.SearchRequest = new PersonSearchRequest(); viewModel.PageResultItems = personSummariesToExpect; var personDto = new PersonDto(); personSummariesToExpect.Add(personDto); var searchRequest = new PersonSearchRequest(); _personSearchManagementService.Expect(r => r.CreateFormViewModel()) .Return(viewModel); // Act ViewResult result = _peopleController.Index().AssertViewRendered(); // Assert result.ViewData.Model.ShouldNotBeNull(); (result.ViewData.Model as SearchResultFormViewModel <PersonDto, PersonSearchRequest>).ShouldNotBeNull(); (result.ViewData.Model as SearchResultFormViewModel <PersonDto, PersonSearchRequest>).PageResultItems.Count. ShouldEqual(1); }
private async Task LoadPerson() { PersonSearchRequest request = new PersonSearchRequest() { FirstName = txtFirstName.Text, LastName = txtLastName.Text, }; if (chkMale.Checked) { request.Gender = "M"; } else if (chkFemale.Checked) { request.Gender = "F"; } else { request.Gender = null; } var list = await _servicePerson.GetAll <List <Person> >(request); dgvPersons.DataSource = list; }
private SearchResultFormViewModel <PersonDto, PersonSearchRequest> LoadSearchResults( PersonSearchRequest searchRequest) { const int entriesPerPage = 20; int offset = entriesPerPage * (searchRequest.CurrentPageNumber - 1); IList <PersonDto> searchResultItems = _personRepository.Search(searchRequest, offset, entriesPerPage); SearchResultFormViewModel <PersonDto, PersonSearchRequest> searchResultFormViewModel = CreateFormViewModel(searchRequest); //searchResultFormViewModel.SearchRequest = searchRequest; searchResultFormViewModel.PageResultItems = searchResultItems; int resultCount = _personRepository.GetSearchTotal(searchRequest); searchResultFormViewModel.TotalResultCount = resultCount; searchResultFormViewModel.CurrentPageNumber = searchRequest.CurrentPageNumber; searchResultFormViewModel.TotalPageCount = resultCount / entriesPerPage; if (resultCount % entriesPerPage > 0) { searchResultFormViewModel.TotalPageCount++; } return(searchResultFormViewModel); }
/// <summary> /// Dispatch a request based on the <see cref="PersonSearchRequest" dataproviders/> /// </summary> /// <param name="personSearchRequest"></param> /// <param name="searchRequestId"></param> /// <returns></returns> public async Task Dispatch(PersonSearchRequest personSearchRequest, Guid searchRequestId) { if (personSearchRequest == null) { throw new ArgumentNullException(nameof(personSearchRequest)); } if (searchRequestId.Equals(default(Guid))) { throw new ArgumentNullException(nameof(searchRequestId)); } if (personSearchRequest.DataProviders == null) { await Task.CompletedTask; return; } foreach (var requestDataProvider in personSearchRequest.DataProviders) { var endpoint = await getEndpointAddress(requestDataProvider.Name); await endpoint.Send <PersonSearchOrdered>(new PeopleController.PersonSearchOrderEvent(searchRequestId, personSearchRequest.FileID) { Person = personSearchRequest }); } }
public virtual void CanGetSearchTotal() { var searchRequest = new PersonSearchRequest(); searchRequest.NameQuery = "zamor"; int results = _personRepository.GetSearchTotal(searchRequest); Assert.That(results == 1); }
public virtual void CanSearch() { var searchRequest = new PersonSearchRequest(); searchRequest.NameQuery = "e"; IList <PersonDto> results = _personRepository.Search(searchRequest, 0, 20); Assert.That(results.Count > 1 && results.Count <= 20); }
public SearchResultFormViewModel <PersonDto, PersonSearchRequest> CreateFormViewModel( PersonSearchRequest searchRequest) { var viewModel = new SearchResultFormViewModel <PersonDto, PersonSearchRequest> { SearchRequest = searchRequest }; searchRequest.Supervisors = _personRepository.GetActiveSupervisors(-1, "LastName", "Asc"); return(viewModel); }
public SearchResultFormViewModel <PersonDto, PersonSearchRequest> CreateFormViewModel() { var searchRequest = new PersonSearchRequest { Supervisors = _personRepository.GetActiveSupervisors(-1, "LastName", "Asc") }; SearchResultFormViewModel <PersonDto, PersonSearchRequest> viewModel = Search(searchRequest); viewModel.SearchRequest = searchRequest; return(viewModel); }
public HttpResponseMessage PersonSearch([FromUri] PersonSearchRequest model) { int rows = 0; List <PersonBase> person = _personService.PersonBaseSearch(model, out rows); SearchResponse <PersonBase> response = new SearchResponse <PersonBase>(); response.Items = person; response.ResultCount = rows; return(Request.CreateResponse(HttpStatusCode.OK, response)); }
public override Task <PersonResponse> GetPersonById(PersonSearchRequest request, ServerCallContext context) { var query = new GetPersonByIdQuery(request.Id); var result = Task.FromResult(_mediater.Send(query)); return(Task.FromResult(new PersonResponse { Id = 1, Firstname = "FirstName", Lastname = "Lastname", })); }
public void With_args_it_should_create() { var sut = new PersonSearchRequest("firstName", "lastName", new DateTime(2001, 1, 12), new List <PersonalIdentifier>(), new List <Address>(), new List <Phone>(), new List <Name>(), new List <RelatedPerson>(), new List <Employment>(), new List <DataProvider>(), "SearchRequestKey"); Assert.AreEqual("firstName", sut.FirstName); Assert.AreEqual("lastName", sut.LastName); if (sut.DateOfBirth != null) { Assert.AreEqual(2001, sut.DateOfBirth.Value.Year); Assert.AreEqual(1, sut.DateOfBirth.Value.Month); Assert.AreEqual(12, sut.DateOfBirth.Value.Day); } }
public void With_args_it_should_create() { var sut = new PersonSearchRequest("firstName", "lastName", new DateTime(2001, 1, 12), new List <SearchApiPersonalIdentifier>(), new List <SearchApiAddress>(), new List <SearchApiPhoneNumber>(), new List <SearchApiName>()); Assert.AreEqual("firstName", sut.FirstName); Assert.AreEqual("lastName", sut.LastName); if (sut.DateOfBirth != null) { Assert.AreEqual(2001, sut.DateOfBirth.Value.Year); Assert.AreEqual(1, sut.DateOfBirth.Value.Month); Assert.AreEqual(12, sut.DateOfBirth.Value.Day); } }
public ActionResult Search(PersonSearchRequest searchRequest) { SearchResultFormViewModel <PersonDto, PersonSearchRequest> formViewModel = null; try { formViewModel = _personSearchManagementService.Search(searchRequest); Session.Add(SEARCH_PARAMETERS, searchRequest); } catch (PreconditionException pde) { TempData[ControllerEnums.GlobalViewDataProperty.PageMessage.ToString()] = pde.Message; formViewModel = _personSearchManagementService.CreateFormViewModel(searchRequest); } return(View("Index", formViewModel)); }
public SearchResultFormViewModel <PersonDto, PersonSearchRequest> Search(PersonSearchRequest searchRequest) { //make sure at least one field set //Check.Require(searchRequest != null, "At least one field is required"); //if (searchRequest.SupervisorId == null && String.IsNullOrEmpty(searchRequest.NameQuery && searchRequest.SId == null)) //{ // Check.Require(1 == 0, "At least one field is required"); //} if (searchRequest.CurrentPageNumber == 0) { searchRequest.CurrentPageNumber = 1; } if (string.IsNullOrEmpty(searchRequest.SortColumn)) { searchRequest.SortColumn = DEFAULT_SORT_COLUMN; searchRequest.SortOrder = DEFAULT_SORT_ORDER; } const int entriesPerPage = 20; int offset = entriesPerPage * (searchRequest.CurrentPageNumber - 1); IList <PersonDto> searchResultItems = _personRepository.Search(searchRequest, offset, entriesPerPage); SearchResultFormViewModel <PersonDto, PersonSearchRequest> searchResultFormViewModel = CreateFormViewModel(searchRequest); searchResultFormViewModel.PageResultItems = searchResultItems; int resultCount = _personRepository.GetSearchTotal(searchRequest); searchResultFormViewModel.TotalResultCount = resultCount; searchResultFormViewModel.CurrentPageNumber = searchRequest.CurrentPageNumber; searchResultFormViewModel.TotalPageCount = resultCount / entriesPerPage; if (resultCount % entriesPerPage > 0) { searchResultFormViewModel.TotalPageCount++; } return(searchResultFormViewModel); }
public ICollection <Name> Resolve(SSG_SearchApiRequest source, PersonSearchRequest destination, ICollection <Name> destMember, ResolutionContext context) { if (source?.SearchRequest?.ApplicantFirstName != null || source?.SearchRequest?.ApplicantLastName != null) { return new List <Name>() { new Name { FirstName = source?.SearchRequest?.ApplicantFirstName, LastName = source?.SearchRequest?.ApplicantLastName, Owner = OwnerType.Applicant } } } ; else { return(null); } }
private async Task SaveForDeepSearch(PersonSearchRequest person, DataProvider dataPartner) { _logger.Log(LogLevel.Information, $"Check if request {person.SearchRequestKey} has an active wave on-going"); _logger.Log(LogLevel.Information, $"In wave for {person.SearchRequestKey} with {dataPartner.Name} - {nameof(dataPartner.SearchSpeedType)} Search"); string cacheKey = person.SearchRequestKey.DeepSearchKey(dataPartner.Name); var waveMetaData = await _cacheService.Get(cacheKey); if (string.IsNullOrEmpty(waveMetaData)) { _logger.Log(LogLevel.Information, $"{person.SearchRequestKey} does not have active wave"); await _cacheService.Save(cacheKey, new WaveSearchData { AllParameter = new List <Person> { person }, NewParameter = null, CurrentWave = 1, DataPartner = dataPartner.Name, NumberOfRetries = dataPartner.NumberOfRetries, TimeBetweenRetries = dataPartner.TimeBetweenRetries, SearchRequestKey = person.SearchRequestKey, SearchSpeed = dataPartner.SearchSpeedType }); _logger.Log(LogLevel.Information, $"{person.SearchRequestKey} saved"); } else { _logger.Log(LogLevel.Information, $"{person.SearchRequestKey} has an active wave"); WaveSearchData metaData = JsonConvert.DeserializeObject <WaveSearchData>(waveMetaData); _logger.Log(LogLevel.Information, $"{person.SearchRequestKey} Current Metadata Wave : {metaData.CurrentWave}"); metaData.CurrentWave++; metaData.NewParameter = null; await _cacheService.Save(cacheKey, metaData); _logger.Log(LogLevel.Information, $"{person.SearchRequestKey} New wave {metaData.CurrentWave} saved"); } await ResetDataPartner(person.SearchRequestKey, dataPartner.Name); }
public List <PersonBase> PersonBaseSearch(PersonSearchRequest model, out int totalRows) { List <PersonBase> list = null; int r = 0; DataProvider.ExecuteCmd(GetConnection, "dbo.Person_Search", inputParamMapper : delegate(SqlParameterCollection paramCollection) { paramCollection.AddWithValue("@SearchStr", model.SearchString); paramCollection.AddWithValue("@CurrentPage", model.CurrentPage); paramCollection.AddWithValue("@ItemsPerPage", model.ItemsPerPage); } , map : delegate(IDataReader reader, short set) { switch (set) { case 0: PersonBase p = new PersonBase(); int ord = 0; //startingOrdinal p.Id = reader.GetSafeInt32(ord++); p.FirstName = reader.GetSafeString(ord++); ord++; p.LastName = reader.GetSafeString(ord++); p.PhoneNumber = reader.GetSafeString(ord++); p.Email = reader.GetSafeString(ord++); ord++; p.PhotoKey = reader.GetSafeString(ord++); r = reader.GetSafeInt32(ord++); if (list == null) { list = new List <PersonBase>(); } list.Add(p); break; } } ); totalRows = r; return(list); }
private ICriteria CreateSearchCriteria(PersonSearchRequest searchRequest) { var criteria = Session.CreateCriteria(typeof(Person)); var name = searchRequest.NameQuery; name += ""; string[] split = name.Split(new[] { ' ', ',', '.', ':' }); foreach (var s in split) { if (s.Trim() != "") { SimpleExpression firstNameExp = Restrictions.Like("FirstName", s, MatchMode.Anywhere); SimpleExpression lastNameExp = Restrictions.Like("LastName", s, MatchMode.Anywhere); criteria.Add(Restrictions.Or(firstNameExp, lastNameExp)); } } if (searchRequest.SupervisorId > 0) { criteria.Add(Restrictions.Eq("Supervisor.Id", searchRequest.SupervisorId)); } //if (searchRequest.Inactive.HasValue) //{ // criteria.Add(Restrictions.Eq("IsInactive", searchRequest.Inactive.Value)); //} var inactive = Restrictions.Eq("IsInactive", false); if (searchRequest.IncludeInactive.HasValue) { if (searchRequest.IncludeInactive.Value == false) { criteria.Add(inactive); } } else { criteria.Add(inactive); } return(criteria); }
public void SSG_SearchApiRequest_should_map_to_PersonSearchRequest_correctly() { SSG_SearchApiRequest sSG_SearchApiRequest = new SSG_SearchApiRequest() { PersonGivenName = "firstName", PersonSurname = "lastName", PersonBirthDate = new DateTime(2002, 2, 2), Identifiers = new SSG_Identifier[] { new SSG_Identifier() { }, new SSG_Identifier() { } }, DataProviders = new SSG_SearchapiRequestDataProvider[] { new SSG_SearchapiRequestDataProvider() { AdaptorName = "ICBC" }, new SSG_SearchapiRequestDataProvider() { AdaptorName = "BC Hydro" } }, SearchRequest = new SSG_SearchRequest() { FileId = "testFileId" } }; PersonSearchRequest personSearchRequest = _mapper.Map <PersonSearchRequest>(sSG_SearchApiRequest); Assert.AreEqual("firstName", personSearchRequest.FirstName); Assert.AreEqual("lastName", personSearchRequest.LastName); Assert.AreEqual(new DateTimeOffset(new DateTime(2002, 2, 2)), personSearchRequest.DateOfBirth); Assert.AreEqual(2, personSearchRequest.Identifiers.Count); Assert.AreEqual(2, personSearchRequest.DataProviders.Count); Assert.AreEqual("testFileId", personSearchRequest.FileID); }
public PersonSearchResponse Search(PersonSearchRequest request) { var response = new PersonSearchResponse(); if (request == null) { throw new ArgumentNullException("request"); } try { response.Results = _personSearchBusiness.Search(request); response.Success = true; } catch (Exception e) { response.Success = false; response.Messages.Add(e.Message); } return(response); }
public IList <PersonDto> Search(PersonSearchRequest searchRequest, int offset, int maxEntries) { ICriteria criteria = CreateSearchCriteria(searchRequest) .CreateAlias("Supervisor", "Supervisor", JoinType.LeftOuterJoin) .CreateAlias("Org", "Org", JoinType.LeftOuterJoin) .SetProjection(Projections.ProjectionList() .Add(Projections.Property("Id"), "Id") .Add(Projections.Property("FirstName"), "FirstName") .Add(Projections.Property("LastName"), "LastName") .Add(Projections.Property("MiddleInitial"), "MiddleInitial") .Add(Projections.Property("PhoneNumber"), "PhoneNumber") .Add(Projections.Property("PhoneExtension"), "PhoneExtension") .Add(Projections.Property("OrgId"), "OrgId") //.Add(Projections.Property("IsSupervisor"), "IsSupervisor") .Add(Projections.Property("SupervisorId"), "SupervisorId") .Add(Projections.Property("UserInitials"), "UserInitials") .Add(Projections.Property("Password"), "Password") .Add(Projections.Property("IsInactive"), "IsInactive") .Add(Projections.Property("EmployeeNumber"), "EmployeeNumber") .Add(Projections.Property("NovellId"), "NovellId") .Add(Projections.Property("Org.Code"), "OrgCode") .Add(Projections.Property("Org.LongDesc"), "OrgLongDesc") //.Add(Projections.Property("Org.ShortDesc"), "OrgShortDesc") .Add(Projections.Property("Supervisor.FirstName"), "SupervisorFirstName") .Add(Projections.Property("Supervisor.MiddleInitial"), "SupervisorInitial") .Add(Projections.Property("Supervisor.LastName"), "SupervisorLastName")); criteria.SetResultTransformer(Transformers.AliasToBean(typeof(PersonDto))); criteria.SetMaxResults(maxEntries).SetFirstResult(offset); if (!string.IsNullOrEmpty(searchRequest.SortColumn)) { criteria.AddOrder(searchRequest.SortOrder.StartsWith("A") ? Order.Asc(searchRequest.SortColumn) : Order.Desc(searchRequest.SortColumn)); } return(criteria.List <PersonDto>()); }
public async Task StartAnotherWave(string searchRequestKey, WaveSearchData wave, Person person, int noOfRetries, int timeBetweenRetries) { _logger.LogInformation($"About to dispatch new wave {wave.CurrentWave} for {wave.DataPartner}"); PersonSearchRequest personSearchRequest = new PersonSearchRequest(person.FirstName, person.LastName, person.DateOfBirth, person.Identifiers, person.Addresses, person.Phones, person.Names, person.RelatedPersons, person.Employments, new List <DataProvider> { new DataProvider { Completed = false, Name = wave.DataPartner, NumberOfRetries = noOfRetries, TimeBetweenRetries = timeBetweenRetries, SearchSpeedType = wave.SearchSpeed } }, searchRequestKey); personSearchRequest.FSOUser = person.FSOUser; await _dispatcher.Dispatch(personSearchRequest, Guid.NewGuid()); }
public void SSG_SearchApiRequest_should_map_to_PersonSearchRequest_correctly() { SSG_SearchApiRequest sSG_SearchApiRequest = new SSG_SearchApiRequest() { PersonGivenName = "firstName", PersonSurname = "lastName", PersonBirthDate = new DateTime(2002, 2, 2), Identifiers = new SSG_Identifier[] { new SSG_Identifier() { }, new SSG_Identifier() { } } }; PersonSearchRequest personSearchRequest = _mapper.Map <PersonSearchRequest>(sSG_SearchApiRequest); Assert.AreEqual("firstName", personSearchRequest.FirstName); Assert.AreEqual("lastName", personSearchRequest.LastName); Assert.AreEqual(new DateTimeOffset(new DateTime(2002, 2, 2)), personSearchRequest.DateOfBirth); Assert.AreEqual(2, personSearchRequest.Identifiers.Count); }
/// <summary> /// Dispatch a request based on the <see cref="PersonSearchRequest" dataproviders/> /// </summary> /// <param name="personSearchRequest"></param> /// <param name="searchRequestId"></param> /// <returns></returns> public async Task Dispatch(PersonSearchRequest personSearchRequest, Guid searchRequestId) { if (personSearchRequest == null) { throw new ArgumentNullException(nameof(personSearchRequest)); } if (searchRequestId.Equals(default(Guid))) { throw new ArgumentNullException(nameof(searchRequestId)); } if (personSearchRequest.DataProviders == null) { await Task.CompletedTask; return; } foreach (var requestDataProvider in personSearchRequest.DataProviders) { if (requestDataProvider.SearchSpeedType == SearchSpeedType.Fast && !personSearchRequest.IsPreScreenSearch) { await SaveForDeepSearch(personSearchRequest, requestDataProvider); } var endpoint = await getEndpointAddress(requestDataProvider.Name); await endpoint.Send <PersonSearchOrdered>(new PeopleController.PersonSearchOrderEvent(searchRequestId, personSearchRequest.SearchRequestKey) { Person = personSearchRequest, TimeBetweenRetries = requestDataProvider.TimeBetweenRetries, NumberOfRetries = requestDataProvider.NumberOfRetries }); } }
public PaginatedData <SimplePerson> GetPersonList(PersonSearchRequest request) { var query = PersonsRepository.GetPersons(request.NameSurname); return(PaginatedData <SimplePerson> .Create(query, request, entityList => Mapper.Map <List <SimplePerson> >(entityList))); }
public async Task <IActionResult> Get([Url] PersonSearchRequest request) { var result = await _store.GetPeopleAsync(request); return(Ok(result)); }
public IActionResult GetPersonList([FromQuery] PersonSearchRequest request) { var persons = PersonService.GetPersonList(request); return(Ok(persons)); }
public List <PersonBase> PersonBaseSearch(PersonSearchRequest model, out int totalRows) { List <PersonBase> list = null; int r = 0; DataProvider.ExecuteCmd(GetConnection, "dbo.Person_Search", inputParamMapper : delegate(SqlParameterCollection paramCollection) { paramCollection.AddWithValue("@SearchStr", model.SearchString); paramCollection.AddWithValue("@CurrentPage", model.CurrentPage); paramCollection.AddWithValue("@ItemsPerPage", model.ItemsPerPage); paramCollection.AddWithValue("@Latitude", model.Latitude); paramCollection.AddWithValue("@Longitude", model.Longitude); paramCollection.AddWithValue("@Radius", model.Radius); paramCollection.AddWithValue("@IsVeteran", model.IsVeteran); paramCollection.AddWithValue("@IsEmployer", model.IsEmployer); paramCollection.AddWithValue("@IsFamilyMember", model.IsFamilyMember); } , map : delegate(IDataReader reader, short set) { switch (set) { case 0: Person p = new Person(); p.StateProvince = new StateProvince(); p.Country = new Country(); int ord = 0; //startingOrdinal p.Id = reader.GetSafeInt32(ord++); p.FirstName = reader.GetSafeString(ord++); ord++; p.LastName = reader.GetSafeString(ord++); p.PhoneNumber = reader.GetSafeString(ord++); p.Email = reader.GetSafeString(ord++); p.JobTitle = reader.GetSafeString(ord++); p.PhotoKey = reader.GetSafeString(ord++); p.IsVeteran = reader.GetSafeBool(ord++); p.IsEmployer = reader.GetSafeBool(ord++); p.IsFamilyMember = reader.GetSafeBool(ord++); p.ProfilePicture = SiteConfig.GetUrlFromFileKey(p.PhotoKey); p.Address1 = reader.GetSafeString(ord++); p.Address2 = reader.GetSafeString(ord++); p.City = reader.GetSafeString(ord++); p.StateProvince.Id = reader.GetSafeInt32(ord++); p.StateProvince.Name = reader.GetSafeString(ord++); p.Country.Id = reader.GetSafeInt32(ord++); p.Country.Name = reader.GetSafeString(ord++); p.Latitude = reader.GetSafeDecimal(ord++); p.Longitude = reader.GetSafeDecimal(ord++); r = reader.GetSafeInt32(ord++); if (list == null) { list = new List <PersonBase>(); } list.Add(p); break; } } ); totalRows = r; return(list); }