public OrderSearchResults SearchOrders(string scope, ISearchCriteria criteria) { OrderGroup[] resultItems; var orderCriteria = criteria as OrderSearchCriteria; System.Threading.Thread.Sleep(100); var query = MockOrderList.Select(a => a); //var query = from item in MockOrderList // select item; int totalCount = MockOrderList.Count; if (orderCriteria != null) { if (orderCriteria.Sort != null) { if (orderCriteria.Sort.GetSort()[0].IsDescending) { query = query.OrderByDescending(x => x.Total); } else { query = query.OrderBy(x => x.Total); } } if (!string.IsNullOrEmpty(orderCriteria.OrderStatus)) { query = query.Where(x => x.Status == orderCriteria.OrderStatus); } if (!string.IsNullOrEmpty(orderCriteria.TrackingNumber)) { query = query.Where(x => x.TrackingNumber.Contains(orderCriteria.TrackingNumber)); } if (!string.IsNullOrEmpty(orderCriteria.CustomerEmail)) { query = query.Where(x => (x.OrderAddresses.Select(b => b.Email.StartsWith(orderCriteria.CustomerEmail)).Count()) > 0); } if (!string.IsNullOrEmpty(orderCriteria.CustomerId)) { query = query.Where(x => x.CustomerId == orderCriteria.CustomerId); } if (!string.IsNullOrEmpty(orderCriteria.Keyword)) { query = query.Where(x => x.TrackingNumber == orderCriteria.Keyword); } totalCount = query.Count(); query = query.Skip(criteria.StartingRecord).Take(criteria.RecordsToRetrieve); } resultItems = query.ToArray(); MockSearchResults searchResults = new MockSearchResults(criteria, resultItems.Length, totalCount); var retVal = new OrderSearchResults(criteria, resultItems, searchResults); return(retVal); }
public OrderSearchResults SearchOrders(string scope, ISearchCriteria criteria) { var results = _searchService.Search(scope, criteria) as SearchResults; if (results != null) { var resultIds = results.GetKeyFieldValues <string>(); var orders = _orderRepository.Orders.Where(x => resultIds.Contains(x.OrderGroupId)).ToArray(); var retVal = new OrderSearchResults(criteria, orders, results); return(retVal); } return(null); }