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