public void OnStartProcess(manifestRequest req, Request reqInfo, ProcessMsgDelegateRXRaw cbsend = null)
        {
            Init();
            Guid g = NewGuid();

            if (req.requestId != null)
            {
                g = new Guid(req.requestId);
            }
            else
            {
                req.requestId = g.ToByteArray();
            }

            Logger.Info($"OnStartProcess Starting the background process Request: {req.ToString()}");

            object[] paramArgs = new object[] {
                req, reqInfo, cbsend
            };
            int to = 0;

            if (!dDoneEvent.ContainsKey(g))
            {
                string name = Enum.GetName(typeof(eCommand), req.command);
                if (name.CompareTo("OrdersLoad") == 0)
                {
                    to = 60000;
                }
                dDoneEvent.Add(g, new evData()
                {
                    evnt = new ManualResetEvent(false), secReset = to, name = name
                });
            }
            bgWorker.RunWorkerAsync(paramArgs);
        }
        private void OnSavePOD(object obj)
        {
            manifestRequest mreq = new manifestRequest();

            mreq.command = eCommand.CompleteStop;

            // Stream bitmap =  Signature.GetImageStreamAsync(SignatureImageFormat.Png);

            foreach (var StopOrder in ShippedOrderCollection)
            {
                // mreq.bData = Signature;
                if (mreq.valist == null)
                {
                    mreq.valist = new List <long>();
                }
                mreq.valist.Add(StopOrder.ORD_NO);
                mreq.id = StopOrder.ManifestId;
                //We need the DSP_SEQ from the scnfle ORD_NO List
                // mreq.DATA = StopOrder.DSP_SEQ;
                // StopOrder.Status;
            }
            mreq.bData = Signature;
            Request reqInfo = new Request()
            {
                reqGuid = NewGuid(),
                LIds    = new Dictionary <long, status>(),
                LinkMid = new Dictionary <long, List <long> >()
            };

            stopThread.OnStartProcess(mreq, reqInfo);
        }
Exemple #3
0
 public bool SendMsgUMDAPI(manifestRequest req)
 {
     if (IsConnectedAPI == ConnectState.Connected)
     {
         return(umdSrv.SendMessage(req));
     }
     else
     {
         return(false);
     }
 }
Exemple #4
0
 public bool SendMsgWinsys(manifestRequest req)
 {
     if (IsConnectedWinSys == ConnectState.Connected)
     {
         return(winSys.SendMessage(req));
     }
     else
     {
         return(winSys.Connect());
     }
 }
        public void GetOrderMasterData(ManifestMasterData mmd)
        {
            var req = new manifestRequest()
            {
                command   = eCommand.OrdersLoad,
                requestId = mmd.RequestId.ToByteArray(),
                id        = mmd.ManifestId,
                date      = mmd.SHIP_DTE.ToString("yyyy-MM-dd")
            };

            sm(req);
        }
        public void GetOrderOptionsData(OrderDetailsData ood)
        {
            var req = new manifestRequest()
            {
                command   = eCommand.OrderOptions,
                requestId = ood.RequestId.ToByteArray(),
                valist    = new List <long>()
                {
                    ood.ORD_NO
                }
            };

            sm(req);
        }
        public void GetTruckData(ManifestDetailsData mdd)
        {
            var req = new manifestRequest()
            {
                command   = eCommand.Trucks,
                requestId = mdd.RequestId.ToByteArray(),
                valist    = new List <long>()
                {
                    mdd.DLR_NO
                }
            };

            sm(req);
        }
        public void GetManifestDetails(ManifestMasterData manMaster, Func <byte[], Task> cbsend)
        {
            dt = manMaster.SHIP_DTE;
            var req = new manifestRequest()
            {
                command   = eCommand.ManifestDetails,
                requestId = manMaster.RequestId.ToByteArray(),
                id        = manMaster.ManifestId, valist = new List <long>()
                {
                    manMaster.LINK
                }
            };

            Logger.Info($"Upload Manifest - GetManifestDetails DrillDown/n sending manifestRequest/n/t{req.command.ToString()}" +
                        $"/n/tmanId:{req.id} reqId: {req.requestId}");

            sm(req);
        }
        static Dictionary <short, Dictionary <byte, List <long> > > dTruckCodeToDealerNumbers = new Dictionary <short, Dictionary <byte, List <long> > >();  //TruckCode -> <Seq, List<Orders>>
        public static isaCommand CommandFactory(byte[] cmdBytes)
        {
            isaCommand cmd = new Command().FromArray(cmdBytes);

            switch (cmd.command)
            {
            case eCommand.Broadcast:
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                break;

            case eCommand.DeliveryComplete:
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                break;

            case eCommand.CheckManifest:
            case eCommand.CheckManifestComplete:
                manifestMaster mamr = new manifestMaster();
                cmd = mamr.FromArray(cmdBytes);
                break;

            case eCommand.GenerateManifest:
                manifestRequest mr = new manifestRequest();
                cmd = mr.FromArray(cmdBytes);
                if (cmd == null)
                {
                    manifestMaster mmr = new manifestMaster();
                    cmd = mmr.FromArray(cmdBytes);
                }
                //Call ApplicationServer to return the data requested.
                //UMDManifest.
                break;

            case eCommand.OrdersLoad:
                //orders ords = new orders();
                //cmd = ords.FromArray(cmdBytes);
                orderMaster orm = new orderMaster();
                cmd = orm.FromArray(cmdBytes);
                break;

            case eCommand.Trucks:
                trucks trks = new trucks();
                cmd = trks.FromArray(cmdBytes);
                break;

            case eCommand.Stops:
                stops stps = new stops();
                cmd = stps.FromArray(cmdBytes);
                break;

            case eCommand.OrderDetails:
                orderDetails cmdType = new orderDetails();
                cmd = cmdType.FromArray(cmdBytes);
                break;

            case eCommand.Manifest:
                manifestMaster mm = new manifestMaster();
                cmd = mm.FromArray(cmdBytes);
                break;

            case eCommand.ManifestDetails:
                manifestDetails md = new manifestDetails();
                cmd = md.FromArray(cmdBytes);
                break;

            case eCommand.OrdersUpload:
                orderMaster om = new orderMaster();
                cmd = om.FromArray(cmdBytes);
                OrderMasterData omd = new OrderMasterData(om);
                if (!dStopOrders.ContainsKey(omd.DLR_NO))
                {
                    dStopOrders.Add(omd.DLR_NO, new List <long>()
                    {
                        omd.ORD_NO
                    });
                }
                break;

            case eCommand.ScanFile:
                scanFile sc = new scanFile();
                cmd = sc.FromArray(cmdBytes);
                ScanFileData scd = new ScanFileData(sc);
                break;

            case eCommand.OrderOptions:
                orderOptions oo = new orderOptions();
                cmd = oo.FromArray(cmdBytes);
                //OrderOptionsData ood = new OrderOptionsData(oo);
                break;

            case eCommand.AccountReceivable:
                accountReceivable ar = new accountReceivable();
                cmd = ar.FromArray(cmdBytes);
                // AccountsReceivableData acr = new AccountsReceivableData((accountReceivable)cmd);
                break;

            case eCommand.ManifestLoadComplete:
            case eCommand.TrucksLoadComplete:
            case eCommand.StopsLoadComplete:
            case eCommand.OrdersLoadComplete:
            case eCommand.OrderUpdatesComplete:
            case eCommand.OrderDetailsComplete:
            case eCommand.OrderOptionsComplete:
            case eCommand.ManifestDetailsComplete:
            case eCommand.UploadManifestComplete:
            case eCommand.LoadFilesComplete:
                Logger.Info($"CommandFactory: {Enum.GetName(typeof(eCommand), cmd.command) + Environment.NewLine}");
                manifestRequest req = new manifestRequest();
                Logger.Info($"CommandFactory: {req.ToString()}");
                cmd = req.FromArray(cmdBytes);
                break;

            case eCommand.Ping:
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                //cmd = SendPong();
                break;

            case eCommand.Pong:
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                break;

            case eCommand.RunQuery:
                //Broadcast cmdType = Broadcast.FromArray(cmdBytes);
                break;

            default:
                break;
            }
            return(cmd);
        }
Exemple #10
0
 public void LoadData(manifestRequest req)
 {
     Logger.Info($"ManifestVM::LoadData: {req.ToString()}");
     winSys.SendMessage(req);
 }
Exemple #11
0
        public void HandleClientCmd(byte[] bytes_cmd, Func <byte[], Task> cbsend)
        {
            isaCommand cmd = new Command().FromArray(bytes_cmd);

            switch (cmd.command)
            {
            case eCommand.Ping:
                Logger.Debug("HandleClientCmd -  Received Ping / Replying Pong..");
                cbsend(new Command()
                {
                    command = eCommand.Pong
                }.ToArray());
                break;

            case eCommand.Pong:
                Logger.Debug("HandleClientCmd -  Received Pong");
                break;

            case eCommand.LoadFiles:
                Logger.Info("HandleClientCmd - Copy Files from Winsys Server Paths top App Server Paths:{cmd.ToString()}");
                //CopyFilesToServer(DateTime.Today);
                Logger.Info("HandleClientCmd - Replying LoadFilesComplete...");
                cbsend(new Command()
                {
                    command = eCommand.LoadFilesComplete
                }.ToArray());
                break;

            case eCommand.GenerateManifest:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");

                manifestMaster mM = (manifestMaster) new manifestMaster().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd Generate Manifest from Winsys and SqlServer:{mM.ToString()}");
                if (mM.LINK != 0)
                {
                    ManifestMasterData mmd = (ManifestMasterData)UMDServer.QueryData(cbsend, mM);
                    Logger.Info($"API Manager GenerateManifest. {mmd.ToString()}");
                }
                else
                {
                    WinSysSM.SendMessage(cmd);
                }
                break;

            case eCommand.CheckManifest:
                Logger.Info($"HandleClientCmd - CheckManifest:{cmd.ToString()}");
                //ManifestMasterData mMstData = (ManifestMasterData)new ManifestMasterData(bytes_cmd);
                manifestMaster mMst = (manifestMaster) new manifestMaster().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd Compare Manifest from Winsys to SqlServer: {mMst.ToString()}");
                ManifestMasterData mamd = (ManifestMasterData)UMDServer.QueryData(cbsend, mMst);
                Logger.Info($"API Manager GenerateManifest. {mamd.ToString()}");
                break;

            case eCommand.RunQuery:
                Logger.Info($"HandleClientCmd - ManifestDetails: {cmd.ToString()}");

                //DriverData dd = (DriverData)GetDrivers(cbsend);
                break;

            case eCommand.Manifest:
                Logger.Info($"HandleClientCmd - Manifest from Winsys and SqlServer:{cmd.ToString()}");
                cbsend(cmd.ToArray());
                break;

            case eCommand.Trucks:
                Logger.Info($"HandleClientCmd - Trucks: {cmd.ToString()}");

                isaCommand req = new manifestRequest().FromArray(bytes_cmd);
                TruckData  td  = (TruckData)UMDServer.QueryData(cbsend, req);
                Logger.Info($"HandleClientCmd - Trucks.  reqId:{req.ToString()}");
                break;

            case eCommand.ManifestDetails:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");
                isaCommand reqmd = new manifestRequest().FromArray(bytes_cmd);
                // ManifestDetailsData mdd =
                manifestDetails     manDet     = new manifestDetails();
                ManifestDetailsData manDetData = (ManifestDetailsData)manDet.FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - ManifestDetails:{manDetData.ToString()}");

                foreach (var mmd in UMDServer.Persist(SPCmds.INSERTMANIFESTDETAILS, manDetData))
                {
                    drillDown.GetOrderMasterData((ManifestDetailsData)mmd);
                    mmd.Command   = eCommand.ManifestDetails;
                    mmd.RequestId = new Guid(manDet.requestId);
                    Logger.Info($"HandleClientCmd - ManifestDetails.  Sending GetOrderMasterData:{mmd.ToString()}");
                    cbsend(((manifestDetails)mmd).ToArray());
                }
                break;

            case eCommand.Orders:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");

                var om = (orderMaster) new orderMaster().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - Orders.  reqId: {om.ToString()}");
                foreach (var omd in UMDServer.Persist(SPCmds.INSERTORDER, new OrderMasterData(om)))
                {
                    drillDown.GetOrderDetailsData((OrderMasterData)omd);
                }
                break;

            case eCommand.OrderOptions:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");

                var oo = (orderOptions) new orderOptions().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - OrderOptions:{cmd.ToString()}");
                foreach (var mmd in UMDServer.Persist(SPCmds.INSERTORDEROPTIONS, new OrderOptionsData(oo)))
                {
                    var oopt = new orderOptions((OrderOptionsData)mmd);
                    oopt.command = eCommand.OrderOptionsComplete;
                    cbsend(oopt.ToArray());
                }
                break;

            case eCommand.OrderDetails:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");

                var odt = (orderDetails) new orderDetails().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - OrderDetails: {odt.ToString()}");
                foreach (var mmd in UMDServer.Persist(SPCmds.INSERTORDERDETAILS, new OrderDetailsData(odt)))
                {
                    orderDetails odd = new orderDetails((OrderDetailsData)mmd);
                    odd.command = eCommand.OrderDetailsComplete;
                    cbsend(odd.ToArray());
                }
                break;

            case eCommand.Drivers:
                Logger.Info($"HandleClientCmd - ManifestDetails:{cmd.ToString()}");
                req = new manifestRequest().FromArray(bytes_cmd);
                DriverData dd = (DriverData)UMDServer.QueryData(cbsend, req);
                //drivers drvs = new drivers(dd);
                //drvs.command = eCommand.DriversLoadComplete;
                //cbsend(drvs.ToArray());

                //cbsend(new Command() { command = eCommand.DriversLoadComplete, value = dd.DriverId.ToString() }.ToArray());
                break;

            case eCommand.UploadManifest:
                Logger.Info($"HandleClientCmd - UploadManifest:{cmd.ToString()}");

                manifestRequest mreq = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - UploadManifest:  {mreq.ToString()}");
                //ManifestMasterData Mmd = (ManifestMasterData)cmd;
                manifestMaster            mm     = (manifestMaster) new manifestMaster().FromArray(mreq.bData);
                IEnumerable <IMDMMessage> mmdata = UMDServer.Persist(SPCmds.INSERTMANIFEST, new ManifestMasterData(mm, mm.id));
                Logger.Info($"HandleClientCmd - UploadManifest Persisted:{mm.ToString()}");

                try
                {
                    ManifestMasterData mmd = null;
                    foreach (var mmdIt in mmdata)
                    {
                        mmd = (ManifestMasterData)mmdIt;
                        Logger.Info($"HandleClientCmd - UploadManifest - Get ManifestDetails sending ManMastData Trk:{mmd.ToString()}");
                        drillDown.GetManifestDetails(mmd, cbsend);
                    }
                    if (mmd != null)
                    {
                        manifestMaster mmRet = new manifestMaster(mmd);
                        mmRet.command = eCommand.ManifestLoadComplete;
                        Logger.Info($"HandleClientCmd - UploadManifest - Done (ManifestLoadComplete):{mreq.ToString()}");
                        cbsend(mmRet.ToArray());
                    }
                }
                catch (Exception e)
                {
                    Logger.Debug("HandleClientCmd - Error exception = " + e.Message);
                }

                break;

            case eCommand.Stops:
                Logger.Info($"HandleClientCmd - Stops.  reqId:{cmd.ToString()}");
                req = new manifestRequest().FromArray(bytes_cmd);
                StopData sd   = (StopData)UMDServer.QueryData(cbsend, req);
                stops    stps = new stops(sd);
                stps.command = eCommand.StopsLoadComplete;
                cbsend(stps.ToArray());

                break;

            case eCommand.OrdersLoad:
                req = new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - OrdersLoad (Start QueryData): {req.ToString()}");
                OrderData od   = (OrderData)UMDServer.QueryData(cbsend, req);
                orders    odrs = new orders(od);
                odrs.command = eCommand.OrdersLoadComplete;
                Logger.Info($"HandleClientCmd - OrdersLoad (OrdersLoadComplete): {odrs.ToString()}");
                cbsend(odrs.ToArray());
                break;

            default:
                Logger.Error("HandleClientCmd - ERROR Unknown command.  Parse Error MDM-API");
                break;
            }
        }
        void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            object[]            parameters = e.UserState as object[];
            isaCommand          cmd        = (isaCommand )parameters[0];
            Func <byte[], Task> cbsend     = null;

            if (parameters.Length == 3)
            {
                cbsend = (Func <byte[], Task>)parameters[2];
            }
            IMDMMessage mcmd = null;

            switch (cmd.command)
            {
            case eCommand.Manifest:
                mcmd = new ManifestMasterData((manifestMaster)cmd, ((manifestMaster)cmd).id);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.ManifestLoadComplete:
                manifestRequest mreq = (manifestRequest)cmd;
                if (mreq.valist != null)
                {
                    foreach (var it in mreq.valist)
                    {
                        mcmd = new ManifestMasterData()
                        {
                            RequestId = new Guid(cmd.requestId),
                            LINK      = it,
                            SHIP_DTE  = DateTime.Today,
                            Command   = eCommand.ManifestLoadComplete
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                else
                {
                    mcmd = new ManifestMasterData()
                    {
                        RequestId = new Guid(cmd.requestId),
                        LINK      = -1,
                        SHIP_DTE  = DateTime.Today,
                        Command   = eCommand.ManifestLoadComplete
                    };
                    Sendback((O)mcmd, cbsend);
                }
                break;

            case eCommand.CheckManifestComplete:
                mcmd = new ManifestMasterData((manifestMaster)cmd, ((manifestMaster)cmd).id, false);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.CheckManifest:
                mcmd = new ManifestMasterData((manifestMaster)cmd, ((manifestMaster)cmd).id, false);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.Drivers:
                mcmd = new DriverData()
                {
                    Command = cmd.command
                };
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.DriversLoadComplete:
                mcmd = (DriverData)cmd;
                Sendback((O)mcmd, cbsend);
                CompleteBackgroundWorker(new Guid(cmd.requestId));
                break;

            case eCommand.ManifestDetails:
                mcmd = new ManifestDetailsData()
                {
                    Command = cmd.command
                };
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.AccountReceivable:
                mcmd = new AccountsReceivableData((accountReceivable)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.ManifestDetailsComplete:
                mreq = (manifestRequest)cmd;

                if (mreq.valist != null)
                {
                    foreach (var it in mreq.valist)
                    {
                        mcmd = new ManifestDetailsData()
                        {
                            RequestId = new Guid(cmd.requestId),
                            DLR_NO    = it,
                            Command   = eCommand.ManifestDetailsComplete
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                else
                {
                    mcmd = new ManifestMasterData()
                    {
                        RequestId = new Guid(cmd.requestId),
                        LINK      = -1,
                        SHIP_DTE  = DateTime.Today,
                        Command   = eCommand.ManifestLoadComplete
                    };
                    Sendback((O)mcmd, cbsend);
                }
                //mcmd = new ManifestDetailsData((manifestDetails)cmd);
                //Sendback((O)mcmd, cbsend);
                //CompleteBackgroundWorker(new Guid(cmd.requestId));
                break;
            //case eCommand.OrdersLoad:
            //    mcmd = new OrderMasterData() {
            //        Command = cmd.command,
            //        ORD_NO=((orderMaster)cmd).ORD_NO,
            //        Status = ((orderMaster)cmd).Status
            //    };
            //    Sendback((O)mcmd, cbsend);
            //    break;

            case eCommand.OrdersUpload:
                mcmd = new OrderMasterData()
                {
                    Command = cmd.command,
                    ORD_NO  = ((orderMaster)cmd).ORD_NO,
                    Status  = ((orderMaster)cmd).Status
                };
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.OrderUpdatesComplete:
                mreq = (manifestRequest)cmd;

                if (mreq.valist != null)
                {
                    foreach (var it in mreq.valist)
                    {
                        mcmd = new OrderMasterData()
                        {
                            RequestId = new Guid(cmd.requestId),
                            ORD_NO    = (int)it,
                            Command   = eCommand.ManifestDetailsComplete
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }

                break;

            case eCommand.OrderDetails:
                mcmd = new OrderDetailsData((orderDetails)cmd);

                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.OrderDetailsComplete:
                mreq = (manifestRequest)cmd;

                if (mreq.valist != null)
                {
                    foreach (var it in mreq.valist)
                    {
                        mcmd = new OrderDetailsData()
                        {
                            RequestId  = new Guid(cmd.requestId),
                            ORD_NO     = it,
                            LineNumber = mreq.Stop,   // using as the count (number of OrderDetail Records Expected)
                            Command    = eCommand.OrderDetailsComplete
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                break;

            case eCommand.OrderOptions:
                mcmd = new OrderOptionsData((orderOptions)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.OrderOptionsComplete:
                mreq = (manifestRequest)cmd;

                if (mreq.valist != null)
                {
                    foreach (var it in mreq.valist)
                    {
                        mcmd = new OrderOptionsData()
                        {
                            RequestId = new Guid(cmd.requestId),
                            ORD_NO    = (int)it,
                            Count     = mreq.Stop, // using as the count (number of OrderDetail Records Expected)
                            Command   = eCommand.OrderOptionsComplete
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                break;

            case eCommand.ScanFile:
                mcmd = new ScanFileData((scanFile)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.Trucks:
                mcmd = new TruckData((trucks)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.TrucksLoadComplete:
                mreq = (manifestRequest)cmd;
                mcmd = new TruckData()
                {
                    RequestId  = new Guid(cmd.requestId),
                    ManifestId = mreq.id,
                    Command    = eCommand.TrucksLoadComplete
                };
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.Stops:
                mcmd = new StopData((stops)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.StopsLoadComplete:
                mcmd = new StopData()
                {
                    Command = cmd.command, RequestId = new Guid(cmd.requestId)
                };
                mreq = (manifestRequest)cmd;
                if (mreq.valist != null)
                {
                    foreach (var id in mreq.valist)
                    {
                        mcmd = new StopData()
                        {
                            Command = cmd.command,
                            //TruckCode = TRK_CDE,
                            RequestId = new Guid(cmd.requestId)
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                else
                {
                    mcmd = new StopData()
                    {
                        Command = cmd.command,
                        //TruckCode = TRK_CDE,
                        RequestId = new Guid(cmd.requestId)
                    };
                    Sendback((O)mcmd, cbsend);
                }
                break;

            case eCommand.OrdersLoad:
                mcmd = new OrderData((orders)cmd);
                Sendback((O)mcmd, cbsend);
                break;

            case eCommand.OrdersLoadComplete:
                mreq = (manifestRequest)cmd;
                if (mreq.valist != null)
                {
                    foreach (var id in mreq.valist)
                    {
                        mcmd = new OrderData()
                        {
                            Command   = cmd.command,
                            DLR_NO    = (int)id,
                            RequestId = new Guid(cmd.requestId)
                        };
                        Sendback((O)mcmd, cbsend);
                    }
                }
                else
                {
                    Logger.Info($"OrdersLoadComplete: {cmd.ToString()}");
                    mcmd = new OrderData()
                    {
                        Command = cmd.command,
//                            DLR_NO = id,
                        RequestId = new Guid(cmd.requestId)
                    };
                    Sendback((O)mcmd, cbsend);
                }

                break;

            case eCommand.UploadManifestComplete:
                mcmd = new ManifestMasterData()
                {
                    Command = cmd.command, RequestId = NewGuid(cmd.requestId)
                };
                Sendback((O)mcmd, cbsend);
                break;

            default:
                Logger.Error($"Unhandled command Backgrtound worker handler {Enum.GetName(typeof(eCommand), cmd.command)}.");
                break;
            }
        }
        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            object[]        parameters = e.Argument as object[];
            manifestRequest req        = (manifestRequest)parameters[0];

            try
            {
                Request reqInfo = (Request)parameters[1];
                Logger.Info($"bgWorker_DoWork {Enum.GetName(typeof(eCommand), req.command)} ");
                switch (req.command)
                {
                case eCommand.Drivers:
                case eCommand.Manifest:
                case eCommand.GenerateManifest:
                case eCommand.LoadFiles:
                    if (!sm(req))
                    {
                        throw new Exception("UMBackgroundWorker::connectionVM.SendMsgWinsys - Failed to send Winsys Server a message");
                    }
                    break;

                case eCommand.ManifestDetails:
                case eCommand.OrderDetails:
                case eCommand.OrderOptions:
                case eCommand.OrdersUpload:
                case eCommand.OrdersLoad:
                case eCommand.Trucks:
                case eCommand.Stops:
                case eCommand.UploadManifest:
                case eCommand.UploadManifestComplete:
                case eCommand.CompleteStop:
                case eCommand.CompleteOrder:
                case eCommand.AccountReceivable:
                    sm(req);
                    break;

                case eCommand.TrucksLoadComplete:
                    CompleteBackgroundWorker(NewGuid(req.requestId));
                    break;

                default:
                    throw new Exception("Command not found");
                }
            }
            catch (Exception ex) {
            }
            finally
            {
                if (dDoneEvent.ContainsKey(new Guid(req.requestId)))
                {
                    if (dDoneEvent[new Guid(req.requestId)].secReset > 0)
                    {
                        dDoneEvent[new Guid(req.requestId)].evnt.WaitOne(dDoneEvent[new Guid(req.requestId)].secReset);
                    }
                    else
                    {
                        dDoneEvent[new Guid(req.requestId)].evnt.WaitOne();
                    }
                }
            }
        }
        public isaCommand ReceiveMessage(isaCommand cmd)
        {
            switch (cmd.command)
            {
            case eCommand.Ping:
                Logger.Debug($"ReceiveMessage - Received Ping / Replying Pong..");
                WinSysSM.SendMessage(new Command()
                {
                    command = eCommand.Pong
                });
                break;

            case eCommand.Pong:
                Logger.Debug($"ReceiveMessage - Received Pong");
                break;

            case eCommand.GetNewHeads:
                Logger.Debug("GetNewHeads");
                manifestRequest req = (manifestRequest)cmd;
                dRetCall[NewGuid(cmd.requestId)](req.ToArray());
//                    cbsend(new Command() { command = eCommand.GetNewHeads }.ToArray());
                break;

            case eCommand.CreateCustomerAccount:
                Logger.Debug("CreateCustomerAccount");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                // cbsend(new Command() { command = eCommand.CreateCustomerAccount }.ToArray());
                break;

            case eCommand.GetCustomerBalance:
                Logger.Debug("GetCustomerBalance");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            case eCommand.CreateOrder:
                Logger.Debug("CreateOrder");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            case eCommand.ConfirmDelivery:
                Logger.Debug("ConfirmDelivery");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            case eCommand.Withdraw:
                Logger.Debug("Withdraw");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            case eCommand.SweepToCold:
                Logger.Debug("SweepToCold");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            case eCommand.TransferToHot:
                Logger.Debug("TransferToHot");
                dRetCall[NewGuid(cmd.requestId)](cmd.ToArray());
                break;

            default:
                Logger.Error("ReceiveMessage - ERROR Unknown command.  Parse Error MDM-API");
                break;
            }
            return(cmd);
        }
 public bool SendMsgUMDAPI(manifestRequest req)
 {
     return(connectivityModel.SendMsgUMDAPI(req));
 }
Exemple #16
0
        public isaCommand ReceiveMessage(isaCommand cmd)
        {
            switch (cmd.command)
            {
            case eCommand.Ping:
                Logger.Debug($"ReceiveMessage - Received Ping / Replying Pong..");
                WinSysSM.SendMessage(new Command()
                {
                    command = eCommand.Pong
                });
                break;

            case eCommand.Pong:
                Logger.Debug($"ReceiveMessage - Received Pong");
                break;

            case eCommand.LoadFiles:
                Logger.Info($"ReceiveMessage - Copy Files from Winsys Server Paths top App Server Paths:{cmd.ToString()}");
                //CopyFilesToServer(DateTime.Today);
                Logger.Info($"ReceiveMessage - Replying LoadFilesComplete...");
                WinSysSM.SendMessage(new Command()
                {
                    command = eCommand.LoadFilesComplete
                });
                //cbsend(new Command() { command = eCommand.LoadFilesComplete }.ToArray());
                break;

            case eCommand.GenerateManifest:
                Logger.Info($"ReceiveMessage - Generate Manifest from Winsys and SqlServer:{cmd.ToString()}");
                manifestRequest req = (manifestRequest)cmd;
                WinSysSM.SendMessage(req);
                break;

            case eCommand.ManifestDetails:
                Logger.Info($"ReceiveMessage - Generate Manifest Details from Winsys - API Drill Down:{cmd.ToString()}");
                //drillDown.reportMDProgressChanged(50, cmd );
                foreach (var mmd in UMDServer.Persist(SPCmds.INSERTMANIFESTDETAILS, new ManifestDetailsData((manifestDetails)cmd)))
                {
                    drillDown.GetOrderMasterData((ManifestDetailsData)mmd);
                }
                break;

            case eCommand.ManifestDetailsComplete:
                Logger.Info($"ReceiveMessage - ManifestDetailsComplete:{cmd.ToString()}");
                //drillDown.reportMDProgressChanged(100, cmd);
                break;

            case eCommand.Orders:
                Logger.Info($"ReceiveMessage - Orders  reqId: {cmd.requestId}");
                foreach (var omd in UMDServer.Persist(SPCmds.INSERTORDER, new OrderMasterData((orderMaster)cmd)))
                {
                    drillDown.GetOrderDetailsData((OrderMasterData)omd);
                    drillDown.GetOrderOptionsData((OrderMasterData)omd);
                }
                break;

            case eCommand.OrderOptions:
                Logger.Info($"ReceiveMessage - OrderOptions  reqId:{cmd.ToString()}");
                UMDServer.Persist(SPCmds.INSERTORDEROPTIONS, new OrderOptionsData((orderOptions)cmd));

                break;

            case eCommand.OrderDetails:
                Logger.Info($"ReceiveMessage - OrderDetails:{cmd.ToString()}");
                UMDServer.Persist(SPCmds.INSERTORDERDETAILS, new OrderDetailsData((orderDetails)cmd));
                //  drillDown.GetOrderMasterData((ManifestDetailsData)mmd);
                break;

            case eCommand.RunQuery:
                //DriverData dd = (DriverData)GetDrivers(cbsend);
                break;

            case eCommand.Drivers:
                Logger.Info($"ReceiveMessage - Drivers:{cmd.ToString()}");
                break;

            case eCommand.OrderDetailsComplete:
                Logger.Info($"ReceiveMessage - OrderDetailsComplete:{cmd.ToString()}");
                break;

            case eCommand.OrderOptionsComplete:
                Logger.Info($"ReceiveMessage - OrderOptionsComplete:{cmd.ToString()}");
                break;

            case eCommand.OrderUpdatesComplete:
                Logger.Info($"ReceiveMessage - OrderUpdatesComplete:{cmd.ToString()}");
                break;

            default:
                Logger.Error("ReceiveMessage - ERROR Unknown command.  Parse Error MDM-API");
                break;
            }
            return(cmd);
        }
        public void HandleClientCmd(byte[] bytes_cmd, Func <byte[], Task> cbsend)
        {
            isaCommand cmd = new Command().FromArray(bytes_cmd);

            switch (cmd.command)
            {
            case eCommand.Ping:
                Logger.Debug("HandleClientCmd -  Received Ping / Replying Pong..");
                cbsend(new Command()
                {
                    command = eCommand.Pong
                }.ToArray());
                break;

            case eCommand.Pong:
                Logger.Debug("HandleClientCmd -  Received Pong");
                break;

            case eCommand.GenerateManifest:
                Logger.Info($"HandleClientCmd - Generate Manifest:{cmd.ToString()}");

                manifestMaster mM = (manifestMaster) new manifestMaster().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd Generate Manifest from Winsys and SqlServer:{mM.ToString()}");
                if (mM.LINK != 0)
                {
                    ManifestMasterData mmd1 = (ManifestMasterData)UMDServer.QueryData(cbsend, mM);
                    Logger.Info($"API Manager GenerateManifest QueryData Complete. {mmd1.ToString()}");
                }
                else
                {
                    WinSysSM.SendMessage(cmd);
                }

                break;

            case eCommand.CheckManifest:
                Logger.Info($"HandleClientCmd - CheckManifest: {cmd.ToString()}");
                manifestMaster mMst = (manifestMaster) new manifestMaster().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd Check Manifest in ManagerAPI/SqlServer: {mMst.ToString()}");
                ManifestMasterData mamd = (ManifestMasterData)UMDServer.QueryData(cbsend, mMst);
                Logger.Info($"API Manager Check Manifest. {mamd.ToString()}");

                break;


            case eCommand.Manifest:
                Logger.Info($"HandleClientCmd - Manifest: {cmd.ToString()}");
                cbsend(cmd.ToArray());

                break;

            case eCommand.OrdersUpload:
                Logger.Info($"HandleClientCmd - Orders: {cmd.ToString()}");
                orderMaster            om      = (orderMaster) new orderMaster().FromArray(bytes_cmd);
                List <OrderMasterData> ordList = new List <OrderMasterData>();
                Logger.Info($"Persist INSERTORDER {om.ToString()}");
//                    om.Status = OrderStatus.Shipped;
                foreach (OrderMasterData omd in UMDServer.Persist(SPCmds.INSERTORDER, new OrderMasterData(om)))
                {
                    ordList.Add(omd);
                    Logger.Info($"Orders - drillDown.GetOrderDetailsData: {omd.ToString()}");
                    omd.Command = eCommand.OrdersLoadComplete;
                }

                //foreach (var ord in ordList)
                //{
                //    drillDown.GetOrderDetailsData(ord);
                //    drillDown.GetOrderOptionsData(ord);
                //}
                drillDown.GetOrderDetailsData(ordList);
                drillDown.GetOrderOptionsData(ordList);

                Logger.Info($"INSERTORDER Complete. OrdersLoadComplete: {om.ToString()}");
                om.command = eCommand.ManifestDetailsComplete;
                cbsend(om.ToArray());

                break;

            case eCommand.CompleteOrder:
                Logger.Info($"HandleClientCmd - Close Order: {cmd.ToString()}");

                manifestRequest mreq = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);

                Logger.Info($"HandleClientCmd - CompleteOrder:  {mreq.ToString()}");

                orderMaster cs = (orderMaster) new orderMaster().FromArray(mreq.bData);

                Logger.Info($"Persist COMPLETEORDER {cs.ToString()}");

                var no = new OrderMasterData(cs);
                foreach (OrderMasterData omd in UMDServer.Persist(SPCmds.COMPLETEORDER, no))
                {
                    Logger.Info($"Persisted COMPLETEORDER {omd.ToString()}");
                    cbsend(new orderMaster(omd).ToArray());
                }

                break;

            case eCommand.CompleteStop:

                Logger.Info($"HandleClientCmd - Close Stop for Orders: {cmd.ToString()}");

                manifestRequest mreqs = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);

                Logger.Info($"HandleClientCmd - CompleteStop:  {mreqs.ToString()}");

                StopData sd = new StopData();
                sd.POD        = mreqs.bData;
                sd.ManifestId = mreqs.id;
                sd.DisplaySeq = (int)mreqs.DATA;
                sd.Orders     = new List <OrderMasterData>();
                //temp - uncomment!
                // mreqs.valist.ForEach(v => sd.Orders.Add(new OrderMasterData() { DSP_SEQ=sd.DisplaySeq, ManifestId=sd.ManifestId, ORD_NO = v }));

                Logger.Info($"Persist COMPLETESTOP {sd.ToString()}");

                foreach (StopData omd in UMDServer.Persist(SPCmds.COMPLETESTOP, sd))
                {
                    Logger.Info($"Persisted COMPLETESTOP {sd.ToString()}");
                    cbsend(new stops(sd).ToArray());
                }

                break;

            case eCommand.OrderOptions:

                //throw new Exception("This should be handled by the Receive Message handler.");
                Logger.Info($"HandleClientCmd - OrderOptions:{cmd.ToString()}");
                manifestRequest mreqoo = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);

                OrderOptionsData ood = (OrderOptionsData)UMDServer.QueryData(cbsend, mreqoo);
                Logger.Info($"API Manager QueryData OrderOptionsData. {ood.ToString()}");

                break;

            case eCommand.OrderDetails:

                Logger.Info($"HandleClientCmd - OrderDetails:{cmd.ToString()}");
                manifestRequest mreqod = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);

                OrderDetailsData odd = (OrderDetailsData)UMDServer.QueryData(cbsend, mreqod);
                Logger.Info($"API Manager OrderDetailsData QueryData. {odd.ToString()}");
                break;

            case eCommand.UploadManifest:

                Logger.Info($"HandleClientCmd - UploadManifest:{cmd.ToString()}");

                mreq = (manifestRequest) new manifestRequest().FromArray(bytes_cmd);

                Logger.Info($"HandleClientCmd - UploadManifest:  {mreq.ToString()}");

                manifestMaster mm = (manifestMaster) new manifestMaster().FromArray(mreq.bData);

                if (!dRetCall.ContainsKey(NewGuid(mm.requestId)))
                {
                    dRetCall.Add(NewGuid(mm.requestId), cbsend);
                }

                Logger.Info($"UploadManifest cb dRetCall:  {mm.ToString()}");

                try
                {
                    foreach (ManifestMasterData mmdit in UMDServer.Persist(SPCmds.INSERTMANIFEST, new ManifestMasterData(mm, mm.id)))
                    {
                        Logger.Info($"HandleClientCmd - UploadManifest Persisted:{mmdit.ToString()}");
                        Logger.Info($"UploadManifest - Get ManifestDetails: {mmdit.ToString()}");

                        if (!dManDetails.ContainsKey(mmdit.RequestId.ToString() + mmdit.ManifestId.ToString()))
                        {
                            dManDetails.Add(mmdit.RequestId.ToString() + mmdit.ManifestId.ToString(), new List <ManifestDetailsData>());
                        }

                        drillDown.GetManifestDetails(mmdit);
                    }
                    mm.command = eCommand.UploadManifestComplete;
                    Logger.Info($"UploadManifest - ManifestLoadComplete: {mm.ToString()}");
                    cbsend(mm.ToArray());
                }
                catch (Exception e)
                {
                    Logger.Debug("HandleClientCmd - Error exception = " + e.Message);
                    dRetCall.Remove(NewGuid(mm.requestId));
                }
                break;

            case eCommand.Trucks:
                isaCommand req = new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - Trucks: {req.ToString()}");
                TruckData td = (TruckData)UMDServer.QueryData(cbsend, req);
                Logger.Info($"HandleClientCmd - Trucks:  {td.ToString()}");
                break;

            case eCommand.Drivers:
                req = new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - Drivers: {req.ToString()}");
                DriverData dd = (DriverData)UMDServer.QueryData(cbsend, req);
                Logger.Info($"HandleClientCmd - Drivers:  {dd.ToString()}");
                break;

            case eCommand.Stops:
                req = new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd Stops:  {req.ToString()}");
                StopData sdt = (StopData)UMDServer.QueryData(cbsend, req);
                Logger.Info($"Stops QueryData:  {sdt.ToString()}");
                break;

            case eCommand.OrdersLoad:
                req = new manifestRequest().FromArray(bytes_cmd);
                Logger.Info($"HandleClientCmd - OrdersLoad (Start QueryData): {req.ToString()}");
                OrderData od = (OrderData)UMDServer.QueryData(cbsend, req);
                Logger.Info($"OrdersLoad QueryData: {od.ToString()}");
                break;

            case eCommand.AccountReceivable:
                req = new manifestRequest().FromArray(bytes_cmd);
                manifestRequest        mr    = (manifestRequest)req;
                accountReceivable      arecv = (accountReceivable) new accountReceivable().FromArray(mr.bData);                    Logger.Info($"HandleClientCmd - AccountRecievable");
                AccountsReceivableData ard   = (AccountsReceivableData)
                                               UMDServer.QueryData(cbsend, arecv);
                Logger.Info($"AccountsReceivables Complete.");
                break;

            default:
                Logger.Error("HandleClientCmd - ERROR Unknown command.  Parse Error MDM-API");
                break;
            }
        }
        public isaCommand ReceiveMessage(isaCommand cmd)
        {
            switch (cmd.command)
            {
            case eCommand.Ping:
                Logger.Debug($"ReceiveMessage - Received Ping / Replying Pong..");
                WinSysSM.SendMessage(new Command()
                {
                    command = eCommand.Pong
                });
                break;

            case eCommand.Pong:
                Logger.Debug($"ReceiveMessage - Received Pong");
                break;

            case eCommand.LoadFiles:
                Logger.Info($"ReceiveMessage - Copy Files from Winsys Server Paths top App Server Paths:{cmd.ToString()}");
                //CopyFilesToServer(DateTime.Today);
                Logger.Info($"ReceiveMessage - Replying LoadFilesComplete...");
                WinSysSM.SendMessage(new Command()
                {
                    command = eCommand.LoadFilesComplete
                });
                //cbsend(new Command() { command = eCommand.LoadFilesComplete }.ToArray());
                break;

            case eCommand.GenerateManifest:
                Logger.Info($"ReceiveMessage - Generate Manifest from Winsys and SqlServer:{cmd.ToString()}");
                manifestRequest req = (manifestRequest)cmd;
                WinSysSM.SendMessage(req);
                break;

            case eCommand.ManifestDetails:
                Logger.Info($"ReceiveMessage - Generate Manifest Details from Winsys - API Drill Down:{cmd.ToString()}");
                manifestDetails manDet = (manifestDetails)cmd;

                ManifestDetailsData manDetData = new ManifestDetailsData(manDet);
                Logger.Info($"INSERTMANIFESTDETAILS (Persist): {manDetData.ToString()}");

                if (!dManDetails.ContainsKey(manDetData.RequestId.ToString() + manDetData.ManId.ToString()))
                {
                    dManDetails.Add(manDetData.RequestId.ToString() + manDetData.ManId.ToString(), new List <ManifestDetailsData>());
                }

                foreach (var omdit in UMDServer.Persist(SPCmds.INSERTMANIFESTDETAILS, manDetData))
                {
                    dManDetails[manDetData.RequestId.ToString() + manDetData.ManId.ToString()].Add(manDetData);
                }

                Logger.Info($"ManifestDetails Complete: {manDet.ToString()}");
                break;

            case eCommand.ManifestDetailsComplete:
                Logger.Info($"ReceiveMessage - ManifestDetailsComplete:{cmd.ToString()}");
                req = (manifestRequest)cmd;
                List <ManifestDetailsData> mdd = null;
                if (dManDetails.ContainsKey(NewGuid(req.requestId).ToString() + req.id.ToString()))
                {
                    mdd = dManDetails[NewGuid(req.requestId).ToString() + req.id.ToString()];
                    dManDetails.Remove(NewGuid(req.requestId).ToString() + req.id.ToString());
                }
                if (!dManDetails.ContainsKey(NewGuid(req.requestId).ToString()) && mdd != null && mdd.Count > 0)
                {
                    drillDown.GetOrderMasterData(new manifestRequest()
                    {
                        valist = req.valist, requestId = req.requestId, date = req.date, id = req.id
                    });
                }

                dRetCall[NewGuid(cmd.requestId)](req.ToArray());
                //drillDown.reportMDProgressChanged(100, cmd);
                break;

            case eCommand.OrdersUpload:
                Logger.Info($"ReceiveMessage - Orders  reqId: {cmd.requestId}");
                List <IMDMMessage> lstOrd = new List <IMDMMessage>();

                OrderMasterData omd = new OrderMasterData(((orderMaster)cmd));
                orderMaster     om  = new orderMaster(omd);
                //omd.Status = OrderStatus.Shipped;

                lock (dOrdLock)
                {
                    if (!dOrdersMaster.ContainsKey(omd.RequestId.ToString() + omd.ManId.ToString()))
                    {
                        dOrdersMaster.Add(omd.RequestId.ToString() + omd.ManId.ToString(), new List <OrderMasterData>());
                    }
                }
                if (!dOrdersMaster[omd.RequestId.ToString() + omd.ManId.ToString()].Contains(omd))
                {
                    foreach (var omdit in UMDServer.Persist(SPCmds.INSERTORDER, omd))
                    {
                        lock (dOrdLock)
                            dOrdersMaster[omd.RequestId.ToString() + omd.ManId.ToString()].Add((OrderMasterData)omdit);
                    }
                }

                break;

            case eCommand.OrdersLoad:
                Logger.Info($"ReceiveMessage - OrdersLoad  reqId: {cmd.requestId}");
                orderMaster     ord    = (orderMaster)cmd;
                OrderMasterData omdata = new OrderMasterData(ord);

                lock (dOrdLock)
                {
                    if (!dOrdersMaster.ContainsKey(NewGuid(ord.requestId).ToString() + ord.ManId.ToString()))
                    {
                        dOrdersMaster.Add(NewGuid(ord.requestId).ToString() + ord.ManId.ToString(), new List <OrderMasterData>());
                    }
                }
                if (!dOrdersMaster[omdata.RequestId.ToString() + omdata.ManId.ToString()].Contains(omdata))
                {
                    foreach (var omdit in UMDServer.Persist(SPCmds.INSERTORDER, omdata))
                    {
                        lock (dOrdLock)
                            dOrdersMaster[omdata.RequestId.ToString() + omdata.ManId.ToString()].Add((OrderMasterData)omdit);
                    }
                }

                break;

            case eCommand.OrdersLoadComplete:
                Logger.Info($"ReceiveMessage - OrdersLoadComplete:{cmd.ToString()}");
                req = (manifestRequest)cmd;

                if (dOrdersMaster.ContainsKey(NewGuid(cmd.requestId).ToString() + req.id))
                {
                    List <OrderMasterData> lMOrd = dOrdersMaster[NewGuid(cmd.requestId).ToString() + req.id.ToString()].Distinct().ToList();
                    lMOrd.ForEach(x => Logger.Info($"ordldcmp{x.ORD_NO}"));
                    drillDown.GetDrillDownData(req.valist, eCommand.OrderDetails, req.requestId, 1);
                    drillDown.GetDrillDownData(req.valist, eCommand.OrderOptions, req.requestId);
                    lock (dOrdLock)
                        dOrdersMaster.Remove(NewGuid(cmd.requestId).ToString() + req.id);
                }
                else
                {
                    Logger.Info($"No Orders for {cmd.ToString()}");
                }
//                        throw new Exception("OrdersLoadComplete - response not mapped in dOrderMaster.  " +
//                          "Request Id: {NewGuid(cmd.requestId).ToString()} , id: {req.id}. ");
                dRetCall[NewGuid(cmd.requestId)](req.ToArray());

                break;

            case eCommand.OrderDetails:
                Logger.Info($"ReceiveMessage - OrderDetails:{cmd.ToString()}");
                try
                {
                    orderDetails     od  = (orderDetails)cmd;
                    OrderDetailsData odd = new OrderDetailsData(od);

                    lock (dOrdLock)
                    {
                        if (!dOrdersDetails.ContainsKey(odd.RequestId))
                        {
                            dOrdersDetails.Add(odd.RequestId, new List <OrderDetailsData>());
                        }
                    }
                    foreach (var odit in UMDServer.Persist(SPCmds.INSERTORDERDETAILS, odd))
                    {
                        Logger.Info($"INSERTORDERDETAILS Complete: {odit.ToString()}");
                    }

                    //dRetCall[NewGuid(od.requestId)](cmd.ToArray());
                }
                catch (Exception ex) { Logger.Error($"eCommand.OrderDetails {ex.Message}"); }

                break;

            case eCommand.OrderDetailsComplete:
                Logger.Info($"ReceiveMessage - OrderDetailsComplete:{cmd.ToString()}");
                // Can we detrmine the completed transaction at this point from the cmd in order to clean the completed tx for dRetCall
                req = (manifestRequest)cmd;

                lock (dOrdLock)
                {
                    if (dOrdersDetails.ContainsKey(NewGuid(cmd.requestId)))
                    {
                        //                        drillDown.GetOrderOptionsData(dOrdersDetails[NewGuid(cmd.requestId)].Distinct().ToList());
                        //drillDown.GetOrderOptionsData(ordersToRequestDetails[NewGuid(cmd.requestId)]);
                        dOrdersDetails.Remove(NewGuid(cmd.requestId));
                    }
                }

                //dRetCall[NewGuid(cmd.requestId)](req.ToArray());

                break;

            case eCommand.OrderOptions:
                Logger.Info($"ReceiveMessage - OrderOptions  reqId:{cmd.ToString()}");
                try
                {
                    orderOptions     oo  = (orderOptions)cmd;
                    OrderOptionsData ood = new OrderOptionsData(oo);

                    foreach (var oodit in UMDServer.Persist(SPCmds.INSERTORDEROPTIONS, ood))
                    {
                        Logger.Info($"INSERTORDEROPTIONS Complete: {oodit.ToString()}");
                    }

                    //oo.command = eCommand.OrderOptionsComplete;
                    //dRetCall[NewGuid(oo.requestId)](cmd.ToArray());
                }
                catch (Exception ex) { Logger.Error($"eCommand.OrderOptions {ex.Message}"); }

                break;

            case eCommand.OrderOptionsComplete:

                Logger.Info($"ReceiveMessage - OrderOptionsComplete:{cmd.ToString()}");
                // Can we detrmine the completed transaction at this point from the cmd in order to clean the completed tx for dRetCall
                req = (manifestRequest)cmd;
                dRetCall[NewGuid(cmd.requestId)](req.ToArray());

                break;

            case eCommand.OrderUpdatesComplete:
                Logger.Info($"ReceiveMessage - OrderUpdatesComplete:{cmd.ToString()}");

                req = (manifestRequest)cmd;
                dRetCall[NewGuid(cmd.requestId)](req.ToArray());
                break;

            case eCommand.ManifestLoadComplete:
                Logger.Info($"ReceiveMessage - OrdersLoadComplete:{cmd.ToString()}");
                Logger.Info($"ReceiveMessage - OrderDetailsComplete:{cmd.ToString()}");

                req = (manifestRequest)cmd;
                dRetCall[NewGuid(cmd.requestId)](req.ToArray());
                break;

            case eCommand.ScanFile:
                Logger.Info($"ReceiveMessage Cached Success - ScanFile:{cmd.ToString()}");
                scanFile     sf  = (scanFile)cmd;
                ScanFileData sfd = new ScanFileData(sf);

                foreach (var scnfle in UMDServer.Persist(SPCmds.INSERTSCANFILE, sfd))
                {
                    Logger.Info($"INSERTSCNFLE Complete: {scnfle.ToString()}");
                }

                //if(cmd.requestId==null)
                //    dRetCall.FirstOrDefault().Value(sf.ToArray());
                //else
                //    dRetCall[NewGuid(cmd.requestId)](sf.ToArray());

                break;

            default:
                Logger.Error("ReceiveMessage - ERROR Unknown command.  Parse Error MDM-API");
                break;
            }
            return(cmd);
        }
        //public void GetOrderMasterData(List<ManifestDetailsData> mddLst)
        //public void GetOrderMasterData(ManifestMasterData mdd)
        //{
        //    var req = new manifestRequest()
        //    {
        //        command = eCommand.Orders,
        //        requestId = mdd.RequestId.ToByteArray(),
        //        id=mdd.ManifestId
        //    };
        //    sm(req);
        //}

        public void GetOrderMasterData(manifestRequest mr)
        {
            mr.command = eCommand.OrdersLoad;
            sm(mr);
        }
        //public ICommand IsConnectedWinSys = ConnectState.Connected;


        public bool SendMsgWinsys(manifestRequest req)
        {
            return(connectivityModel.SendMsgWinsys(req));
        }