Esempio n. 1
0
        void AddOrder(OrderData od)
        {
            LineCount++;
            lock (olock)
            {
                List <OrderData> lstOrdData     = Orders.Select(a => a).Where(b => b.ORD_NO == od.ORD_NO).ToList();
                List <OrderData> lstCompOrdData = CompletedOrders.Select(a => a).Where(b => b.ORD_NO == od.ORD_NO).ToList();

                OrderData tmpod = null;

                if (lstOrdData.Count > 0)
                {
                    tmpod = lstOrdData[0];
                }
                else if (lstCompOrdData.Count > 0)
                {
                    tmpod = lstCompOrdData[0];
                }

                foreach (var o in lstOrdData)
                {
                    LineCount--;
                    Orders.Remove(o);
                }
                foreach (var c in lstCompOrdData)
                {
                    LineCount--;
                    CompletedOrders.Remove(c);
                }

                //OrderDatabase.SaveItem(new Order(od));

                if (tmpod != null && tmpod.Status == OrderStatus.Delivered)
                {
                    tmpod.status     = status.Completed;
                    tmpod.IsSelected = true;
                    CompletedOrders.Add(tmpod);

                    if (tmpod.OnSelectionChanged == null)
                    {
                        tmpod.OnSelectionChanged = new OrderData.cmdFireOnSelected(UploadOrderData);
                    }
                }
                else if (tmpod != null && tmpod.Status == OrderStatus.Shipped)
                {
                    tmpod.status     = status.Completed;
                    tmpod.IsSelected = false;
                    Orders.Add(tmpod);

                    if (tmpod.OnSelectionChanged == null)
                    {
                        tmpod.OnSelectionChanged = new OrderData.cmdFireOnSelected(UploadOrderData);
                    }
                }
                else //add to orders - new item
                {
                    if (od.Status == OrderStatus.Shipped)
                    {
                        od.status     = status.Completed;
                        od.IsSelected = false;
                        Orders.Add(od);
                    }
                    else if (od.Status == OrderStatus.Delivered)
                    {
                        od.status     = status.Completed;
                        od.IsSelected = true;
                        CompletedOrders.Add(od);
                    }
                    else
                    {
                        od.status = status.Completed;
                        // od.Status = OrderStatus.Shipped;
                        od.IsSelected = false;
                        Orders.Add(od);
                    }
                    if (dShippedRequestPending.Contains(od.ORD_NO))
                    {
                        dShippedRequestPending.Remove(od.ORD_NO);
                    }
                    if (dDeliveredRequestPending.Contains(od.ORD_NO))
                    {
                        dDeliveredRequestPending.Remove(od.ORD_NO);
                    }
                    if (od.OnSelectionChanged == null)
                    {
                        od.OnSelectionChanged = new OrderData.cmdFireOnSelected(UploadOrderData);
                    }
                }
            }
        }
Esempio n. 2
0
        void UploadOrderData(OrderData ord)
        {
            Logger.Info($"OrderVM UploadStopOrder: {ord.ToString()}");
            bool bExists     = Orders.Select(a => a).Where(o => o == ord).ToList().Count > 0;
            bool bCompExists = CompletedOrders.Select(a => a).Where(o => o == ord).ToList().Count > 0;

            if (((ord.Status == OrderStatus.Shipped && ord.IsSelected == false) && (bExists && !bCompExists) || dDeliveredRequestPending.Contains(ord.ORD_NO)) || (
                    ord.Status == OrderStatus.Delivered && ord.IsSelected) && (!bExists && bCompExists) || dShippedRequestPending.Contains(ord.ORD_NO))
            {
                return;
            }

            var req = new Request()
            {
                reqGuid = NewGuid(),
                LIds    = new Dictionary <long, status>(),
                LinkMid = new Dictionary <long, List <long> >(),
                ChkIds  = new Dictionary <long, status>()
            };

            dRequests.Add(req.reqGuid, req);
            bool bShipped   = !ord.IsSelected && ord.prevstate;
            bool bDelivered = ord.IsSelected && !ord.prevstate;

            if (bShipped)
            {
                ord.Status = OrderStatus.Shipped;
                ord.status = status.Releasing;
                //ord.IsSelected = false;
            }
            else if (bDelivered)
            {
                ord.Status = OrderStatus.Delivered;
                ord.status = status.Completed;
            }
            orderMaster ordUp = new orderMaster(ord, ord.ManifestId);

            if (bShipped || bDelivered)
            {
                ordUp.command = eCommand.CompleteOrder;

                ProcessMsgDelegateRXRaw pmRx = new ProcessMsgDelegateRXRaw(ProcessMessage);
                Logger.Info($"Upload Sopt Order reqid: {req.reqGuid}");
                orderThread.OnStartProcess((new manifestRequest()
                {
                    requestId = req.reqGuid.ToByteArray(),
                    command = ordUp.command,
                    bData = ordUp.ToArray()
                }), req, pmRx);

                lock (olock)
                {
                    if (bShipped)
                    {
                        dShippedRequestPending.Add(ord.ORD_NO);
                    }
                    else if (bDelivered)
                    {
                        dDeliveredRequestPending.Add(ord.ORD_NO);
                    }
                }
            }
        }