/// <summary>
        /// Connect with the SAP Service. Used for CRUD operation with SAP Service if using with the datatable
        /// </summary>
        /// <param name="input">Input List of string paramaters</param>
        /// <param name="SAPService">Sap service RFC name</param>
        /// <returns>Datatable</returns>
        public object ConnectSAPService(List <string> input, string SAPService)
        {
            long        TimeTookticks       = DateTime.Now.Ticks;
            XmlNode     xmlExceptionLocStat = null;
            SAPService  _SAPCon             = null;
            XmlElement  xDocTableLocStat    = null;
            XmlDocument xDocLocStat         = null;
            DataTable   _datatable          = new DataTable();

            try
            {
                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Started : " + Tools.TicksToTime(DateTime.Now.Ticks), Entities.LogType.LogMode.Debug);

                _SAPCon     = new SAPService(AppSettingConfig.GetConfigAppSetting("SAPWebServiceURL"));
                xDocLocStat = XMLSerializer.Serialize(input, XMLSerializer.InputType.List);
                switch (SAPService)
                {
                case "GetTableData":
                    xDocTableLocStat = (XmlElement)_SAPCon.GetTableData(xDocLocStat, out xmlExceptionLocStat);
                    break;

                case "R3EmpCreation":
                    xDocTableLocStat = (XmlElement)_SAPCon.R3EmpCreation(xDocLocStat, out xmlExceptionLocStat);
                    break;
                }

                xDocTableLocStat = (XmlElement)_SAPCon.GetTableData(xDocLocStat, out xmlExceptionLocStat);

                List <string> SAPErrorLocStat = (List <string>)XMLSerializer.Deserialize(xmlExceptionLocStat.OuterXml, XMLSerializer.OutputType.List);

                if (SAPErrorLocStat != null && SAPErrorLocStat.Count > 0 && SAPErrorLocStat[0] != null && SAPErrorLocStat[0].ToString() == "1000")
                {
                    _datatable = (DataTable)XMLSerializer.Deserialize(xDocTableLocStat.OuterXml, XMLSerializer.OutputType.DataTable);
                }

                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Resultset Datatable : " + Newtonsoft.Json.JsonConvert.SerializeObject(_datatable), Entities.LogType.LogMode.Debug);
                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Resultset Datatable End: --------------------------------" + Environment.NewLine + "" + Environment.NewLine, Entities.LogType.LogMode.Debug);
                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Service Ended : " + Tools.TicksToTime(TimeTookticks), Entities.LogType.LogMode.Debug);
                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Service Ended: --------------------------------" + Environment.NewLine + "" + Environment.NewLine, Entities.LogType.LogMode.Debug);

                return(_datatable);
            }
            catch (Exception ex)
            {
                Log4net.LogWriter("SAPService", "Service", "ConnectSAPService || Error : " + ex.Message, Entities.LogType.LogMode.Error);
            }
            finally
            {
                _datatable          = null;
                _SAPCon             = null;
                xDocLocStat         = null;
                xDocTableLocStat    = null;
                xmlExceptionLocStat = null;
            }
            return(null);
        }
示例#2
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation($"AES67Discovery Server started at: { DateTime.Now }");
            _logger.LogInformation($"SapSettings: { JsonSerializer.Serialize(this._settings) }");

            _sap = new SAPLib.SAPService()
            {
                Interval = TimeSpan.FromMilliseconds(_settings.Interval)
            };
            _sap.OnMessageSend += delegate(Object o, MessageSendEventArgs args)
            {
                _logger.LogInformation("Send SAP/SDP packet (0x{0:X02})",
                                       args.Packet.MessageIdentifierHash);
            };

            if (!String.IsNullOrEmpty(_settings.NetInterface))
            {
                _logger.LogInformation($"Setting multicast send interface to: { _settings.NetInterface }");
                _sap.SetSendInterface(IPAddress.Parse(_settings.NetInterface));
            }


            foreach (string item in this._settings.SDPFiles)
            {
                try
                {
                    SapPacket program = new SapPacket();
                    program.OriginatingSource = String.IsNullOrEmpty(_settings.NetInterface) ? SAPService.GetLocalIPAddress() : IPAddress.Parse(_settings.NetInterface);;
                    program.AttachSDP(item);

                    _sap.Program.Add(item, program);
                }
                catch (FileNotFoundException e)
                {
                    _logger.LogError(e.Message);
                }
                catch (Exception e)
                {
                    _logger.LogError(e.Message);
                }
            }

            _sap.Start();

            return(Task.CompletedTask);
        }
 public DraftDeliveryController(IOptions <AppSettings> options)
 {
     _appSettings = options.Value;
     _sapService  = new SAPService(_appSettings);
     _sapService.Connect();
 }