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 ProcessMessage(IMDMMessage icmd, Func <byte[], Task> cbsend = null) { ManifestMasterData mmcmd; ManifestDetailsData mdcmd; bool bTerminateThread = false; Request valReq; int cnt = 0; IMDMMessage mcmd; if (icmd.Command == eCommand.Manifest) { mmcmd = (ManifestMasterData)icmd; mmcmd.status = status.Init; Add(mmcmd); //Winsys loading of the Manifest Master update to the original requestId for a ship date Logger.Info($"ManifestVM::Process Message from Winsys: ManifestMaster Query: {mmcmd.ToString()}"); if (dRequests.TryGetValue(mmcmd.RequestId, out valReq)) { if (!valReq.LIds.ContainsKey(mmcmd.LINK)) { Logger.Info($"ManifestVM::Add Init Query link {mmcmd.LINK}"); lock (olock) { valReq.LIds.Add(mmcmd.LINK, status.Init); LoadManifestIdComplete.Add(mmcmd.LINK.ToString()); } } else { Logger.Info($"ManifestVM::Update Init to Releasing for link: {mmcmd.LINK}"); valReq.LIds[mmcmd.LINK] = status.Releasing; } } else { Logger.Error($"Request not found, why are we processing an unkniown message? {mmcmd.RequestId}"); } //Search the Manifest from the SQL Server to see if it was already released. CheckManifestStatus(mmcmd); } else if (icmd.Command == eCommand.CheckManifest) { mmcmd = (ManifestMasterData)icmd; mmcmd.status = status.Init; Add(mmcmd); Logger.Info($"ManifestVM::Process Message: Check Manifest Result: {mmcmd.ToString()}"); if (dRequests.TryGetValue(mmcmd.RequestId, out valReq)) { if (mmcmd.ManifestId != 0) { mmcmd.Command = eCommand.ManifestLoadComplete; mmcmd.status = status.Released; valReq.LIds[mmcmd.LINK] = status.Completed; if (valReq.LinkMid.ContainsKey(mmcmd.LINK)) { lock (olock) valReq.LinkMid[mmcmd.LINK].Add(mmcmd.ManifestId); } else { lock (olock) valReq.LinkMid.Add(mmcmd.LINK, new List <long>() { mmcmd.ManifestId }); } } else { mmcmd.Command = eCommand.Manifest; mmcmd.status = status.Uploaded; if (valReq.LIds.ContainsKey(mmcmd.LINK)) { valReq.LIds[mmcmd.LINK] = status.Completed; } else { valReq.LIds.Add(mmcmd.LINK, status.Completed); } } } Add(mmcmd); } else if (icmd.Command == eCommand.CheckManifestComplete) { mmcmd = (ManifestMasterData)icmd; // if the man id exists update otherwise we are done here mmcmd.Command = eCommand.ManifestLoadComplete; if (LoadManifestIdComplete.Contains(mmcmd.LINK.ToString())) { lock (olock) LoadManifestIdComplete.Remove(mmcmd.LINK.ToString()); } int mcnt = 0; if (dRequests.TryGetValue(mmcmd.RequestId, out valReq)) { if (valReq.LinkMid.ContainsKey(mmcmd.LINK)) { mmcmd.status = status.Released; } else { mmcmd.status = status.Completed; } Add(mmcmd); valReq.ChkIds.Remove(mmcmd.LINK); if ((valReq.LIds.Select(a => a).Where(b => b.Value.CompareTo(status.Init) == 0).Count() == 0 || valReq.LIds.Count == 0) && valReq.ChkIds.Count == 0) { bTerminateThread = true; } cnt = valReq.LIds.Select(a => a).Where(b => b.Value.CompareTo(status.Init) == 0).Count(); Logger.Info($"ManifestVM::Process Manifest {cnt} PENDING remaining."); } if (cnt == 0 && (valReq != null && valReq.ChkIds.Count == 0) && mcnt == 0) { Logger.Info($"ManifestVM::Process Manifest Load Complete May now Terminate Thread."); bTerminateThread = true; } } else if (icmd.Command == eCommand.ManifestLoadComplete) { mmcmd = (ManifestMasterData)icmd; Logger.Info($"ManifestVM::Process Manifest Load Complete Message: {mmcmd.ToString()}"); if (dRequests.TryGetValue(mmcmd.RequestId, out valReq)) { cnt = valReq.LIds.Select(a => a).Where(b => b.Value.CompareTo(status.Init) == 0).Count() + valReq.ChkIds.Count(); if (mmcmd.ManifestId == 0 && mmcmd.LINK != 0) { var it = valReq.LIds.Select(b => b).Where(a => a.Key.CompareTo((Int32)mmcmd.LINK) == 0).FirstOrDefault(); status est = ((KeyValuePair <long, status>)it).Value; if (est == status.Init) { Logger.Info($"ManifestVM::Process Manifest decrementing from {cnt} Inits. Flipping {mmcmd.LINK} Request to PENDING."); valReq.LIds[mmcmd.LINK] = status.Pending; } else { valReq.LIds[mmcmd.LINK] = status.Completed; } cnt = valReq.LIds.Select(a => a).Where(b => b.Value.CompareTo(status.Init) == 0).Count() + valReq.ChkIds.Count(); Logger.Info($"ManifestVM::Process Manifest decrementing New Count {cnt} Inits. Flipping {mmcmd.LINK} Request to PENDING."); } else if (mmcmd.LINK == 0) { // No trucks found in winsys Logger.Info($"No truck manifest found for this date {mmcmd.SHIP_DTE}!"); } else { Logger.Info($"ManifestVM::Process Manifest Load cnt: {cnt} Complete Terminate Thread."); if (valReq.LIds.ContainsKey(mmcmd.LINK)) { lock (olock) valReq.LIds.Remove(mmcmd.LINK); } mmcmd.Command = eCommand.ManifestLoadComplete; lock (olock) LoadManifestIdComplete.Add(mmcmd.ManifestId.ToString()); } cnt = valReq.LIds.Select(a => a).Where(b => b.Value.CompareTo(status.Init) == 0).Count(); Logger.Info($"ManifestVM::Process Manifest {cnt} PENDING remaining."); if (cnt == 0 && valReq.ChkIds.Count == 0) { Logger.Info($"ManifestVM::Process Manifest Load Complete May now Terminate Thread."); bTerminateThread = true; } } } else if (icmd.Command == eCommand.UploadManifestComplete) { mmcmd = (ManifestMasterData)icmd; lock (olock) uploadManifestIdComplete.Add(mmcmd.ManifestId.ToString()); } else if (icmd.Command == eCommand.ManifestDetails) { //dlrnos //Set the status of tyhe manifestDetail id to received. } else if (icmd.Command == eCommand.ManifestDetailsComplete) { //Set the status of tyhe manifestDetail id to completed. mdcmd = (ManifestDetailsData)icmd; //check if there are zero remaining with status Pending // Orders + OrderDetails + ManifestDetails } else if (icmd.Command == eCommand.OrdersLoad) { } else if (icmd.Command == eCommand.OrderUpdatesComplete) { OrderMasterData omd = (OrderMasterData)icmd; } else if (icmd.Command == eCommand.OrderDetails) { OrderDetailsData odd = (OrderDetailsData)icmd; //int wncnt = odd.WIN_CNT; //if (wncnt < 0) wncnt = 0; long id = Int64.Parse(odd.MDL_NO.ToString() + odd.MDL_CNT.ToString() + odd.OPT_NUM.ToString() + odd.ORD_NO.ToString()); if (!LoadManifestIdComplete.Contains(id.ToString())) { Logger.Info($"Add ODC LoadManifestIdComplete: {odd.ORD_NO.ToString()}"); lock (olock) { if (!lstMissingIds.Contains(id)) { LoadManifestIdComplete.Add(id.ToString()); } else { lstMissingIds.Remove(id); Logger.Info($"Ignore already in the missing container, Remove it ODC LoadManifestIdComplete: {odd.ORD_NO.ToString()}"); } } } if ((lstMissingIds.Count + LoadManifestIdComplete.Count - odcnt == 0) && binitOD && (oocnt == 0 && binitOO)) { bTerminateThread = true; } } else if (icmd.Command == eCommand.OrderDetailsComplete) { OrderDetailsData oddc = (OrderDetailsData)icmd; if (!binitOD) { odcnt = oddc.LineNumber; binitOD = true; } if (LoadManifestIdComplete.Contains(oddc.ORD_NO.ToString())) { Logger.Info($"Remove ODC LoadManifestIdComplete: {oddc.ORD_NO.ToString()}"); lock (olock) { LoadManifestIdComplete.Remove(oddc.ORD_NO.ToString()); if (lstMissingIds.Contains(oddc.ORD_NO)) { Logger.Info($"Also Remove ODC lstMissingIds {oddc.ORD_NO.ToString()}"); lstMissingIds.Remove(oddc.ORD_NO); } } } else { Logger.Info($"Add ODC Add lstMissingIds:{oddc.ORD_NO.ToString()}"); lock (olock) lstMissingIds.Add(oddc.ORD_NO); } Logger.Info($"ODO check missing:{lstMissingIds.Count} + complete{LoadManifestIdComplete.Count} - odcnt:{odcnt} oocnt:{oocnt} "); if (lstMissingIds.Count + LoadManifestIdComplete.Count - odcnt == 0 && (oocnt == 0 && binitOO)) { bTerminateThread = true; } } else if (icmd.Command == eCommand.OrderOptions) { OrderOptionsData ood = (OrderOptionsData)icmd; if (LoadManifestIdComplete.Contains(ood.ORD_NO.ToString())) { Logger.Info($"Remove OO LoadManifestIdComplete:{ood.ORD_NO.ToString()} LoadManifestIdComplete.cnt:{LoadManifestIdComplete.Count}"); lock (olock) { LoadManifestIdComplete.Remove(ood.ORD_NO.ToString()); if (lstMissingIds.Contains(ood.ORD_NO)) { Logger.Info($"Also Remove OO lstMissingIds {ood.ORD_NO.ToString()} lstMissingIds cnt:{lstMissingIds.Count}"); lstMissingIds.Remove(ood.ORD_NO); } } } else { Logger.Info($"Add OO Add lstMissingIds: {ood.ORD_NO.ToString()} lstMissingIds cnt:{lstMissingIds.Count}"); lock (olock) lstMissingIds.Add(ood.ORD_NO); } Logger.Info($"OO check missing:{lstMissingIds.Count} + complete{LoadManifestIdComplete.Count} - oocnt:{oocnt} odcnt:{odcnt} "); if ((lstMissingIds.Count + LoadManifestIdComplete.Count - oocnt == 0) && binitOO && (odcnt == 0 && binitOD)) { bTerminateThread = true; } } else if (icmd.Command == eCommand.OrderOptionsComplete) { OrderOptionsData oodc = (OrderOptionsData)icmd; if (!binitOO) { oocnt = oodc.Count; binitOO = true; } if (LoadManifestIdComplete.Contains(oodc.ORD_NO.ToString())) { lock (olock) { Logger.Info($"Remove OOComplete LoadManifestIdComplete: {oodc.ORD_NO.ToString()}"); LoadManifestIdComplete.Remove(oodc.ORD_NO.ToString()); } } else { Logger.Info($"Add OOComplete lstMissingIds:{oodc.ORD_NO.ToString()}"); lock (olock) lstMissingIds.Add(oodc.ORD_NO); } Logger.Info($"OOComplete check: Missing:{lstMissingIds.Count} + Complete:{LoadManifestIdComplete.Count} - oocnt:{oocnt}"); if (lstMissingIds.Count + LoadManifestIdComplete.Count - oocnt == 0 && (odcnt == 0 && binitOD)) { bTerminateThread = true; } } else if (icmd.Command == eCommand.Trucks) { // TruckData td = (TruckData)icmd; } else if (icmd.Command == eCommand.ScanFile) { ScanFileData sf = (ScanFileData)icmd; } else if (icmd.Command == eCommand.TrucksLoadComplete) { // TruckData tdc = (TruckData)icmd; bTerminateThread = true; } else if (icmd.Command == eCommand.Stops) { // StopData sd = (StopData)icmd; } else if (icmd.Command == eCommand.StopsLoadComplete) { // StopData sdc = (StopData)icmd; } else if (icmd.Command == eCommand.OrdersLoad) { // OrderData od = (OrderData)icmd; } else if (icmd.Command == eCommand.OrdersLoadComplete) { // OrderData odc = (OrderData)icmd; // long id = odc.ORD_NO; //lock (olock) //{ // if (LoadManifestIdComplete.Contains(id.ToString())) // { // Logger.Info($"Remove (Error Should skip) OComplete check {LoadManifestIdComplete.Count}"); // LoadManifestIdComplete.Remove(id.ToString()); // } //} //if (dRequests.TryGetValue(icmd.RequestId, out valReq)) //{ // if (valReq.LinkMid.ContainsKey(id)) // odc.status = status.Released; // else // odc.status = status.Completed; // Logger.Info($"ManifestVM::Process Manifest {cnt} PENDING remaining."); //} } else { Logger.Error($"Unhandled command Backgrtound worker handler {Enum.GetName(typeof(eCommand), icmd.Command)}."); } //The request id has completed if (bTerminateThread) { Logger.Info($"ManifestVM::Process Terminate Thread for {icmd.RequestId}."); manifestMasterThread.CompleteBackgroundWorker(icmd.RequestId); LoadManifestRequestComplete = icmd.RequestId.ToString(); LoadManifestCompleted = true; } }
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 IEnumerable <IMDMMessage> InsertData(SPCmds SP, IMDMMessage dat) { if (dat != null) { switch (SP) { case SPCmds.INSERTMANIFEST: ManifestMasterData mst = (ManifestMasterData)dat; using (cnn = NewConnection()) { using (var adapter = new SqlDataAdapter()) { long manid; using (var command = new SqlCommand(SP.ToString(), cnn)) { command.CommandType = CommandType.StoredProcedure; command.Parameters.AddWithValue("@DriverId", SqlDbType.Int).Value = 9; //use mst.UserId query the Driver table command.Parameters.AddWithValue("@TRK_CDE", SqlDbType.VarChar).Value = mst.TRK_CDE; command.Parameters.AddWithValue("@SHP_DTE", SqlDbType.Date).Value = mst.SHIP_DTE.Date; command.Parameters.AddWithValue("@DESC$", SqlDbType.VarChar).Value = mst.Desc; command.Parameters.AddWithValue("@LINK", SqlDbType.BigInt).Value = mst.LINK; command.Parameters.AddWithValue("@NOTES", SqlDbType.VarChar).Value = mst.NOTES; var retVal = command.Parameters.Add("@ManifestId", SqlDbType.BigInt); retVal.Direction = ParameterDirection.Output; adapter.InsertCommand = command; adapter.InsertCommand.ExecuteNonQuery(); manid = (long)retVal.Value; mst.ManifestId = manid; yield return(mst); } } } break; case SPCmds.INSERTMANIFESTDETAILS: ManifestDetailsData mdd = (ManifestDetailsData)dat; //SQL = @""; using (cnn = NewConnection()) { using (var adapter = new SqlDataAdapter()) { using (var command = new SqlCommand(SP.ToString(), cnn)) { command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.AddWithValue("@ManifestId", SqlDbType.Int).Value = mdd.ManId; command.Parameters.AddWithValue("@DSP_SEQ", SqlDbType.Int).Value = mdd.DSP_SEQ; command.Parameters.AddWithValue("@DLR_NO", SqlDbType.BigInt).Value = mdd.DLR_NO; adapter.InsertCommand = command; adapter.InsertCommand.ExecuteNonQuery(); yield return(mdd); } } } break; case SPCmds.INSERTORDER: OrderMasterData omd = (OrderMasterData)dat; //SQL = @""; using (cnn = NewConnection()) { using (var adapter = new SqlDataAdapter()) { using (var command = new SqlCommand(SP.ToString(), cnn)) { command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.AddWithValue("@ORD_NO", SqlDbType.BigInt).Value = omd.ORD_NO; command.Parameters.AddWithValue("@DLR_NO", SqlDbType.BigInt).Value = omd.DLR_NO; command.Parameters.AddWithValue("@SHP_DTE", SqlDbType.Date).Value = omd.SHP_DTE.Date; command.Parameters.AddWithValue("@DLR_NME", SqlDbType.VarChar).Value = omd.DLR_NME; command.Parameters.AddWithValue("@SHP_NME", SqlDbType.VarChar).Value = omd.SHP_NME; command.Parameters.AddWithValue("@SHP_ADDR", SqlDbType.VarChar).Value = omd.SHP_ADDR; command.Parameters.AddWithValue("@SHP_ADDR2", SqlDbType.VarChar).Value = omd.SHP_ADDR2; command.Parameters.AddWithValue("@SHP_TEL", SqlDbType.VarChar).Value = omd.SHP_TEL; command.Parameters.AddWithValue("@SHP_ZIP", SqlDbType.VarChar).Value = omd.SHP_ZIP; command.Parameters.AddWithValue("@CUS_NME", SqlDbType.VarChar).Value = omd.CUS_NME; command.Parameters.AddWithValue("@RTE_CDE", SqlDbType.VarChar).Value = omd.RTE_CDE; command.Parameters.AddWithValue("@SHP_QTY", SqlDbType.Int).Value = omd.SHP_QTY; command.Parameters.AddWithValue("@MAN_ID", SqlDbType.Int).Value = omd.ManId; var retVal = command.Parameters.Add("@CustomerIdOut", SqlDbType.Int); retVal.Direction = ParameterDirection.Output; adapter.InsertCommand = command; adapter.InsertCommand.ExecuteNonQuery(); yield return(omd); } } } break; case SPCmds.INSERTORDERDETAILS: OrderDetailsData odd = (OrderDetailsData)dat; //SQL = @""; using (cnn = NewConnection()) { using (var adapter = new SqlDataAdapter()) { using (var command = new SqlCommand(SP.ToString(), cnn)) { command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.AddWithValue("@ORD_NO", SqlDbType.BigInt).Value = odd.ORD_NO; command.Parameters.AddWithValue("@MDL_NO", SqlDbType.Int).Value = odd.MDL_NO; command.Parameters.AddWithValue("@DESC", SqlDbType.VarChar).Value = odd.DESC; command.Parameters.AddWithValue("@CLR", SqlDbType.Int).Value = odd.CLR; command.Parameters.AddWithValue("@WIDTH", SqlDbType.BigInt).Value = odd.WIDTH; command.Parameters.AddWithValue("@HEIGHT", SqlDbType.BigInt).Value = odd.HEIGHT; command.Parameters.AddWithValue("@MDL_CNT", SqlDbType.Int).Value = odd.MDL_CNT; command.Parameters.AddWithValue("@WIN_CNT", SqlDbType.Int).Value = odd.WIN_CNT; command.Parameters.AddWithValue("@Status", SqlDbType.VarChar).Value = "LOADED"; adapter.InsertCommand = command; adapter.InsertCommand.ExecuteNonQuery(); yield return(odd); } } } break; case SPCmds.INSERTORDEROPTIONS: OrderOptionsData oop = (OrderOptionsData)dat; //SQL = @""; using (cnn = NewConnection()) { using (var adapter = new SqlDataAdapter()) { using (var command = new SqlCommand(SP.ToString(), cnn)) { command.CommandType = System.Data.CommandType.StoredProcedure; command.Parameters.AddWithValue("@ORD_NO", SqlDbType.BigInt).Value = oop.ORD_NO; command.Parameters.AddWithValue("@MDL_NO", SqlDbType.Int).Value = oop.MDL_NO; command.Parameters.AddWithValue("@DESC", SqlDbType.VarChar).Value = oop.DESC; command.Parameters.AddWithValue("@CLR", SqlDbType.Int).Value = oop.CLR; command.Parameters.AddWithValue("@MDL_CNT", SqlDbType.Int).Value = oop.MDL_CNT; // command.Parameters.AddWithValue("@WIN_CNT", SqlDbType.Int).Value = oop.WIN_CNT; command.Parameters.AddWithValue("@Status", SqlDbType.VarChar).Value = "LOADED"; adapter.InsertCommand = command; adapter.InsertCommand.ExecuteNonQuery(); yield return(oop); } } } break; default: throw new Exception("UM SQL Server Stored Procedure Not Found."); } } yield break; }