public IHttpActionResult Post(ContactsSearchRequest request) { var contactsList = Business.Contacts.GetAllContacts(); var jsonContacts = JsonConvert.SerializeObject(contactsList); var responseData = JsonConvert.DeserializeObject <ContactsData>(jsonContacts); var response = Search(responseData.Data, request); return(Ok(response)); }
private static ContactsSearchResponse Search(ICollection <Contact> contacts, ContactsSearchRequest request) { var results = FilterContacts(contacts, request.Search.Value).ToList(); var response = new ContactsSearchResponse { Data = PageResults(results, request), Draw = request.Draw, RecordsFiltered = results.Count, RecordsTotal = contacts.Count }; return(response); }
private static IEnumerable <Contact> OrderResults <Contact>(IEnumerable <Contact> results, ContactsSearchRequest request) { if (request.Order == null) { return(results); } var columnIndex = request.Order[0].Column; var sortDirection = request.Order[0].Dir; var columnName = request.Columns[columnIndex].Data; var prop = typeof(Contact).GetProperty(columnName); return(sortDirection == "asc" ? results.OrderBy(x => prop.GetValue(x, null)) : results.OrderByDescending(x => prop.GetValue(x, null))); }
protected static IList <Contact> PageResults <Contact>(IEnumerable <Contact> results, ContactsSearchRequest request) { var skip = request.Start; var pageSize = request.Length; var orderedResults = OrderResults(results, request); return(pageSize > 0 ? orderedResults.Skip(skip).Take(pageSize).ToList() : orderedResults.ToList()); }