Example #1
0
 static void loadCDR(IEnumerable <CDRRow> pCDRRows, DateTime pCurrent, DateTime pPrevious)
 {
     using (var _dbCurrent = new Cdr_Db(pCurrent)) {
         using (var _dbPrevious = new Cdr_Db(pPrevious)) {
             _dbCurrent.BeginTransaction();
             _dbPrevious.BeginTransaction();
             foreach (var _cdrRow in pCDRRows)
             {
                 if (_cdrRow.Start.Month == pCurrent.Month)
                 {
                     insert(_dbCurrent, _cdrRow);
                 }
                 else if (_cdrRow.Start.Month == pPrevious.Month)
                 {
                     insert(_dbPrevious, _cdrRow);
                 }
                 else
                 {
                     throw new Exception("How can a CDR NOT belong to current or previous Month?");
                 }
             }
             _dbCurrent.CommitTransaction();
             _dbPrevious.CommitTransaction();
         }
     }
 }
Example #2
0
        CDRRow[] getCDRFromDb(DateTime pNow)
        {
            var _endDateLogged   = new DateTime(pNow.Year, pNow.Month, pNow.Day, pNow.Hour, pNow.Minute, 0, 0).Subtract(TimeSpan.FromMinutes(1));
            var _temp            = _endDateLogged.Subtract(TimeSpan.FromMinutes(frequency - 1));
            var _startDateLogged = new DateTime(_temp.Year, _temp.Month, _temp.Day, _temp.Hour, _temp.Minute, 0, 0);
            var _previousDayDate = _startDateLogged.AddDays(-1);

            validateTimer(pNow, _startDateLogged, _endDateLogged);

            var _cdrList = new List <CDRRow>();

            using (var _db = new Cdr_Db(_startDateLogged)) {
                _cdrList.AddRange(_db.CDRCollection.GetByDateLoggedRange(_startDateLogged, _endDateLogged));
            }
            if (_previousDayDate.Month != _startDateLogged.Month)
            {
                //on the Month change, pick CDRs from previous month's Db by the same DateLoggedRange
                using (var _db = new Cdr_Db(_previousDayDate)) {
                    _cdrList.AddRange(_db.CDRCollection.GetByDateLoggedRange(_startDateLogged, _endDateLogged));
                }
            }
            T.LogRbr(LogSeverity.Status, "CdrExporter.getCDRFromDb", string.Format("Got call records count: {0}", _cdrList.Count));

            return(_cdrList.ToArray());
        }
Example #3
0
 public static int Update(Cdr pCdr)
 {
     using (var _db = new Cdr_Db(DateTime.Now)) {
         _db.CDRCollection.Update(pCdr.CdrRow);
     }
     return(0);
 }
Example #4
0
        public static EndpointASR[] GetTermEndpointsASR(int pTimokDate)
        {
            DataTable _dt;

            using (var _db = new Cdr_Db(TimokDate.ToDateTime(pTimokDate))) {
                _dt = _db.CDRCollection.GetTermEpAsr(pTimokDate);
            }
            var _list = new ArrayList();

            if (_dt != null && _dt.Rows.Count > 0)
            {
                using (var _db = new Rbr_Db()) {
                    foreach (DataRow _dataRow in _dt.Rows)
                    {
                        var _endpointAsr = new EndpointASR
                        {
                            EndpointId     = ((short)_dataRow[EndpointAsrDataTable.Id_ColumnName]),
                            Calls          = ((int)_dataRow[EndpointAsrDataTable.Calls_ColumnName]),
                            ConnectedCalls = ((int)_dataRow[EndpointAsrDataTable.Connected_calls_ColumnName]),
                            Asr            = ((int)_dataRow[EndpointAsrDataTable.Asr_ColumnName])
                        };
                        if (_endpointAsr.EndpointId > 0)
                        {
                            var _endPointRow = _db.EndPointCollection.GetByPrimaryKey(_endpointAsr.EndpointId);
                            _endpointAsr.Alias = _endPointRow.Alias;
                        }
                        _list.Add(_endpointAsr);
                    }
                }
                _list.Sort(new GenericComparer(EndpointASR.Alias_PropName, ListSortDirection.Ascending));
            }
            return((EndpointASR[])_list.ToArray(typeof(EndpointASR)));
        }
Example #5
0
        //used by ReportEngine
        public static RouteMinutesSummary[] GetCustomerRouteMinutesSummaries(int pTimokDate)
        {
            DataTable _dt;

            using (var _db = new Cdr_Db(TimokDate.ToDateTime(pTimokDate))) {
                _dt = _db.CDRCollection.GetCustomerRoutesTotalMinutes(pTimokDate);
            }
            var _list = new ArrayList();

            if (_dt != null && _dt.Rows.Count > 0)
            {
                using (var _db = new Rbr_Db()) {
                    foreach (DataRow _dataRow in _dt.Rows)
                    {
                        var _routeMinutesSummary = new RouteMinutesSummary
                        {
                            Id      = ((int)_dataRow[CustomerRoutesTotalMinutesDataTable.Id_ColumnName]),
                            Minutes = ((decimal)_dataRow[CustomerRoutesTotalMinutesDataTable.Minutes_ColumnName])
                        };
                        if (_routeMinutesSummary.Id > 0)
                        {
                            var _routeRow = _db.RouteCollection.GetByPrimaryKey(_routeMinutesSummary.Id);
                            _routeMinutesSummary.Name = _routeRow.Name;
                        }
                        _list.Add(_routeMinutesSummary);
                    }
                }
                _list.Sort(new GenericComparer(RouteMinutesSummary.Name_PropName, ListSortDirection.Ascending));
            }
            return((RouteMinutesSummary[])_list.ToArray(typeof(RouteMinutesSummary)));
        }
        ///NOTE: depricated
        //static List<string> getCDRs(string pWhereFilter, CdrExportMap pCdrExportMap, int pStartTimokDate, int pEndTimokDate, string pDecimalFormatString, BackgroundWorker pBackgroundWorker) {
        //  pBackgroundWorker.ReportStatus("Retrieving CDRs...");
        //  List<string> _records = new List<string>();
        //  if (Cdr_Db.Exists(TimokDate.ToDateTime(pStartTimokDate))) {
        //    using (Cdr_Db _db = new Cdr_Db(TimokDate.ToDateTime(pStartTimokDate))) {
        //      IDbCommand _cmd = _db.Connection.CreateCommand();
        //      _cmd.CommandText = getSQLForCDRViewExport(_db.Connection.Database, pCdrExportMap.CdrExportMapDetails, pStartTimokDate, pEndTimokDate, pWhereFilter);
        //      IDataReader _reader = _cmd.ExecuteReader();
        //      while (_reader.Read()) {
        //        if (pBackgroundWorker.CancellationPending) {
        //          throw new Exception("CDR Export canceled");
        //        }
        //        StringBuilder _record = new StringBuilder();
        //        foreach (CdrExportMapDetail _field in pCdrExportMap.CdrExportMapDetails) {
        //          object _value = _reader.GetValue(_field.Sequence - 1);
        //          _record.Append(_value);
        //          //NOTE: if need to format prices, here is the place to do that
        //          //if (_value is Decimal) {
        //          //  _record.Append(((decimal) _value).ToString(pDecimalFormatString));
        //          //}
        //          //else {
        //          //  _record.Append(_value);
        //          //}
        //          _record.Append((char) pCdrExportMap.CdrExportDelimeter);
        //        }
        //        _records.Add(_record.ToString().TrimEnd((char) pCdrExportMap.CdrExportDelimeter));
        //      }
        //    }
        //  }
        //  pBackgroundWorker.ReportStatus(string.Format("Retrieved {0} CDRs", _records.Count));
        //  return _records;
        //}
        static List <string> getCDRs(string pWhereFilter, ICdrExportInfo pCdrExportInfo, int pTimokDate, IBackgroundWorker pBackgroundWorker)
        {
            var _records = new List <string>();

            if (Cdr_Db.Exists(TimokDate.ToDateTime(pTimokDate)))
            {
                CDRViewRow[] _cdrViewRows;
                try {
                    using (var _db = new Cdr_Db(TimokDate.ToDateTime(pTimokDate))) {
                        _cdrViewRows = _db.CDRViewCollection.Get(pTimokDate, pWhereFilter);
                    }
                }
                catch (Exception _ex) {
                    TimokLogger.Instance.LogRbr(LogSeverity.Critical, GetcdrsLabel, string.Format("Exception:\r\n{0}", _ex));
                    pBackgroundWorker.ReportStatus(string.Format("Exception! Exported {0} CDRs", _records.Count));
                    return(_records);
                }
                if (_cdrViewRows == null || _cdrViewRows.Length == 0)
                {
                    TimokLogger.Instance.LogRbr(LogSeverity.Error, GetcdrsLabel, "No CDR Records found");
                    pBackgroundWorker.ReportStatus("No CDR Records found");
                    return(_records);
                }

                pBackgroundWorker.ReportStatus(string.Format("Retrieved {0} CDRs for: {1}", _cdrViewRows.Length, TimokDate.ToDateTime(pTimokDate).ToString("yyyy-MM-dd HH:mm")));

                var _recordCount = 0;
                foreach (var _cdrViewRow in _cdrViewRows)
                {
                    if (pBackgroundWorker.CancellationPending)
                    {
                        throw new Exception("CDR Export canceled");
                    }

                    if (pCdrExportInfo.WithRerating && _cdrViewRow.Duration > 0)
                    {
                        if (!rerateCDR(_cdrViewRow, pBackgroundWorker))
                        {
                            continue;
                        }
                    }

                    _records.Add(mapToExportedRecord(_cdrViewRow, pCdrExportInfo.CdrExportMap));
                    pBackgroundWorker.ReportProgress(++_recordCount * 100 / _cdrViewRows.Length);
                }

                if (_records.Count != _cdrViewRows.Length)
                {
                    pBackgroundWorker.ReportStatus(string.Format("ERROR: Exported {0} out of {1} retreived CDRs", _records.Count, _cdrViewRows.Length));
                }
                else
                {
                    pBackgroundWorker.ReportStatus(string.Format("Exported {0} CDRs for: {1}", _records.Count, TimokDate.ToDateTime(pTimokDate).ToString("yyyy-MM-dd HH:mm")));
                }
            }
            return(_records);
        }
Example #7
0
 static void loadCDR(IEnumerable <CDRRow> pCDRRows, DateTime pCurrent)
 {
     using (var _dbCurrent = new Cdr_Db(pCurrent)) {
         _dbCurrent.BeginTransaction();
         foreach (var _cdrRow in pCDRRows)
         {
             insert(_dbCurrent, _cdrRow);
         }
         _dbCurrent.CommitTransaction();
     }
 }
Example #8
0
        public static List <CdrDto> GetCDRsByCarrierAcctIdEndpointId(int pStartTimokDate, int pEndTimokDate, short pCarrierAcctId, short pEndpointId)
        {
            var _cdrViewRows = new CDRViewRow[0];

            if (Cdr_Db.Exists(TimokDate.ToDateTime(pStartTimokDate)))
            {
                using (var db = new Cdr_Db(TimokDate.ToDateTime(pStartTimokDate))) {
                    _cdrViewRows = db.CDRViewCollection.GetByCarrierAcctIdEndpointId(pStartTimokDate, pEndTimokDate, pCarrierAcctId, pEndpointId);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #9
0
        public static List <CdrDto> GetRetailAcctCDRs(int pStartTimokDate, int pEndTimokDate, int pRetailAcctId)
        {
            var _cdrViewRows = new CDRViewRow[0];

            if (Cdr_Db.Exists(TimokDate.ToDateTime(pStartTimokDate)))
            {
                using (var db = new Cdr_Db(TimokDate.ToDateTime(pStartTimokDate))) {
                    _cdrViewRows = db.CDRViewCollection.GetByRetailAcctId(pStartTimokDate, pEndTimokDate, pRetailAcctId);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #10
0
        static void validateCdrDb()
        {
            //TODO: Cdr_Db.CheckConfigConnectionString();

            if (!Cdr_Db.Exists(DateTime.Today))
            {
                Cdr_Db.Create(DateTime.Today, 3);
            }

            checkCdrDbConnection(DateTime.Today);
            Cdr_Db.CheckCdrDependancy();
        }
Example #11
0
        public static List <CdrDto> GetByStartRetailAcctId(DateTime pDate, int pRetailAcctId)
        {
            var _cdrViewRows = new CDRViewRow[0];

            if (Cdr_Db.Exists(pDate))
            {
                using (var db = new Cdr_Db(pDate)) {
                    _cdrViewRows = db.CDRViewCollection.GetByStartRetailAcctId(pDate, pRetailAcctId);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #12
0
        public static List <CdrDto> GetCDRsByRetailAcctId(int pStartTimokDate, int pEndTimokDate, int pRetailAcctId, int pPageNumber, int pPageSize, out int pTotalCount)
        {
            pTotalCount = 0;
            var _cdrViewRows = new CDRViewRow[0];

            if (Cdr_Db.Exists(TimokDate.ToDateTime(pStartTimokDate)))
            {
                using (var _db = new Cdr_Db(TimokDate.ToDateTime(pStartTimokDate))) {
                    _cdrViewRows = _db.CDRViewCollection.GetByRetailAcctIdPaged(pStartTimokDate, pEndTimokDate, pRetailAcctId, pPageNumber, pPageSize, out pTotalCount);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #13
0
        public static List <CdrDto> GetCDRsByCustomerAcctId(DateTime pDate, short pCustomerAcctId)
        {
            var _cdrViewRows    = new CDRViewRow[0];
            int _startTimokDate = TimokDate.Parse(pDate, TimokDate.MinHour);
            int _endTimokDate   = TimokDate.Parse(pDate, TimokDate.MaxHour);

            if (Cdr_Db.Exists(pDate))
            {
                using (var _db = new Cdr_Db(pDate)) {
                    _cdrViewRows = _db.CDRViewCollection.GetByCustomer_acct_id(_startTimokDate, _endTimokDate, pCustomerAcctId);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #14
0
        public static int GetCDRCountByCustomerAcctId(DateTime pDate, short pCustomerAcctId, int pPageNumber, int pPageSize, out int pTotalCount)
        {
            pTotalCount = 0;
            int _startTimokDate = TimokDate.Parse(pDate, TimokDate.MinHour);
            int _endTimokDate   = TimokDate.Parse(pDate, TimokDate.MaxHour);

            if (Cdr_Db.Exists(pDate))
            {
                using (var _db = new Cdr_Db(pDate)) {
                    return(_db.CDRViewCollection.GetCountByCustomerAcctIdPaged(_startTimokDate, _endTimokDate, pCustomerAcctId));
                }
            }
            return(0);
        }
Example #15
0
        public static List <CdrDto> GetCDRsByCustomerAcctIdPaged(DateTime pDate, short pCustomerAcctId, int pPageNumber, int pPageSize, out int pTotalCount)
        {
            pTotalCount = 0;
            var _cdrViewRows    = new CDRViewRow[0];
            int _startTimokDate = TimokDate.Parse(pDate, TimokDate.MinHour);
            int _endTimokDate   = TimokDate.Parse(pDate, TimokDate.MaxHour);

            if (Cdr_Db.Exists(pDate))
            {
                using (var _db = new Cdr_Db(pDate)) {
                    _cdrViewRows = _db.CDRViewCollection.GetByCustomerAcctIdPaged(_startTimokDate, _endTimokDate, pCustomerAcctId, pPageNumber, pPageSize, out pTotalCount);
                }
            }
            return(mapToCDRs(_cdrViewRows));
        }
Example #16
0
        public static List <CdrDto> GetCDRsByRetailAcctId(int pRetailAcctId, DateTime pDateActive)
        {
            var _cdrViewRows = new List <CDRViewRow>();

            for (int _i = 0; _i <= 12; _i++)
            {
                DateTime _date = pDateActive.AddMonths(_i);
                if (Cdr_Db.Exists(_date))
                {
                    using (var db = new Cdr_Db(_date)) {
                        _cdrViewRows.AddRange(db.CDRViewCollection.GetByRetailAcctId(_date, pRetailAcctId));
                    }
                }
            }
            return(mapToCDRs(_cdrViewRows.ToArray()));
        }
Example #17
0
        public static Cdr Get(string pCallId)
        {
            var _callId = CDRRow.StripSpaces(pCallId);

            CDRRow[] _cdrRows;
            using (var _db = new Cdr_Db(DateTime.Now)) {
                _cdrRows = _db.CDRCollection.GetById(_callId);
            }
            if (_cdrRows == null)
            {
                throw new RbrException(RbrResult.Cdr_NotFound, "Cdr.Get", string.Format("CallId={0}", _callId));
            }
            if (_cdrRows.Length != 1)
            {
                throw new RbrException(RbrResult.Cdr_Unexpected, "Cdr.Get", string.Format("CallId={0}", _callId));
            }
            return(new Cdr(_cdrRows[0]));
        }
Example #18
0
        public static bool HasCDRsByTermEndPointId(short pTermEndPointId)
        {
            int       _count          = 0;
            int       _startTimokDate = TimokDate.Parse(DateTime.Now.AddMonths(MonthsBackToCheckCDRs));
            int       _endTimokDate   = TimokDate.Parse(DateTime.Now);
            ArrayList _dbDateList     = getDBDateList(_startTimokDate, _endTimokDate);

            foreach (DateTime _dbDate in _dbDateList)
            {
                if (_count <= 0)
                {
                    if (Cdr_Db.Exists(_dbDate))
                    {
                        using (var _db = new Cdr_Db(_dbDate)) {
                            _count += _db.CDRCollection.GetCountByTermEndPointId(_startTimokDate, _endTimokDate, pTermEndPointId);
                        }
                    }
                }
            }
            return(_count > 0);
        }
Example #19
0
        public int Insert()
        {
            try {
                //-- Make sure prefixIn and prefixOut is not more then 10 chars:
                if (PrefixIn != null && PrefixIn.Length > AppConstants.MaxPrefixLength)
                {
                    PrefixIn = PrefixIn.Substring(0, AppConstants.MaxPrefixLength);
                }
                if (PrefixOut != null && PrefixOut.Length > AppConstants.MaxPrefixLength)
                {
                    PrefixOut = PrefixOut.Substring(0, AppConstants.MaxPrefixLength);
                }

                //-- Make sure Local_number is not more then 18 chars:
                if (LocalNumber != null && LocalNumber.Length > 18)
                {
                    LocalNumber = LocalNumber.Substring(0, 18);
                }
            }
            catch (Exception _ex) {
                TimokLogger.Instance.LogRbr(LogSeverity.Error, "Cdr.Insert", string.Format("Exception:\r\n{0}", _ex));
                return(1);
            }

            //--insert into local database. NOTE: use CDRDb based on start of the call !!!
            try {
                using (var _db = new Cdr_Db(CdrRow.Start)) {
                    insert(_db, CdrRow);
                }
            }
            catch (Exception _ex) {
                TimokLogger.Instance.LogRbr(LogSeverity.Error, "Cdr.Insert", string.Format("Inserting to local db, Exception:\r\n{0}", _ex));
                return(1);
            }
            return(0);
        }
Example #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CDRIdentityCollection_Base"/>
 /// class with the specified <see cref="Cdr_Db"/>.
 /// </summary>
 /// <param name="db">The <see cref="Cdr_Db"/> object.</param>
 public CDRIdentityCollection_Base(Cdr_Db db)
 {
     _db = db;
 }
Example #21
0
        //-- Mandatory default Constructor:

        public static void CreateDb()
        {
            const int _monthsAhead = 2;

            Cdr_Db.Create(DateTime.Today, _monthsAhead);
        }