public int GetPalletId_Return(String dataReq)
        {
            PalletINF palletInF      = new PalletINF();
            int       palletId       = -1;
            String    collectionData = RequestDataProcedure(dataReq, Global_Object.url + "buffer/getListBufferReturn");

            if (collectionData.Length > 0)
            {
                try
                {
                    JArray results = JArray.Parse(collectionData);
                    foreach (var result in results)
                    {
                        if (result["pallets"].Count() > 0)
                        {
                            var palletInfo = result["pallets"][0];
                            palletId = (int)palletInfo["palletId"];
                            break;
                        }
                    }
                }
                catch { }
            }
            return(palletId);
        }
        public PalletINF GetRowBayPalletPlaned(String dataRequest, int palletId_P)
        {
            PalletINF palletINF = new PalletINF();

            try
            {
                String collectionData = RequestDataProcedure(dataRequest, Global_Object.url + "plan/getListPlanPallet");
                if (collectionData.Length > 0)
                {
                    JArray results = JArray.Parse(collectionData);
                    foreach (var result in results)
                    {
                        int temp_planId = (int)result["planId"];
                        {
                            foreach (var buffer in result["buffers"])
                            {
                                int bufferId = (int)buffer["bufferId"];
                                if (buffer["pallets"].Count() > 0)
                                {
                                    foreach (var palletInfo in buffer["pallets"])
                                    {
                                        int bay      = (int)palletInfo["bay"];
                                        int row      = (int)palletInfo["row"];
                                        int palletId = (int)palletInfo["palletId"];
                                        if (palletId == palletId_P)
                                        {
                                            palletINF.palletId   = palletId;
                                            palletINF.bay        = bay;
                                            palletINF.row        = row;
                                            palletINF.ofBufferId = bufferId;

                                            return(palletINF);
                                        }
                                    }
                                }
                                else
                                {
                                    continue;
                                }
                            }
                            break;
                        }
                    }
                }
            }
            catch
            {
                Console.WriteLine("Error Front Line");
            }
            return(null);
        }
        public PalletINF GetPalletId(String dataReq)
        {
            PalletINF palletINF      = new PalletINF();
            int       palletId       = -1;
            String    collectionData = RequestDataProcedure(dataReq, Global_Object.url + "plan/getListPlanPallet");

            if (collectionData.Length > 0)
            {
                try
                {
                    JArray results = JArray.Parse(collectionData);
                    foreach (var result in results)
                    {
                        foreach (var buffer in result["buffers"])
                        {
                            int     bufferId      = (int)buffer["bufferId"];
                            String  bufferDataStr = (String)buffer["bufferData"];
                            JObject stuffBData    = JObject.Parse(bufferDataStr);
                            bool    canOpEdit     = (bool)stuffBData["canOpEdit"];
                            if (canOpEdit) // buffer có edit nên bỏ qua lý do bởi buffer có edit nằm gần các máy
                            {
                                continue;
                            }
                            var bufferResults = buffer;
                            var palletInfo    = bufferResults["pallets"][0];
                            int bay           = (int)palletInfo["bay"];
                            int row           = (int)palletInfo["row"];
                            palletId = (int)palletInfo["palletId"];
                            JObject stuff = JObject.Parse((String)palletInfo["dataPallet"]);
                            int     bayId = (int)stuff["bayId"];
                            palletINF.palletId   = palletId;
                            palletINF.bayId      = bayId;
                            palletINF.bay        = bay;
                            palletINF.row        = row;
                            palletINF.ofBufferId = bufferId;
                            return(palletINF);
                        }
                    }
                }
                catch { }
            }
            return(null);
        }
        public OrderItem Gettask()
        {
            OrderItem item     = null;
            int       palletId = -1;

            {
                onFlagBusyGetTask = true;
                if (deviceItemsList.Count > 0)
                {
                    try
                    {
                        item = deviceItemsList[0].GetOrder();
                        if (item == null)
                        {
                            return(null);
                        }

                        switch (item.typeReq)
                        {
                        case TyeRequest.TYPEREQUEST_BUFFER_TO_MACHINE:
                        {
                            if (item.onAssiged == false)
                            {
                                PalletINF palletIFBM = GetPalletId(item.dataRequest);
                                if (palletIFBM != null)
                                {
                                    palletId = palletIFBM.palletId;
                                    dynamic product = new JObject();
                                    UpdatePalletStateToHold(palletId, item);
                                    product.timeWorkId      = item.timeWorkId;
                                    product.activeDate      = item.activeDate;
                                    product.productId       = item.productId;
                                    product.productDetailId = item.productDetailId;
                                    // chu y sua
                                    product.palletStatus = PalletStatus.H.ToString();         // W
                                    item.dataRequest     = product.ToString();
                                    item.palletId_H      = palletId;
                                    item.palletBay       = palletIFBM.bay;
                                    item.palletRow       = palletIFBM.row;
                                    item.bufferId        = palletIFBM.ofBufferId;
                                    item.bayId           = palletIFBM.bayId;
                                    item.onAssiged       = true;
                                    if (checkRobotSameBayId(item.bayId))
                                    {
                                        return(null);
                                    }
                                    else
                                    {
                                        return(item);
                                    }
                                }
                                else
                                {
                                    item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                    deviceItemsList[0].RemoveOrder(item);
                                    return(null);
                                }
                            }
                            else
                            {
                                if (checkRobotSameBayId(item.bayId))
                                {
                                    return(null);
                                }
                                else
                                {
                                    return(item);
                                }
                            }
                        }

                        case TyeRequest.TYPEREQUEST_WMS_RETURN_PALLET_BUFFERRETURN_TO_BUFFER401:
                        {
                            PalletINF palletIFBRB401 = GetPalletId(item.dataRequest);
                            if (palletIFBRB401 != null)
                            {
                                palletId = palletIFBRB401.palletId;
                                dynamic productBR = new JObject();
                                UpdatePalletStateToHold(palletId, item);
                                productBR.timeWorkId          = item.timeWorkId;
                                productBR.activeDate          = item.activeDate;
                                productBR.productId           = item.productId;
                                productBR.productDetailId     = item.productDetailId;
                                productBR.palletStatus        = PalletStatus.H.ToString();  // đã giữ pallet lấy H
                                item.dataRequest_BufferReturn = productBR.ToString();
                                item.palletId_H = palletId;
                                item.palletBay  = palletIFBRB401.bay;
                                item.palletRow  = palletIFBRB401.row;
                                item.bufferId   = palletIFBRB401.ofBufferId;

                                dynamic productB401 = new JObject();
                                //UpdatePalletStateToHold(palletId, item);
                                productB401.timeWorkId      = item.timeWorkId;
                                productB401.activeDate      = item.activeDate;
                                productB401.productId       = item.productId;
                                productB401.productDetailId = item.productDetailId;
                                productB401.palletStatus    = PalletStatus.P.ToString();      // đã có pallet lấy P
                                item.dataRequest_Buffer401  = productB401.ToString();
                                return(item);
                            }
                            else
                            {
                                item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                deviceItemsList[0].RemoveOrder(item);
                                return(null);
                            }
                        }

                        case TyeRequest.TYPEREQUEST_WMS_RETURN_PALLET_BUFFER_TO_GATE:
                        {
                            palletId = item.palletId;
                            if (palletId > 0)
                            {
                                dynamic product = new JObject();
                                //  UpdatePalletStateToReturn(palletId, item);
                                product.timeWorkId      = item.timeWorkId;
                                product.activeDate      = item.activeDate;
                                product.productId       = item.productId;
                                product.productDetailId = item.productDetailId;
                                // chu y sua
                                product.palletStatus = PalletStatus.R.ToString();         // W
                                item.dataRequest     = product.ToString();
                                item.palletId_H      = palletId;
                                return(item);
                            }
                            else
                            {
                                item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                deviceItemsList[0].RemoveOrder(item);
                                return(null);
                            }
                        }

                        case TyeRequest.TYPEREQUEST_MACHINE_TO_BUFFERRETURN:
                        {
                            PalletINF palletIFMBR = GetPalletId(item.dataRequest);
                            if (palletIFMBR != null)
                            {
                                palletId        = palletIFMBR.palletId;
                                item.palletBay  = palletIFMBR.bay;
                                item.palletRow  = palletIFMBR.row;
                                item.palletId_P = palletId;
                                item.bufferId   = palletIFMBR.ofBufferId;
                                UpdatePalletStateToPlan(palletId, item);
                            }
                            else
                            {
                                item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                deviceItemsList[0].RemoveOrder(item);
                                return(null);
                            }
                        }

                        break;

                        case TyeRequest.TYPEREQUEST_PALLET_EMPTY_MACHINE_TO_RETURN:
                            palletId = GetPalletId_Return(item.dataRequest);
                            if (palletId > 0)
                            {
                                item.palletId_F = palletId;
                                dynamic product = new JObject();
                                UpdatePalletStateToPlan(palletId, item);
                                product.palletStatus = PalletStatus.P.ToString();     // đã có pallet lấy P
                                item.dataRequest     = product.ToString();
                            }
                            else
                            {
                                item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                deviceItemsList[0].RemoveOrder(item);
                                return(null);
                            }
                            break;

                        case TyeRequest.TYPEREQUEST_FORLIFT_TO_BUFFER:
                            if (item.onAssiged == false)
                            {
                                PalletINF palletINF = GetRowBayPalletPlaned(item.dataRequest, item.palletId_P);
                                if (palletINF != null)
                                {
                                    item.palletBay = palletINF.bay;
                                    item.palletRow = palletINF.row;
                                    item.bufferId  = palletINF.ofBufferId;
                                    item.onAssiged = true;
                                    return(item);
                                }
                                else
                                {
                                    item.status = StatusOrderResponseCode.ERROR_GET_PALLETID;
                                    deviceItemsList[0].RemoveOrder(item);
                                    return(null);
                                }
                            }
                            else
                            {
                                return(item);
                            }
                            break;

                        default:
                            return(item);
                        }
                    }
                    catch { }
                }
                onFlagBusyGetTask = false;
            }
            return(item);
        }