Exemplo n.º 1
0
        public string CheckQueue(int computerId)
        {
            var queueStatus = new Services.Client.QueueStatus();

            //Check if already part of the queue
            var thisComputerTask = BLL.ActiveImagingTask.GetTask(computerId);

            if (thisComputerTask.Status == "2")
            {
                //Check if the queue is open yet
                var inUse         = BLL.ActiveImagingTask.GetCurrentQueue(thisComputerTask.Type);
                var totalCapacity = Convert.ToInt32(Settings.QueueSize);
                if (inUse < totalCapacity)
                {
                    //queue is open, is this computer next
                    var firstTaskInQueue = BLL.ActiveImagingTask.GetNextComputerInQueue(thisComputerTask.Type);
                    if (firstTaskInQueue.ComputerId == computerId)
                    {
                        ChangeStatusInProgress(computerId);
                        queueStatus.Result   = "true";
                        queueStatus.Position = "0";
                        return(JsonConvert.SerializeObject(queueStatus));
                    }
                    else
                    {
                        //not time for this computer yet
                        queueStatus.Result   = "false";
                        queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId);
                        return(JsonConvert.SerializeObject(queueStatus));
                    }
                }
                else
                {
                    //queue not open yet
                    queueStatus.Result   = "false";
                    queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId);
                    return(JsonConvert.SerializeObject(queueStatus));
                }
            }
            else
            {
                //New computer checking queue for the first time

                var inUse         = BLL.ActiveImagingTask.GetCurrentQueue(thisComputerTask.Type);
                var totalCapacity = Convert.ToInt32(Settings.QueueSize);
                if (inUse < totalCapacity)
                {
                    ChangeStatusInProgress(computerId);

                    queueStatus.Result   = "true";
                    queueStatus.Position = "0";
                    return(JsonConvert.SerializeObject(queueStatus));
                }
                else
                {
                    //place into queue
                    var lastQueuedTask = BLL.ActiveImagingTask.GetLastQueuedTask(thisComputerTask.Type);
                    if (lastQueuedTask == null)
                    {
                        thisComputerTask.QueuePosition = 1;
                    }
                    else
                    {
                        thisComputerTask.QueuePosition = lastQueuedTask.QueuePosition + 1;
                    }
                    thisComputerTask.Status = "2";
                    BLL.ActiveImagingTask.UpdateActiveImagingTask(thisComputerTask);

                    queueStatus.Result   = "false";
                    queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId);
                    return(JsonConvert.SerializeObject(queueStatus));
                }
            }
        }
Exemplo n.º 2
0
        public string CheckQueue(int computerId)
        {
            var queueStatus = new Services.Client.QueueStatus();

            //Check if already part of the queue
            var thisComputerTask = BLL.ActiveImagingTask.GetTask(computerId);
            if (thisComputerTask.Status == "2")
            {
                //Check if the queue is open yet
                var inUse = BLL.ActiveImagingTask.GetCurrentQueue();
                var totalCapacity = Convert.ToInt32(Settings.QueueSize);
                if (inUse < totalCapacity)
                {
                    //queue is open, is this computer next
                    var firstTaskInQueue = BLL.ActiveImagingTask.GetNextComputerInQueue();
                    if (firstTaskInQueue.ComputerId == computerId)
                    {
                        ChangeStatusInProgress(computerId);
                        queueStatus.Result = "true";
                        queueStatus.Position = "0";
                        return JsonConvert.SerializeObject(queueStatus);
                    }
                    else
                    {
                        //not time for this computer yet
                        queueStatus.Result = "false";
                        queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId); 
                        return JsonConvert.SerializeObject(queueStatus);
                    }
                }
                else
                {
                    //queue not open yet
                    queueStatus.Result = "false";
                    queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId);
                    return JsonConvert.SerializeObject(queueStatus);
                }
            }
            else
            {
                //New computer checking queue for the first time

                var inUse = BLL.ActiveImagingTask.GetCurrentQueue();
                var totalCapacity = Convert.ToInt32(Settings.QueueSize);
                if (inUse < totalCapacity)
                {
                    ChangeStatusInProgress(computerId);

                    queueStatus.Result = "true";
                    queueStatus.Position = "0";
                    return JsonConvert.SerializeObject(queueStatus);

                }
                else
                {
                    //place into queue
                    var lastQueuedTask = BLL.ActiveImagingTask.GetLastQueuedTask();
                    if (lastQueuedTask == null)
                        thisComputerTask.QueuePosition = 1;
                    else
                        thisComputerTask.QueuePosition = lastQueuedTask.QueuePosition + 1;
                    thisComputerTask.Status = "2";
                    BLL.ActiveImagingTask.UpdateActiveImagingTask(thisComputerTask);

                    queueStatus.Result = "false";
                    queueStatus.Position = BLL.ActiveImagingTask.GetQueuePosition(computerId);
                    return JsonConvert.SerializeObject(queueStatus);

                }
            }

        }