public ListWorkQueueItemsResponse ListWorkQueueItems(ListWorkQueueItemsRequest request) { var criteria = new WorkQueueItemSearchCriteria(); if (request.Statuses != null && request.Statuses.Count > 0) { criteria.Status.In(CollectionUtils.Map <EnumValueInfo, WorkQueueStatus>(request.Statuses, status => EnumUtils.GetEnumValue <WorkQueueStatus>(status))); } if (request.Types != null && request.Types.Count > 0) { criteria.Type.In(request.Types); } if (request.ScheduledStartTime.HasValue || request.ScheduledEndTime.HasValue) { if (request.ScheduledStartTime.HasValue && request.ScheduledEndTime.HasValue) { criteria.ScheduledTime.Between(request.ScheduledStartTime.Value, request.ScheduledEndTime.Value); } else if (request.ScheduledStartTime.HasValue) { criteria.ScheduledTime.MoreThanOrEqualTo(request.ScheduledStartTime.Value); } else if (request.ScheduledEndTime.HasValue) { criteria.ScheduledTime.LessThanOrEqualTo(request.ScheduledEndTime.Value); } criteria.ScheduledTime.SortAsc(0); } else if (request.ProcessedStartTime.HasValue || request.ProcessedEndTime.HasValue) { if (request.ProcessedStartTime.HasValue && request.ProcessedEndTime.HasValue) { criteria.ProcessedTime.Between(request.ProcessedStartTime.Value, request.ProcessedEndTime.Value); } else if (request.ProcessedStartTime.HasValue) { criteria.CreationTime.MoreThanOrEqualTo(request.ProcessedStartTime.Value); } else if (request.ProcessedEndTime.HasValue) { criteria.ProcessedTime.LessThanOrEqualTo(request.ProcessedEndTime.Value); } criteria.ProcessedTime.SortAsc(0); } else { criteria.CreationTime.SortAsc(0); } var assembler = new WorkQueueItemAssembler(); return(new ListWorkQueueItemsResponse( CollectionUtils.Map <WorkQueueItem, WorkQueueItemSummary>( this.PersistenceContext.GetBroker <IWorkQueueItemBroker>().Find(criteria, request.Page), item => assembler.CreateWorkQueueItemSummary(item, this.PersistenceContext)))); }
public void ApplyFilter() { var request = new ListWorkQueueItemsRequest { Types = _typeSelections, Statuses = _statusSelections }; switch (_selectedTimeFilterOption) { case TimeFilterOptions.Scheduled: request.ScheduledStartTime = _startTime; request.ScheduledEndTime = _endTime; break; case TimeFilterOptions.Processed: request.ProcessedStartTime = _startTime; request.ProcessedEndTime = _endTime; break; } _listRequest = request; GetFirstPage(); }