public ActionResult Search(SearchParameters searchParameters)
{
// Serialize sort direction to an enum of SortDirection
SortDirection sortDirection = SortDirection.Ascending;
Enum.TryParse<SortDirection>(searchParameters.SortDirection, out sortDirection);
var searchCriteria = new PersonDocument();
if (searchParameters.SearchCriteria != null && searchParameters.SearchCriteria.Count() > 0)
{
foreach (var searchCriterion in searchParameters.SearchCriteria)
{
if (!string.IsNullOrEmpty(searchCriterion.Value))
{
if (searchCriterion.Key == "PersonID")
searchCriteria.PersonID = Int32.Parse(searchCriterion.Value);
else if (searchCriterion.Key == "FirstName")
searchCriteria.FirstName = searchCriterion.Value;
else if (searchCriterion.Key == "LastName")
searchCriteria.LastName = searchCriterion.Value;
else if (searchCriterion.Key == "PhoneNumber")
searchCriteria.PhoneNumber = searchCriterion.Value;
else if (searchCriterion.Key == "StreetAddress")
searchCriteria.StreetAddress = searchCriterion.Value;
else if (searchCriterion.Key == "City")
searchCriteria.City = searchCriterion.Value;
else if (searchCriterion.Key == "Zip")
searchCriteria.Zip = searchCriterion.Value;
else if (searchCriterion.Key == "State")
searchCriteria.State = searchCriterion.Value;
else if (searchCriterion.Key == "EmailAddress")
searchCriteria.EmailAddress = searchCriterion.Value;
}
}
}
var personsPage = personService.SearchPersons(searchParameters.PageNumber, searchParameters.NumberRecordsPerPage, searchParameters.SortColumn, sortDirection, searchCriteria);
var pageOfListPersonDocuments = new PageOfList<PersonDocument>(personsPage.Data, searchParameters.PageNumber, searchParameters.NumberRecordsPerPage, personsPage.TotalItemCount);
pageOfListPersonDocuments.SearchCriteria = searchParameters.SearchCriteria;
return PartialView(pageOfListPersonDocuments);
}