示例#1
0
        public ReadQueuePNRMsg GetPNRMsg(XmlElement xmlPNR, PNRMsgTemplateEnum _template)
        {
            ReadQueuePNRMsg pnrMsg = null;
            string          recloc = ReclocProcessor.GetReclocFromPNRXml(xmlPNR);

            switch (_template)
            {
            case PNRMsgTemplateEnum.PNRMsg:
                pnrMsg = new ReadQueuePNRMsg()
                {
                    Recloc = recloc
                };
                break;

            case PNRMsgTemplateEnum.VendorRemarkPNRMsg:
                pnrMsg = new VendorRemarkQueuePNRMsg()
                {
                    Recloc        = recloc,
                    GeneralRemark = ReclocProcessor.GetGeneralRemarks(xmlPNR),
                    VendorRemark  = ReclocProcessor.GetVendorRemarks(xmlPNR),
                };
                break;

            default:
                pnrMsg = new ReadQueuePNRMsg()
                {
                    Recloc = recloc
                };
                break;
            }

            return(pnrMsg);
        }
示例#2
0
        public ReadQueuePNRMsg ReadQueue(int _qNumber, string _session, PNRMsgTemplateEnum _template)
        {
            ReadQueuePNRMsg pnrMsg = null;

            if (!string.IsNullOrEmpty(_session))
            {
                objGalConn.SessionID = _session;
            }

            QueueProcessor objQProc = new QueueProcessor(objGalConn);
            XmlElement     xmlPNR   = objQProc.ReadPNRFromQ(_qNumber);

            pnrMsg = GetPNRMsg(xmlPNR, _template);
            return(pnrMsg);
        }
示例#3
0
        public ReadQueuePNRMsg RemoveNGetNextPNRMsg(string _session, PNRMsgTemplateEnum _template)
        {
            ReadQueuePNRMsg pnrMsg = null;

            if (!string.IsNullOrEmpty(_session))
            {
                objGalConn.SessionID = _session;
            }

            QueueProcessor objQProc = new QueueProcessor(objGalConn);
            XmlElement     xmlPNR   = objQProc.RemoveNReadNextPNR();

            pnrMsg = GetPNRMsg(xmlPNR, _template);
            return(pnrMsg);
        }
        public void ScanGDSQueue()
        {
            int currentQKnt = 0;

            try
            {
                #region GET QUEUE COUNT
                try
                {
                    currentQKnt = _gdsPro.GetQCount(_qNumber, _pcc);
                }
                catch (Exception ex)
                {
                    currentQKnt = 0;
                    LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error,
                                                                 Constants.Q_COUNT_ERROR_MSG + Environment.NewLine + ex.Message,
                                                                 _serviceName, _qNumber);
                    _objCloudLoggingQ.AddMsgToLoggingQ(logMsg);
                }
                #endregion

                if (currentQKnt > 0)
                {
                    ReadQueuePNRMsg currentPNR  = null;
                    ReadQueuePNRMsg previousPNR = null;

                    //READ QUEUE
                    currentPNR = _gdsPro.ReadQueue(_qNumber, string.Empty, _msgTemplate);

                    //TRAVERSE GAL QUEUE TO REMOVE PNR AND ADD TO AZURE Q
                    for (int i = 0; i < currentQKnt; i++)
                    {
                        if (currentPNR != null && !string.IsNullOrEmpty(currentPNR.Recloc))
                        {
                            currentPNR.PCC       = _pcc;
                            currentPNR.FromQueue = _qNumber;
                            currentPNR.StartTime = DateTime.Now;

                            previousPNR = null;
                            previousPNR = currentPNR.DeepClone();

                            //_pnrMovementMsg = string.Format(_pnrMovementMsg,

                            // REMOVE CURRENT PNR AND READ NEXT
                            currentPNR = _gdsPro.RemoveNGetNextPNRMsg(string.Empty, _msgTemplate);

                            if (_objDestinationCloudQ != null)
                            {
                                //PUSH MSG INTO AZURE QUEUE (/////IF IT FAILS THEN ADD PNR BACK TO GAL QUEUE/////)
                                _objDestinationCloudQ.AddPNRToCloudQ(previousPNR);
                            }

                            //ADD MESSAGE TO LOGGING QUEUE
                            _pnrMovementMsg = string.Format(_pnrMovementMsg, previousPNR.Recloc);
                            LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Info, _pnrMovementMsg, _serviceName, _qNumber);
                            _objCloudLoggingQ.AddMsgToLoggingQ(logMsg);
                        }
                        else
                        {
                            break;
                        }

                        currentQKnt = currentQKnt - 1;
                    }

                    try { _gdsPro.CloseSession(string.Empty); } catch { }
                }
            }
            catch (Exception ex)
            {
                //LOG EXECEPTION (/////// RESOLVE ISSUE OF SESSION OUT)
                if (_gdsPro != null)
                {
                    try { _gdsPro.CloseSession(string.Empty); } catch (Exception SessionCloseEx) { }
                }

                try
                {
                    LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error,
                                                                 Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine +
                                                                 ex.Message + Environment.NewLine +
                                                                 ex.StackTrace, _serviceName, _qNumber);

                    _objCloudLoggingQ.AddMsgToLoggingQ(logMsg);
                }
                catch (Exception innerEx)
                {
                    //LOG into local file
                    _roboticsLogger.WriteLog(RoboticsLogLevelEnum.Error,
                                             LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error,
                                                                          Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine +
                                                                          innerEx.Message + Environment.NewLine +
                                                                          innerEx.StackTrace, _serviceName, _qNumber).ToString());
                }
            }
        }