private void NewLog(string text, DateTime timeStamp, int index, CENTIROTRANS transaction) { if (_useLogTable) { _carrierCompliantQueue.NewLog(transaction != null ? (double?)transaction.REPORTJOBID : null, transaction != null ? transaction.REPORTTYPE : null, text, timeStamp, index, transaction != null ? (double?)transaction.REPORT.Length : null, _adapterId); } }
private CENTIROTRANS FindMessageToSend() { CENTIROTRANS transaction = null; double?tmpCCJOBID = null; string tmpCCTYPE = null; string tmpCCMSG = null; string tmpWHID = null; _carrierCompliantQueue.GetNextMessage(_adapterId, ref tmpCCJOBID, ref tmpCCTYPE, ref tmpCCMSG, ref tmpWHID); if (tmpCCJOBID != null) { transaction = new CENTIROTRANS(); transaction.REPORTJOBID = tmpCCJOBID.Value; if (string.IsNullOrEmpty(tmpCCTYPE)) { transaction.REPORTTYPE = ""; } else { transaction.REPORTTYPE = tmpCCTYPE; } if (string.IsNullOrEmpty(tmpCCMSG)) { transaction.REPORT = ""; } else { transaction.REPORT = tmpCCMSG; } if (string.IsNullOrEmpty(tmpWHID)) { transaction.WHID = ""; } else { transaction.WHID = tmpWHID; } Tracing.TraceEvent(TraceEventType.Verbose, 0, string.Format("Found job {0} - {1}", transaction.REPORTJOBID, transaction.REPORTTYPE)); } return(transaction); }
protected override void ExecuteProcedure(JobArgumentCollection args) { // Check parameters _userName = args["userName"]; _password = args["password"]; _useLogTable = Convert.ToBoolean(args["useLogTable"]); _logDirectory = args["logDirectory"]; _printerType = args["printerType"]; if (!string.IsNullOrEmpty(_printerType)) { _fetchEachPrinterType = false; } string dumpXmlValue = args["dumpXml"]; if (!string.IsNullOrEmpty(dumpXmlValue)) { _isXmlDumpEnabled = (dumpXmlValue == "true"); } _documentType = args["documentType"]; if (string.IsNullOrEmpty(_documentType)) { _documentType = "Rdf"; } Tracing.TraceEvent(TraceEventType.Verbose, 0, "Start"); _getMessages = true; _stopJob = false; while (_getMessages && !_stopJob) { DateTime startDT = DateTime.Now; long start = DateTime.Now.Ticks; _getMessages = false; MessageId = Convert.ToString(DateTime.Now.Ticks); DateTime startDBDT = DateTime.Now; StartTransaction(); CENTIROTRANS transaction = FindMessageToSend(); Commit(); DateTime doneDBDT = DateTime.Now; if (transaction != null) { string error = ""; try { //Write log table NewLog("Start message loop", startDT, 0, transaction); //Write log table NewLog("Start fetching message from database", startDBDT, 10, transaction); //Write log table NewLog("Done fetching message from database", doneDBDT, 20, transaction); _getMessages = true; if (_isXmlDumpEnabled) { //Write log table NewLog("Start XML dump to file", DateTime.Now, 30, transaction); new XMLHelper().DumpToFile(transaction.REPORT, LogFileName("FromPLQueue_type_" + transaction.REPORTTYPE)); //Write log table NewLog("Done XML dump to file", DateTime.Now, 40, transaction); } //Write log table NewLog("Start logging message", DateTime.Now, 50, transaction); Tracing.TraceEvent(TraceEventType.Verbose, 0, string.Format("Found REPORTJOBID {0} REPORTTYPE {1}", transaction.REPORTJOBID, transaction.REPORTTYPE)); //Write log table NewLog("Done logging message", DateTime.Now, 60, transaction); StartTransaction(); //Write log table NewLog("Start Centiro send and receive process", DateTime.Now, 70, transaction); switch (transaction.REPORTTYPE) { case "UP": /* Update Parcel */ UpdateParcel(transaction.REPORT); break; case "RP": /* Remove Parcel */ RemoveParcel(transaction.REPORT); break; case "PP": /* Print Parcel */ PrintParcel(transaction.REPORT, transaction.WHID); break; case "US": /* Update Shipment */ UpdateShipment(transaction.REPORT); break; case "PS": /* Print Shipment */ PrintShipment(transaction.REPORT, transaction.WHID); break; case "PD": /* Print Departure */ PrintDeparture(transaction.REPORT); break; case "CD": /* Close Departure */ CloseDeparture(transaction.REPORT); break; default: Tracing.TraceEvent(TraceEventType.Verbose, 0, string.Format("REPORTTYPE {0} not supported", transaction.REPORTTYPE)); break; } //Write log table NewLog("Done Centiro send and receive process", DateTime.Now, 80, transaction); //Write log table NewLog("Start enqueueing documents in print queue", DateTime.Now, 90, transaction); EnqueueDocuments(transaction.WHID); //Write log table NewLog("Done enqueueing documents in print queue", DateTime.Now, 100, transaction); } catch (Exception ex) { Rollback(); //Write log table NewLog("Start exception handler", DateTime.Now, 110, transaction); Tracing.TraceEvent(TraceEventType.Error, 0, string.Format("Exception while printing REPORTJOBID {0} REPORTTYPE {1}", transaction.REPORTJOBID, transaction.REPORTTYPE)); Tracing.TraceData(TraceEventType.Error, 0, ex); error = ex.Message; StartTransaction(); //Write log table NewLog("Done exception handler", DateTime.Now, 120, transaction); } string almid = ""; if (string.IsNullOrEmpty(error)) { //Write log table NewLog("Start updating status processed and logging status change", DateTime.Now, 130, transaction); Tracing.TraceEvent(TraceEventType.Verbose, 0, String.Format("No error reported for REPORTJOBID {0} REPORTTYPE {1}", transaction.REPORTJOBID, transaction.REPORTTYPE)); _carrierCompliantQueue.ModifyProcessed(transaction.REPORTJOBID, MessageId, ref almid); //Write log table NewLog("Done updating status processed and logging status change", DateTime.Now, 140, transaction); } else { //Write log table NewLog("Start updating status error and logging status change", DateTime.Now, 150, transaction); Tracing.TraceEvent(TraceEventType.Error, 0, String.Format("Error reported for REPORTJOBID {0} REPORTTYPE {1}", transaction.REPORTJOBID, transaction.REPORTTYPE)); _carrierCompliantQueue.ModifyError(transaction.REPORTJOBID, error, MessageId, null, ref almid); //Write log table NewLog("Done updating status error and logging status change", DateTime.Now, 160, transaction); } if (!string.IsNullOrEmpty(almid)) { //Write log table NewLog("Start logging almid", DateTime.Now, 170, transaction); Tracing.TraceEvent(TraceEventType.Error, 0, String.Format("Error while updating transaction status. Almid={0}. REPORTJOBID {1} REPORTTYPE {2}", almid, transaction.REPORTJOBID, transaction.REPORTTYPE)); //Write log table NewLog("Done logging almid", DateTime.Now, 180, transaction); } Commit(); //Write log table NewLog("Done processing message", DateTime.Now, 190, transaction); } long stop = DateTime.Now.Ticks; TimeSpan ts = new TimeSpan(stop - start); Tracing.TraceEvent(TraceEventType.Verbose, 0, String.Format("Stop (used {0}s)", ts.TotalSeconds.ToString("0.00"))); } ; }