private IEnumerable <WorkItem> GetWorkItems(List <string> types, WorkItemStatusFilter statusFilter, string studyInstanceUid) { IQueryable <WorkItem> query = from w in Context.WorkItems select w; if (types != null && types.Count > 0) { if (types.Count == 1) { query = query.Where(w => types[0] == w.Type); } else { query = query.Where(w => types.Contains(w.Type)); } } statusFilter = statusFilter ?? WorkItemStatusFilter.NotDeleted; query = statusFilter.Apply(query); if (!string.IsNullOrEmpty(studyInstanceUid)) { query = query.Where(w => w.StudyInstanceUid == studyInstanceUid); } query = query.OrderBy(w => w.ProcessTime); query = query.OrderBy(w => w.Priority); return(query.AsEnumerable()); }
public IEnumerable <WorkItem> GetWorkItems(string type, WorkItemStatusFilter statusFilter, string studyInstanceUid) { List <string> types = !String.IsNullOrEmpty(type) ? new List <string>(new[] { type }) : null; return(GetWorkItems(types, statusFilter, studyInstanceUid)); }
/// <summary> /// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/> /// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running). /// </summary> /// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param> /// <param name="priority">The priority of the workitem to compare with.</param> /// <param name="statusFilter">A filter for the work item status.</param> /// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param> /// <param name="workItemTypes">The work item type(s) of the items to be returned. Can be null.</param> /// <returns></returns> public IEnumerable <WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, params string[] workItemTypes) { IQueryable <WorkItem> query = from w in Context.WorkItems select w; query = query.Where(w => w.ScheduledTime < DateTime.Now); query = query.Where(w => (w.ScheduledTime < scheduledTime && w.Priority <= priority) || w.Priority < priority); statusFilter = statusFilter ?? WorkItemStatusFilter.Active; query = statusFilter.Apply(query); if (!string.IsNullOrEmpty(studyInstanceUid)) { query = query.Where(w => w.StudyInstanceUid == studyInstanceUid); } if (workItemTypes != null && workItemTypes.Length > 0) { if (workItemTypes.Length == 1) { query = query.Where(w => workItemTypes[0] == w.Type); } else { query = query.Where(w => workItemTypes.Contains(w.Type)); } } query = query.OrderBy(w => w.ScheduledTime); query = query.OrderBy(w => w.Priority); return(query.AsEnumerable()); }
public IEnumerable <WorkItem> GetWorkItems(WorkItemConcurrency concurrency, WorkItemStatusFilter statusFilter, string studyInstanceUid) { return(GetWorkItems(concurrency.GetWorkItemTypes(), statusFilter, studyInstanceUid)); }
/// <summary> /// Get the WorkItems scheduled before <paramref name="scheduledTime"/> for <paramref name="studyInstanceUid"/> /// and/or that are a higher priority and have not yet terminated (e.g. Waiting to run, or actively running). /// </summary> /// <param name="scheduledTime">The scheduled time to get related WorkItems for.</param> /// <param name="priority">The priority of the workitem to compare with.</param> /// <param name="statusFilter">A filter for the work item status.</param> /// <param name="studyInstanceUid">The Study Instance UID to search for matching WorkItems. Can be null.</param> /// <param name="concurrency">The concurrency type of the items to be returned.</param> /// <returns></returns> public IEnumerable <WorkItem> GetWorkItemsScheduledBeforeOrHigherPriority(DateTime scheduledTime, WorkItemPriorityEnum priority, WorkItemStatusFilter statusFilter, string studyInstanceUid, WorkItemConcurrency concurrency) { return(GetWorkItemsScheduledBeforeOrHigherPriority(scheduledTime, priority, statusFilter, studyInstanceUid, concurrency.GetWorkItemTypes().ToArray())); }