public ViewModelRetrieverResult <MessageListModel, MessageListModelError> Get(string storeName, int pageNumber, int pageSize = 100) { ViewModelRetrieverResult <MessageListModel, MessageListModelError> errorResult; IAmAMessageStoreViewer <Message> foundViewer = GetStoreViewer(storeName, out errorResult); if (foundViewer == null) { return(errorResult); } try { var messages = foundViewer.Get(pageSize, pageNumber); var messageListModel = new MessageListModel(messages); return(new ViewModelRetrieverResult <MessageListModel, MessageListModelError>(messageListModel)); } catch (Exception e) { return(new ViewModelRetrieverResult <MessageListModel, MessageListModelError>(MessageListModelError.StoreMessageViewerGetException, e)); } }
public ViewModelRetrieverResult <MessageListModel, MessageListModelError> Filter(string storeName, string searchTerm) { ViewModelRetrieverResult <MessageListModel, MessageListModelError> errorResult; IAmAMessageStoreViewer <Message> foundViewer = GetStoreViewer(storeName, out errorResult); if (foundViewer == null) { return(errorResult); } //in-memory VERY cheap search int pageSize = 5000; int pageNumber = 1; var foundMessages = new List <Message>(); try { IEnumerable <Message> messages; do { messages = foundViewer.Get(pageSize, pageNumber); foundMessages.AddRange(messages.Where(m => m.Body.Value.Contains(searchTerm) || m.Header.Topic.Contains(searchTerm) || m.Header.Bag.Keys.Any(k => k.Contains(searchTerm)) || m.Header.Bag.Values.Any(v => v.ToString().Contains(searchTerm)) || m.Header.TimeStamp.ToString().Contains(searchTerm))); pageNumber++; } while (messages.Count() == pageSize); return(new ViewModelRetrieverResult <MessageListModel, MessageListModelError>(new MessageListModel(foundMessages))); } catch (Exception e) { return(new ViewModelRetrieverResult <MessageListModel, MessageListModelError>(MessageListModelError.StoreMessageViewerGetException, e)); } }