public WorkOrderTrimmed GetWorkOrder(String at, int deviceId, int workOrderId)
        {
            new AuthSvc().AuthUser(at, -1, deviceId);
            BusinessLayer.WorkOrder       wo = BusinessLayer.WorkOrder.Populate(workOrderId);
            BusinessLayer.WorkApplication wa = BusinessLayer.WorkApplication.Populate(wo.ApplicationId);


            WorkOrderTrimmed wt = new WorkOrderTrimmed();

            wt.ApplicationId     = wo.ApplicationId;
            wt.CommPackageJson   = wo.CommPackageJson;
            wt.DeviceId          = wo.DeviceId;
            wt.ReceiveTime       = wo.ReceiveTime;
            wt.SlaveWorkerId     = wo.SlaveWorkerId;
            wt.SlaveWorkerSubmit = wo.SlaveWorkerSubmit;
            wt.SlaveWorkOrderLastCommunication = wo.SlaveWorkOrderLastCommunication;
            wt.WorkOrderId               = wo.WorkOrderId;
            wt.WorkOrderResultJson       = wo.WorkOrderResultJson;
            wt.WorkOrderStatus           = wo.WorkOrderStatus;
            wt.ComputeAppIntent          = wa.ApplicationWorkIntent;
            wt.ApplicationUIResultIntent = wa.ApplicationUIResultIntent;
            wt.DeviceLocalRequestId      = wo.LocalDeviceId;
            wt.SerialisationTime         = wo.SerialisationTime;
            wt.DeserialisationTime       = wo.DeserialiationTime;

            return(wt);
        }
        public BusinessLayer.WorkOrder CreateWorkOrder(String at, int deviceId, int applicationId, String paramListJson, String backgroundProcessFunction, int localDeviceWORef)
        {
            new AuthSvc().AuthUser(at, -1, deviceId);

            BusinessLayer.WorkApplication wa = BusinessLayer.WorkApplication.Populate(applicationId);
            CommPackage cp = new CommPackage();

            cp.BackgroundProcessClass    = "";
            cp.BackgroundProcessFunction = backgroundProcessFunction;
            cp.ParameterList             = CommPackage.DeserializeParamJson(paramListJson);
            cp.DeviceUIRef          = wa.ApplicationUIResultIntent;
            cp.DeviceLocalRequestId = localDeviceWORef;

            BusinessLayer.WorkOrder wo = BusinessLayer.WorkOrder.CreateWorkOrder(deviceId, applicationId, localDeviceWORef);

            cp.ComputationRequestId = wo.WorkOrderId;
            wo.CommPackageJson      = cp.SerializeJson();
            wo.Save();

            CloudQueues.NewWorkOrderQueueClient.Send(new BrokeredMessage(wo.WorkOrderId));

            return(wo);
        }