示例#1
0
文件: example.cs 项目: james-rank/cdr
    static void Main(string[] args)
    {
        long field1 = 1;
        long field2 = 2;
        long field3 = 55;

        Cdr d = new Cdr();

        d.setInteger(field1, 123);

        Console.WriteLine(d.toString());

        d.setString(field2, "Hello");
        d.setString(field3, "World");

        Console.WriteLine(d.toString());
        Console.WriteLine(d.getInt32(field1));
        Console.WriteLine(d.getString(field3));

        // this should be a string
        try {
            Console.WriteLine(d.getInt32(3));
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

        Console.WriteLine("done");
    }
示例#2
0
        public override void onModifyAck(ulong seqno, Cdr msg)
        {
            this.logger.log(LogSeverity.level.INFO, "onModifyAck msg...");
            this.logger.log(LogSeverity.level.INFO, msg.toString());

            // cancel order
            String orderId = msg.getString(codecBinding.OrderID);

            Cdr cancel = new Cdr();

            cancel.setString(codecBinding.OriginalClientOrderID, "myorder1");
            cancel.setString(codecBinding.ClientOrderID, "myorder2");
            cancel.setString(codecBinding.OrderID, orderId);
            cancel.setInteger(codecBinding.InstrumentID, 133215);  // VOD.L
            cancel.setInteger(codecBinding.Side, 1);
            cancel.setString(codecBinding.RfqID, "XXXX");

            cancel.setInteger(codecBinding.ReservedField1, 0);
            cancel.setInteger(codecBinding.ReservedField2, 0);

            if (!this.gwc.sendCancel(cancel))
            {
                this.logger.log(LogSeverity.level.INFO, "failed to send cancel myorder1...");
            }
        }
示例#3
0
        public override void onLoggingOn(Cdr msg)
        {
            this.logger.log(LogSeverity.level.INFO, "session logging on...");

            // set username and password
            msg.setString(codecBinding.UserName, this.username);
            msg.setString(codecBinding.Password, this.password);
        }
示例#4
0
文件: LoanVf.cs 项目: stepinto163/Qdp
        public override Loan GenerateInstrument()
        {
            var numPaymentsPerYear = (int)TradeInfo.Frequency.ToFrequency().CountPerYear();
            var ppm = TradeInfo.AbsPrepaymentModel.ToEnumType <AbsPrepaymentModel>();
            var dm  = TradeInfo.AbsDefaultModel.ToEnumType <AbsDefaultModel>();

            IMortgagePrepayment prepaymentModel;

            if (ppm == AbsPrepaymentModel.Psa)
            {
                prepaymentModel = new Psa(TradeInfo.PsaMultiplier, 0.06, 30, numPaymentsPerYear);
            }
            else if (ppm == AbsPrepaymentModel.Cpr)
            {
                prepaymentModel = new Cpr(TradeInfo.AnnualCprRate, numPaymentsPerYear);
            }
            else
            {
                prepaymentModel = new Psa();
            }

            IMortgageDefault defaultModel;

            if (dm == AbsDefaultModel.Sda)
            {
                defaultModel = new Sda(TradeInfo.SdaMultiplier, TradeInfo.RecoveryRate, numPaymentsPerYear);
            }
            else if (dm == AbsDefaultModel.Cdr)
            {
                defaultModel = new Cdr(TradeInfo.AnnualCdrRate, numPaymentsPerYear, TradeInfo.RecoveryRate);
            }
            else
            {
                defaultModel = new Sda();
            }

            var mortgageCalcMethod = TradeInfo.MortgageCalcMethod.ToEnumType <MortgageCalcMethod>();

            return(new Loan(TradeInfo.StartDate.ToDate(),
                            TradeInfo.MaturityDate.ToDate(),
                            TradeInfo.FirstPaymentDate.ToDate(),
                            TradeInfo.Notional,
                            TradeInfo.NumOfPayment,
                            TradeInfo.DayCount.ToDayCountImpl(),
                            TradeInfo.Frequency.ToFrequency(),
                            TradeInfo.Coupon,
                            TradeInfo.ResetDate.ToDate(),
                            TradeInfo.IsFloatingRate,
                            string.IsNullOrEmpty(TradeInfo.IndexType) ? IndexType.None : TradeInfo.IndexType.ToIndexType(),
                            TradeInfo.FloatingRateMultiplier,
                            TradeInfo.Amortization.ToAmortizationType(),
                            TradeInfo.Currency.ToCurrencyCode(),
                            mortgageCalcMethod == MortgageCalcMethod.Simple ? new SimpleMortgageCalculator(prepaymentModel, defaultModel) : (IMortgageCalculator) new MortgageCalculator(prepaymentModel, defaultModel),
                            TradeInfo.TaxRate
                            ));
        }
示例#5
0
 void createNewMonthlyCDRdb()
 {
     if (DateTime.Now.Day > 25 && DateTime.Now.Hour == 6 && DateTime.Now.Minute == 5)
     {
         try {
             Cdr.CreateDb();
         }
         catch (Exception _ex) {
             TimokLogger.Instance.LogRbr(LogSeverity.Critical, "Housekeeper.createNewMonthlyCDRdb", "Create CdrDb, Exception: " + _ex);
         }
     }
 }
示例#6
0
        int parseCarrier(Cdr pCdr, out CarrierAcct pCarrierAcct, out CarrierRoute pCarrierRoute)
        {
            pCarrierAcct  = null;
            pCarrierRoute = null;

            if (pCdr.CarrierAcctId == 0)
            {
                T.LogRbr(LogSeverity.Error, "BillingService.parseCarrier:", "Carrier NOT FOUND, CarrierAcctId=0");
                return(1);
            }

            try {
                pCarrierAcct = CarrierAcct.Get(pCdr.CarrierAcctId);
                if (pCarrierAcct == null)
                {
                    return(1);
                }

                if (CarrierAcct.NumberOfCallsCounter.ContainsKey(pCarrierAcct.Id))
                {
                    if (CarrierAcct.NumberOfCallsCounter[pCarrierAcct.Id] > 0)
                    {
                        T.LogRbr(LogSeverity.Debug, "BillingService.parseCarrier:", string.Format("Calls LIMIT stat, CarrierAcct={0}, NumberOfCalls={1}", pCarrierAcct.Id, CustomerAcct.NumberOfCallsCounter[pCarrierAcct.Id]));
                        CarrierAcct.NumberOfCallsCounter[pCarrierAcct.Id] -= 1;
                    }
                }

                //-- get carrier route
                pCarrierRoute = CarrierRoute.Get(pCdr.CarrierAcctId, pCdr.CarrierBaseRouteId);
                if (pCarrierRoute == null)
                {
                    T.LogRbr(LogSeverity.Error, "BillingService.parseCarrier:", string.Format("Route NOT FOUND, CarrierAcctId={0}, CarrierBaseRouteId={1}, DestNumber={2}", pCarrierAcct.Id, pCdr.CarrierBaseRouteId, pCdr.DestNumber));
                    return(1);
                }
                pCdr.CarrierRouteName = pCarrierRoute.Name;

                //-- get term ep
                var _termEP = (new RoutingService()).GetTermEP(pCdr.TermIP, pCdr.Duration);
                if (_termEP == null)
                {
                    T.LogRbr(LogSeverity.Error, "BillingService.parseCarrier:", string.Format("TermEP NOT FOUND={0}", pCdr));
                    pCdr.TermEPId = 0;
                    return(1);
                }
                pCdr.TermEPId = _termEP.Id;
            }
            catch (Exception _ex) {
                T.LogRbr(LogSeverity.Error, "BillingService.parseCarrier:", string.Format("Exception:\r\n{0}", _ex));
                return(1);
            }
            return(0);
        }
示例#7
0
        public static bool Consume(string pFilePath)
        {
            bool _result;

            try {
                _result = Cdr.DeserializeAndImport(pFilePath);
                TimokLogger.Instance.LogRbr(LogSeverity.Status, "R_Cdr.Consume", string.Format("Finished, File={0}", pFilePath));
            }
            catch (Exception _ex) {
                TimokLogger.Instance.LogRbr(LogSeverity.Status, "R_Cdr.Consume", string.Format("File={0}, Exception:\r\n{1}", pFilePath, _ex));
                return(false);
            }
            return(_result);
        }
        static bool rerateCDR(CDRViewRow_Base pCdrViewRow, IBackgroundWorker pBackgroundWorker)
        {
            try {
                var _customerAcct = CustomerAcct.Get(pCdrViewRow.Customer_acct_id);
                if (_customerAcct == null)
                {
                    pBackgroundWorker.ReportStatus(string.Format("ERROR! CustomerAcct NOT FOUND, {0}", pCdrViewRow.Customer_acct_id));
                    return(false);
                }

                var _customerRoute = CustomerRoute.Get(_customerAcct.ServiceId, _customerAcct.RoutingPlanId, pCdrViewRow.Customer_route_id);
                if (_customerRoute == null)
                {
                    pBackgroundWorker.ReportStatus(string.Format("ERROR! CustomerRoute NOT FOUND, {0}", pCdrViewRow.Customer_route_id));
                    return(false);
                }

                var _carrierAcct = CarrierAcct.Get(pCdrViewRow.Carrier_acct_id);
                if (_carrierAcct == null)
                {
                    pBackgroundWorker.ReportStatus(string.Format("ERROR! CarrierAcct NOT FOUND, {0}", pCdrViewRow.Carrier_acct_id));
                    return(false);
                }

                var _carrierRoute = CarrierRoute.Get(_carrierAcct.Id, pCdrViewRow.Carrier_route_id);
                if (_carrierRoute == null)
                {
                    pBackgroundWorker.ReportStatus(string.Format("ERROR! CarrierRoute NOT FOUND, {0}", pCdrViewRow.Carrier_route_id));
                    return(false);
                }

                var _cdr = new Cdr(pCdrViewRow);
                _customerAcct.RateCall(_customerRoute, ref _cdr);
                pCdrViewRow.Customer_duration = _cdr.CustomerDuration;
                pCdrViewRow.Price             = _cdr.CustomerPrice;
                _carrierAcct.RateCall(_carrierRoute, ref _cdr);
                pCdrViewRow.Carrier_duration = _cdr.CarrierDuration;
                pCdrViewRow.Cost             = _cdr.CarrierCost;
            }
            catch (Exception _ex) {
                pBackgroundWorker.ReportStatus(string.Format("Exception! {0}", _ex.Message));
                TimokLogger.Instance.LogRbr(LogSeverity.Critical, "CdrExportController.rerate", string.Format("Exception:\r\n{0}", _ex));
                return(false);
            }
            return(true);
        }
        string getCustomerRouteMinutesSummary(DateTime pDate)
        {
            var _sb = new StringBuilder();
            var _customerRouteMinutesSummaries = Cdr.GetCustomerRouteMinutesSummaries(TimokDate.ParseToShortTimokDate(pDate));

            _sb.Append("Inbound Country Summary (Minutes)\r\n");
            _sb.Append("-------------------------------------------------------\r\n");
            decimal _totalMinutes = 0;

            foreach (var _routeMinutesSummary in _customerRouteMinutesSummaries)
            {
                _sb.Append(_routeMinutesSummary.Name + ":" + "\t\t\t" + _routeMinutesSummary.Minutes.ToString("0.00") + "\r\n");
                _totalMinutes = decimal.Add(_totalMinutes, _routeMinutesSummary.Minutes);
            }
            _sb.Append("\r\n" + "Total Minutes:\t\t" + _totalMinutes.ToString("0.00") + "\r\n\r\n");
            return(_sb.ToString());
        }
示例#10
0
        int parseCustomer(Cdr pCdr, out CustomerAcct pCustomerAcct, out CustomerRoute pCustomerRoute)
        {
            var _result = 0;

            pCustomerAcct  = null;
            pCustomerRoute = null;

            try {
                pCustomerAcct = pCdr.CustomerAcctId > 0 ? CustomerAcct.Get(pCdr.CustomerAcctId) : CustomerAcct.Get(pCdr.DNIS);

                if (CustomerAcct.NumberOfCallsCounter.ContainsKey(pCustomerAcct.Id))
                {
                    if (CustomerAcct.NumberOfCallsCounter[pCustomerAcct.Id] > 0)
                    {
                        T.LogRbr(LogSeverity.Debug, "BillingService.parseCustomer:", string.Format("Calls LIMIT stat, CustomerAcct={0}, NumberOfCalls={1}", pCustomerAcct.Id, CustomerAcct.NumberOfCallsCounter[pCustomerAcct.Id]));
                        CustomerAcct.NumberOfCallsCounter[pCustomerAcct.Id] -= 1;
                    }
                }

                //-- get customer route
                pCustomerRoute = CustomerRoute.Get(pCustomerAcct.ServiceId, pCustomerAcct.RoutingPlanId, pCdr.CustomerBaseRouteId);
                if (pCustomerRoute == null)
                {
                    T.LogRbr(LogSeverity.Debug, "BillingService.parseCustomer:", string.Format("Didn't find CustomerRoute by CustomerRouteId={0}", pCdr.CustomerBaseRouteId));
                    try { pCustomerRoute = CustomerRoute.Get(pCustomerAcct.ServiceId, pCustomerAcct.CallingPlanId, pCustomerAcct.RoutingPlanId, pCdr.DestNumber); } catch { }
                    if (pCustomerRoute == null)
                    {
                        T.LogRbr(LogSeverity.Debug, "BillingService.parseCustomer:", string.Format("Didn't find CustomerRoute by ServiceId={0}, CallingPlanId={1}, DestNumber={2}", pCustomerAcct.ServiceId, pCustomerAcct.CallingPlanId, pCdr.DestNumber));
                        return(++_result);
                    }
                }
            }
            catch (RbrException _ex) {
                T.LogRbr(LogSeverity.Error, "BillingService.parseCustomer:", string.Format("Exception:\r\n{0}", _ex.Message));
                return(1);
            }
            catch (Exception _ex) {
                T.LogRbr(LogSeverity.Error, "BillingService.parseCustomer:", string.Format("Exception:\r\n{0}", _ex));
                return(1);
            }
            return(_result);
        }
示例#11
0
        /// <summary>
        /// ----------------------------------------------------------------------------------------
        /// </summary>
        public bool CallComplete(string pGuid, string pCallId, string pCdr)
        {
            var _result = 0;
            Cdr _cdr    = null;

            try {
                var _currentNode = new CurrentNode();

                if (_currentNode.IsSIP)
                {
                    logger.LogRbr(LogSeverity.Status, CALL_COMPLETE_LABEL, string.Format("Request: Cdr={0}|{1}", pCallId, pCdr));
                }

                _cdr = new Cdr(pGuid, pCdr, false);

                var _billingService = new BillingService(configuration, logger);
                _result = _billingService.ProcessCallComplete(_cdr);

                _result += _cdr.Insert();

                if (_currentNode.IsSIP)
                {
                    logger.LogRbr(LogSeverity.Status, CALL_COMPLETE_LABEL, string.Format("Response: {0}", _result == 0));
                }
            }
            catch (RbrException _rbrex) {
                logger.LogRbr(LogSeverity.Error, CALL_COMPLETE_LABEL, string.Format("RbrException, from: {0}, {1}", _rbrex.Source, _rbrex.Message));
            }
            catch (Exception _ex) {
                logger.LogRbr(LogSeverity.Critical, CALL_COMPLETE_LABEL, string.Format("Exception:\r\n{0}", _ex));
            }
            finally {
                if (_cdr != null)
                {
                    cdrAggrExporter.OnCallComplete(_cdr);
                }
            }
            return(_result == 0);
        }
示例#12
0
        string getEndpointAsrSummary(DateTime pDate)
        {
            var _sb = new StringBuilder();
            var _endpointASRList = Cdr.GetTermEndpointsASR(TimokDate.ParseToShortTimokDate(pDate));

            _sb.Append("\r\nTerminating TG ASR (All/Connected)\r\n");
            _sb.Append("-------------------------------------------------------\r\n");
            var _totalCalls         = 0;
            var _totalConectedCalls = 0;

            foreach (var _endpointASR in _endpointASRList)
            {
                _sb.Append(_endpointASR.Alias);
                _sb.Append(" [TG" + _endpointASR.EndpointId + "]:" + "\t\t\t" + calculateTotalASR(_endpointASR.Calls, _endpointASR.ConnectedCalls) + "\t\t\t(" +
                           _endpointASR.Calls + "/" + _endpointASR.ConnectedCalls + ")\r\n");
                //_sb.Append(" [TG" + _endpointAsr.EndpointId + "]:" + "\t\t\t" + _endpointAsr.Asr.ToString("0%") + "\t\t\t(" + _endpointAsr.Calls + "/" + _endpointAsr.ConnectedCalls + ")\r\n");
                _totalCalls         += _endpointASR.Calls;
                _totalConectedCalls += _endpointASR.ConnectedCalls;
            }
            _sb.Append("\r\n" + "Total:\t\t\t" + calculateTotalASR(_totalCalls, _totalConectedCalls) + "\t\t\t(" + _totalCalls + "/" + _totalConectedCalls + ")\r\n");
            return(_sb.ToString());
        }
示例#13
0
文件: example.cs 项目: ssh352/codec
    static void Main(string[] args)
    {
        Cdr d = new Cdr();

        d.setString(codecBinding.MessageType, "A");
        d.setString(codecBinding.UserName, "username");
        d.setString(codecBinding.Password, "password");
        d.setString(codecBinding.NewPassword, "password1");
        d.setInteger(codecBinding.MessageVersion, 0);

        Console.WriteLine(d.toString());

        CodecFactory cf       = new CodecFactory();
        Codec        lseCodec = cf.getCodec("lse");

        Neueda.Codecs.Buffer b = lseCodec.encode(d);

        Console.WriteLine(b);

        Cdr decoded = lseCodec.decodeBuffer(b).getCdr();

        Console.WriteLine(decoded.toString());
    }
示例#14
0
        private void GetRecordDataByEmpid(string empid)
        {
            if (object.Equals(iconnection, null))
            {
                //以后加入log功能
                throw new Exception("实例化接口失败!");
            }
            string sql = @"select t.id, t.name, t.create_tiem, t.data_id
  from rcd_inpatient_record t
 where t.inpatient_record_set_id =
       (select b.id
          from rcd_inpatient_record_set b
         where b.inpatient_id =
               (select a.id
                  from vhis_inpatientinfo a
                 where a.empi_id = '{0}'))";

            sql = string.Format(sql, empid);
            DataSet   dtSet   = new DataSet();
            DataTable dtTabel = new DataTable();

            dtSet = iconnection.ExcuteQuerySql(sql);
            if (object.Equals(dtSet, null) && dtSet.Tables.Count > 0)
            {
                dtTabel = dtSet.Tables[0] as DataTable;
                List <Cdr> cdrList = new List <Cdr>();
                for (int i = 0; i < dtTabel.Rows.Count; i++)
                {
                    Cdr cdrinfo = new Cdr();

                    DataRow dtR = dtTabel.Rows[i];
                    cdrinfo.RecordId   = dtR[0].ToString();
                    cdrinfo.RecordName = dtR[1].ToString();
                }
                //dtConfirmExec.PrimaryKey = new DataColumn[] { dtConfirmExec.Columns["EXEC_SQN"] };
            }
        }
示例#15
0
        public override void onOrderAck(ulong seqno, Cdr msg)
        {
            this.logger.log(LogSeverity.level.INFO, "onOrderAck msg...");
            this.logger.log(LogSeverity.level.INFO, msg.toString());

            // get order id from ack
            String orderId = msg.getString(codecBinding.OrderID);

            // send modify
            Cdr modify = new Cdr();

            modify.setString(codecBinding.OriginalClientOrderID, "myorder");
            modify.setString(codecBinding.ClientOrderID, "myorder1");
            modify.setString(codecBinding.OrderID, orderId);
            modify.setInteger(codecBinding.InstrumentID, 133215);  // VOD.L
            modify.setInteger(codecBinding.OrderQty, 2000);
            modify.setInteger(codecBinding.OrderType, 2);
            modify.setDouble(codecBinding.LimitPrice, 1234.56);
            modify.setInteger(codecBinding.Side, 1);
            modify.setString(codecBinding.Account, "account");
            modify.setInteger(codecBinding.ExpireDateTime, 0);
            modify.setInteger(codecBinding.DisplayQty, 0);
            modify.setDouble(codecBinding.StopPrice, 0.0);
            modify.setInteger(codecBinding.PassiveOnlyOrder, 0);
            modify.setInteger(codecBinding.ClientID, 1234);
            modify.setInteger(codecBinding.MinimumQuantity, 0);
            modify.setInteger(codecBinding.PassiveOnlyOrder, 0);
            modify.setInteger(codecBinding.ReservedField1, 0);
            modify.setInteger(codecBinding.ReservedField2, 0);
            modify.setInteger(codecBinding.ReservedField3, 0);
            modify.setInteger(codecBinding.ReservedField4, 0);

            if (!this.gwc.sendModify(modify))
            {
                this.logger.log(LogSeverity.level.ERROR, "failed to send modify");
            }
        }
示例#16
0
        /// <summary>
        /// ----------------------------------------------------------------------------------------
        /// </summary>
        public int ProcessCallComplete(Cdr pCdr)
        {
            //-- Get OrigEP
            var _origEP = Endpoint.Get(pCdr.OrigIP);

            if (_origEP == null)
            {
                T.LogRbr(LogSeverity.Critical, "ProcessCallComplete:", string.Format("Endpoint NOT FOUND, IP={0}", pCdr.OrigIP));
                return(1);
            }
            pCdr.OrigEPId = _origEP.Id;

            //-- Remove prefix and '011' from destination number
            if (_origEP.WithPrefixes)
            {
                pCdr.PrefixIn = _origEP.GetPrefixIn(pCdr.DestNumber);
                if (pCdr.PrefixIn.Length > 0)
                {
                    pCdr.DestNumber = pCdr.DestNumber.Substring(pCdr.PrefixIn.Length);
                }
            }
            pCdr.LocalNumber = pCdr.DestNumber;

            if (pCdr.DestNumber.StartsWith(AppConstants.ZeroOneOne))
            {
                pCdr.DestNumber = pCdr.DestNumber.Substring(3);
            }

            //-- get carrier acct, termEp and route
            int          _result       = 0;
            CarrierRoute _carrierRoute = null;
            CarrierAcct  _carrierAcct  = null;

            if (_result == 0)
            {
                _result = parseCarrier(pCdr, out _carrierAcct, out _carrierRoute);
            }

            //-- Get CustomerAcct and route
            CustomerRoute _customerRoute = null;
            CustomerAcct  _customerAcct  = null;

            if (pCdr.CustomerAcctId > 0 || pCdr.DNIS > 0)
            {
                _result = parseCustomer(pCdr, out _customerAcct, out _customerRoute);
                if (_customerRoute != null)
                {
                    pCdr.CountryCode       = _customerRoute.CountryCode;
                    pCdr.CustomerRouteName = _customerRoute.Name;
                    pCdr.LocalNumber       = pCdr.DestNumber.Substring(_customerRoute.CountryCode.ToString().Length);
                }
            }
            else
            {
                _result++;
            }

            //-- extract prefix-out
            if (_carrierAcct != null && !string.IsNullOrEmpty(_carrierAcct.PrefixOut))
            {
                pCdr.PrefixOut = _carrierAcct.PrefixOut;
            }
            else if (_customerAcct != null && !string.IsNullOrEmpty(_customerAcct.PrefixOut))
            {
                pCdr.PrefixOut = _customerAcct.PrefixOut;
            }

            //-- do rating, debiting
            if (_carrierAcct != null && _customerAcct != null && pCdr.Duration > 0 && _result == 0)
            {
                _result += _carrierAcct.RateCall(_carrierRoute, ref pCdr);
                _result += _customerAcct.RateCall(_customerRoute, ref pCdr);
                if (_customerAcct.IsPrepaid)
                {
                    _customerAcct.Debit(pCdr.CustomerPrice);
                }
            }

            //-- always do Retail RetailAcct and SubAcct status needs to be reset to 'Active'
            var _retailAcct = RetailAccount.Get(_customerAcct, pCdr, configuration, T);

            if (_retailAcct != null && _customerRoute != null)
            {
                _result += _retailAcct.Rate(_customerRoute, ref pCdr);
                if (_retailAcct.IsPrepaid && pCdr.RetailPrice > decimal.Zero)
                {
                    _retailAcct.Debit(pCdr.RetailPrice, pCdr.UsedBonusMinutes);
                }
            }

            //-- Write to text file
            if (configuration.Main.LogCdrToFile)
            {
                _result += dualFileWriter.WriteLine(pCdr.Export());
            }

            return(_result);
        }
示例#17
0
        /// <summary>
        /// Returns a record from the CDR table
        /// </summary>
        /// <param name="nodeId">Id of Node</param>
        /// <param name="chanId">Id of Channel</param>
        /// <returns>CDR data record</returns>
        public Cdr GetRecord(int nodeId, string chanId)
        {
            var cdr = new Cdr();

            using (var connection = new NpgsqlConnection(Setup.ConnectionStringVoipTest))
            {
                using (var command = new NpgsqlCommand())
                {
                    command.CommandText = @"SELECT id, sqltime, yatetime, billid, chan, host(address), port, caller, callername, called, status,
                        reason, ended, gateway_account_id, gateway_ip_id, customer_ip_id, gateway_price_per_min, gateway_price_total,
                        gateway_currency::TEXT, gateway_price_id, customer_price_per_min, customer_price_total, customer_currency::TEXT,
                        customer_price_id, dialcode_master_id, node_id, billed_on, gateway_id, customer_id, format, formats, rtp_address, sqltime_end,
                        tech_called, rtp_port, trackingid, billtime, ringtime, duration, direction::TEXT, cause_q931, routing_waiting_time,
                        routing_processing_time, error, cause_sip, sip_user_agent, sip_x_asterisk_hangupcause, sip_x_asterisk_hangupcausecode,
                        responsetime, rtp_packets_sent, rtp_octets_sent, rtp_packets_received, rtp_octets_received, rtp_packet_loss, rtp_forward
                        FROM cdr WHERE node_id = @nodeid AND chan = @chan AND sqltime > NOW() - INTERVAL '3 hours';";
                    command.Connection  = connection;
                    command.CommandType = System.Data.CommandType.Text;

                    command.Parameters.Add("nodeid", NpgsqlDbType.Integer).Value = nodeId;
                    command.Parameters.Add("chan", NpgsqlDbType.Text).Value      = chanId;

                    try
                    {
                        connection.Open();

                        using (var reader = command.ExecuteReader())
                        {
                            if (reader.HasRows)
                            {
                                int i = -1;
                                reader.Read();

                                cdr.Id         = reader.GetInt64(++i);
                                cdr.SqlTime    = reader.GetTimeStamp(++i).ToDateTime();
                                cdr.YateTime   = reader.GetDecimal(++i);
                                cdr.BillId     = reader.GetString(++i);
                                cdr.Chan       = reader.GetString(++i);
                                cdr.Address    = reader.GetString(++i);
                                cdr.Port       = reader.GetInt32(++i);
                                cdr.Caller     = reader.GetString(++i);
                                cdr.Callername = reader.GetString(++i);
                                cdr.Called     = reader.GetString(++i);
                                cdr.Status     = reader.GetString(++i);
                                cdr.Reason     = reader.GetString(++i);
                                cdr.Ended      = reader.GetBoolean(++i);
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayAccountId = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayIpId = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerIpId = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayPricePerMin = reader.GetDecimal(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayPriceTotal = reader.GetDecimal(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayCurrency = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayPriceId = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerPricePerMin = reader.GetDecimal(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerPriceTotal = reader.GetDecimal(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerCurrency = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerPriceId = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.DialcodeMasterId = reader.GetInt32(i);
                                }
                                cdr.NodeId = reader.GetInt32(++i);

                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.BilledOn = reader.GetTimeStamp(i).ToDateTime();
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.GatewayId = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CustomerId = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Format = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Formats = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPAddress = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.SqlTimeEnd = reader.GetTimeStamp(i).ToDateTime();
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.TechCalled = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPPort = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.TrackingId = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.BillTime = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Ringtime = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Duration = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Direction = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CauseQ931 = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RoutingWaitingTime = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RoutingProcessingTime = reader.GetInt32(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.Error = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.CauseSIP = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.SIPUserAgent = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.SIPXAsteriskHangupCause = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.SIPXAsteriskHangupCauseCode = reader.GetString(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.ResponseTime = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPPacketsSent = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPOctetsSent = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPPacketsReceived = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPOctetsReceived = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPPacketLoss = reader.GetInt64(i);
                                }
                                if (!reader.IsDBNull(++i))
                                {
                                    cdr.RTPForward = reader.GetBoolean(i);
                                }
                            }
                        }
                    }
                    catch
                    {
                        throw;
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }

            return(cdr);
        }
示例#18
0
 public override void onCancelRejected(ulong seqno, Cdr msg)
 {
     this.logger.log(LogSeverity.level.INFO, "onCacnelRejected msg...");
     this.logger.log(LogSeverity.level.INFO, msg.toString());
 }
示例#19
0
 public override void onLoggedOff(ulong seqno, Cdr msg)
 {
     this.logger.log(LogSeverity.level.INFO, "session logged off...");
 }
示例#20
0
 public override void onAdmin(ulong seqno, Cdr msg)
 {
     this.logger.log(LogSeverity.level.INFO, "onAdmin msg...");
     this.logger.log(LogSeverity.level.INFO, msg.toString());
 }