Пример #1
0
		/// <summary>
        /// Gets a list of <see cref="WorkQueue"/> items with specified criteria
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public IList<WorkQueue> FindWorkQueue(WebWorkQueueQueryParameters parameters)
        {
            try
            {
                IList<WorkQueue> list;

                IWebQueryWorkQueue broker = HttpContext.Current.GetSharedPersistentContext().GetBroker<IWebQueryWorkQueue>();
                list = broker.Find(parameters);
                return list;
            }
            catch(Exception e)
            {
                Platform.Log(LogLevel.Error, e, "Unable to retrieve work queue.");
            	return new List<WorkQueue>();
            }
        }
Пример #2
0
		private IList<WorkQueue> InternalSelect(int startRowIndex, int maximumRows, out int resultCount)
		{
		    resultCount = 0;

		    if (maximumRows == 0) return new List<WorkQueue>();

		    if (SearchKeys != null)
		    {
		        IList<WorkQueue> workQueueList = new List<WorkQueue>();
		        foreach (ServerEntityKey key in SearchKeys)
		            workQueueList.Add(WorkQueue.Load(key));

		        resultCount = workQueueList.Count;

		        return workQueueList;
		    }

		    WebWorkQueueQueryParameters parameters = new WebWorkQueueQueryParameters
		                                                 {
		                                                     StartIndex = startRowIndex,
		                                                     MaxRowCount = maximumRows
		                                                 };

		    if (Partition != null)
		        parameters.ServerPartitionKey = Partition.Key;

		    if (!string.IsNullOrEmpty(PatientsName))
		    {
		        string key = PatientsName.Replace("*", "%");
		        key = key.Replace("?", "_");
		        parameters.PatientsName = key;
		    }
		    if (!string.IsNullOrEmpty(PatientId))
		    {
		        string key = PatientId.Replace("*", "%");
		        key = key.Replace("?", "_");
		        parameters.PatientID = key;
		    }
		    if (!string.IsNullOrEmpty(ProcessingServer))
		    {
		        string key = ProcessingServer.Replace("*", "%");
		        key = key.Replace("?", "_");
		        parameters.ProcessorID = key;
		    }

		    if (String.IsNullOrEmpty(ScheduledDate))
		        parameters.ScheduledTime = null;
		    else
		        parameters.ScheduledTime = DateTime.ParseExact(ScheduledDate, DateFormats, null);

		    if (TypeEnums != null && TypeEnums.Length > 0)
		    {
		        string types = "(";
		        if (TypeEnums.Length == 1)
		            types += TypeEnums[0].Enum;
		        else
		        {
		            string separator = "";
		            foreach (WorkQueueTypeEnum typeEnum in TypeEnums)
		            {
		                types += separator + typeEnum.Enum;
		                separator = ",";
		            }
		        }

		        parameters.Type = types + ")";
		    }

		    if (StatusEnums != null && StatusEnums.Length > 0)
		    {
		        string statuses = "(";
		        if (StatusEnums.Length == 1)
		            statuses += StatusEnums[0].Enum;
		        else
		        {
		            string separator = "";
		            foreach (WorkQueueStatusEnum statusEnum in StatusEnums)
		            {
		                statuses += separator + statusEnum.Enum;
		                separator = ",";
		            }
		        }

		        parameters.Status = statuses + ")";
		    }

		    if (PriorityEnum != null)
		        parameters.Priority = PriorityEnum;

		    List<string> groupOIDs = new List<string>();
		    CustomPrincipal user = Thread.CurrentPrincipal as CustomPrincipal;
		    if (user != null)
		    {
                if (!user.IsInRole(ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies))
		        {
		            foreach (var oid in user.Credentials.DataAccessAuthorityGroups)
		                groupOIDs.Add(oid.ToString());

		            parameters.CheckDataAccess = true;
		            parameters.UserAuthorityGroupGUIDs = StringUtilities.Combine(groupOIDs, ",");
		        }
		    }

	        IList<WorkQueue> list = _searchController.FindWorkQueue(parameters);

			resultCount = parameters.ResultCount;

			return list;
		}