public Task GetTaskInformation(bool includeTaskDetails)
        {
            Task result = new Task();

            result.ID = this.outputRequest.ID.ToString();
            //result.BoxNumbers = this.outputRequest.;
            if (this.stockOutputMessage == null)
            {
                result.State = this.cancelled ? TaskState.Aborted : TaskState.InProcess;
            }
            else
            {
                result.State = this.OutputStateToTaskState(this.stockOutputMessage.Order.State);
            }
            result.Type = TaskType.Output;

            if (includeTaskDetails)
            {
                if (this.stockOutputMessage != null)
                {
                    foreach (StockOutputOrderItem item in this.stockOutputMessage.Order.Items)
                    {
                        result.OutputPacks.AddRange(item.Packs);
                    }
                }
            }

            return(result);
        }
        public Task GetTaskInformation(Task requestedTask, bool includeTaskDetails)
        {
            SimulatorOutputOrder outputOrder = this.GetOutputOrderByID(requestedTask.ID);

            if (outputOrder != null)
            {
                return(outputOrder.GetTaskInformation(includeTaskDetails));
            }

            return(requestedTask);
        }
        public Task CancelOrder()
        {
            // stop feedback timer
            this.toCompleteTimer.Change(Timeout.Infinite, Timeout.Infinite);

            // order is cancelled
            this.cancelled = true;

            // update UI
            this.DoOutputOrderUpdated();

            Task result = new Task();

            result.ID    = this.outputRequest.ID.ToString();
            result.State = this.stockOutputMessage == null ? TaskState.Cancelled : TaskState.CancelError; // error cancel if order finished.
            result.Type  = TaskType.Output;

            return(result);
        }