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)); } } }
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); } } }