Example #1
0
        internal static RatedRouteDto Get(Rbr_Db pDb, CarrierAcctDto pCarrierAcct, CarrierRouteRow pCarrierRouteRow)
        {
            if (pCarrierRouteRow == null)
            {
                return(null);
            }
            var _activeCarrierRouteEPMapCount = pDb.CarrierAcctEPMapCollection.GetActiveCountByCarrierRouteId(pCarrierRouteRow.Carrier_route_id);
            var _carrierRouteState            = (_activeCarrierRouteEPMapCount > 0) ? RouteState.Valid : RouteState.NoActiveEndpoints;

            if (pCarrierAcct.IsRatingEnabled)
            {
                //get Rates status
                bool _allRatesValid;
                CarrierRateHistoryRow _carrierRateHistoryRow = pDb.CarrierRateHistoryCollection.GetByCarrierRouteIdDate(pCarrierRouteRow.Carrier_route_id, DateTime.Today);
                if (_carrierRateHistoryRow == null)
                {
                    _allRatesValid = false;
                }
                else
                {
                    _allRatesValid = pDb.RateCollection.HasAllValidRates(_carrierRateHistoryRow.Rate_info_id);
                }
                _carrierRouteState = (_allRatesValid) ? _carrierRouteState | RouteState.Valid : _carrierRouteState | RouteState.NoRates;
            }
            var _baseRoute = RoutingManager.GetBaseRoute(pDb, pCarrierRouteRow.Route_id);
            var _route     = mapToRoute(pCarrierRouteRow, pCarrierAcct, _baseRoute, _carrierRouteState);

            return(_route);
        }
Example #2
0
        static RatedRouteDto mapToRoute(CarrierRouteRow pCarrierRouteRow, CarrierAcctDto pCarrierAcct, BaseRouteDto pBaseRoute, RouteState pCarrierRouteState)
        {
            if (pCarrierRouteRow == null)
            {
                return(null);
            }

            var _route = new RatedRouteDto();

            _route.RatedRouteId  = pCarrierRouteRow.Carrier_route_id;
            _route.Status        = pCarrierRouteRow.RouteStatus;
            _route.ACDTarget     = pCarrierRouteRow.Acd_target;
            _route.ACDTimeWindow = pCarrierRouteRow.Acd_time_window;
            _route.ASRTarget     = pCarrierRouteRow.Asr_target;
            _route.ASRTimeWindow = pCarrierRouteRow.Asr_time_window;
            _route.NextEP        = pCarrierRouteRow.Next_ep;

            _route.AccountId     = pCarrierAcct.CarrierAcctId;
            _route.AccountName   = pCarrierAcct.Name;
            _route.AccountStatus = pCarrierAcct.Status;

            _route.BaseRoute  = pBaseRoute;
            _route.RouteState = pCarrierRouteState;

            _route.DefaultRatingInfo = pCarrierAcct.DefaultRatingInfo;

            return(_route);
        }
Example #3
0
        static CarrierRouteRow mapToCarrierRouteRow(RatedRouteDto pRoute)
        {
            if (pRoute == null)
            {
                return(null);
            }

            var _carrierRouteRow = new CarrierRouteRow();

            _carrierRouteRow.Carrier_route_id = pRoute.RatedRouteId;
            _carrierRouteRow.RouteStatus      = pRoute.Status;
            _carrierRouteRow.Acd_target       = pRoute.ACDTarget;
            _carrierRouteRow.Acd_time_window  = pRoute.ACDTimeWindow;
            _carrierRouteRow.Asr_target       = pRoute.ASRTarget;
            _carrierRouteRow.Asr_time_window  = pRoute.ASRTimeWindow;
            _carrierRouteRow.Next_ep          = pRoute.NextEP;

            _carrierRouteRow.Carrier_acct_id = pRoute.AccountId;

            if (pRoute.BaseRouteId == 0)
            {
                _carrierRouteRow.IsRoute_idNull = true;
            }
            else
            {
                _carrierRouteRow.Route_id = pRoute.BaseRouteId;
            }

            return(_carrierRouteRow);
        }
Example #4
0
        //--------------------------------- Constructors -------------------------------------------------
        public CarrierRoute(CarrierRouteRow pCarrierRouteRow)
        {
            carrierRouteRow = pCarrierRouteRow;
            CarrierAcctId   = carrierRouteRow.Carrier_acct_id;

            //-- set name
            RouteRow _routeRow;

            using (var _db = new Rbr_Db()) {
                _routeRow = _db.RouteCollection.GetByPrimaryKey(carrierRouteRow.Route_id);
            }
            Name        = _routeRow == null ? AppConstants.Unknown : _routeRow.Name;
            BaseRouteId = _routeRow == null ? carrierRouteRow.Route_id : _routeRow.Route_id;

            //-- set ratingtype
            CarrierAcctRow _carrierAcctRow;

            using (var _db = new Rbr_Db()) {
                _carrierAcctRow = _db.CarrierAcctCollection.GetByPrimaryKey(carrierAcctId);
            }
            if (_carrierAcctRow == null)
            {
                throw new Exception(string.Format("CarrierRoute.Ctor | CarrierAcctRow NOT FOUND, carrierAcctId:{0}", carrierAcctId));
            }
            ratingType = _carrierAcctRow.RatingType;
        }
Example #5
0
        internal static void Add(Rbr_Db pDb, CarrierAcctDto pCarrierAcct, int pBaseRouteId, out int pCarrierRouteId)
        {
            var _carrierRouteRow = new CarrierRouteRow();

            _carrierRouteRow.Carrier_acct_id = pCarrierAcct.CarrierAcctId;
            _carrierRouteRow.Acd_target      = pCarrierAcct.DefaultRoute.ACDTarget;
            _carrierRouteRow.Acd_time_window = pCarrierAcct.DefaultRoute.ACDTimeWindow;
            _carrierRouteRow.Asr_target      = pCarrierAcct.DefaultRoute.ASRTarget;
            _carrierRouteRow.Asr_time_window = pCarrierAcct.DefaultRoute.ASRTimeWindow;
            _carrierRouteRow.Next_ep         = pCarrierAcct.DefaultRoute.NextEP;

            if (pBaseRouteId > 0)
            {
                //Regular ServiceRoute
                _carrierRouteRow.Route_id    = pBaseRouteId;
                _carrierRouteRow.RouteStatus = Status.Active;
            }
            else
            {
                //Default CarrierRoute, set CarrierRouteId = -CarrierAcctId, NO Base RouteId
                pCarrierAcct.DefaultRoute.RatedRouteId = -pCarrierAcct.CarrierAcctId;
                _carrierRouteRow.Carrier_route_id      = pCarrierAcct.DefaultRoute.RatedRouteId;
                _carrierRouteRow.RouteStatus           = Status.Blocked;       //for Default ServiceRoute
            }

            pDb.CarrierRouteCollection.Insert(_carrierRouteRow);

            if (pCarrierAcct.IsRatingEnabled || pBaseRouteId == 0)
            {
                //always add Def RatingInfo for Def Route
                RatingManager.AddDefaultRatingInfo(pDb, _carrierRouteRow.Carrier_route_id, pCarrierAcct.DefaultRatingInfo, RouteType.Carrier);
            }
            pCarrierRouteId = _carrierRouteRow.Carrier_route_id;
        }
        /// <summary>
        /// Updates a record in the <c>CarrierRoute</c> table.
        /// </summary>
        /// <param name="value">The <see cref="CarrierRouteRow"/>
        /// object used to update the table record.</param>
        /// <returns>true if the record was updated; otherwise, false.</returns>
        public virtual bool Update(CarrierRouteRow value)
        {
            string sqlStr = "UPDATE [dbo].[CarrierRoute] SET " +
                            "[carrier_acct_id]=" + _db.CreateSqlParameterName("Carrier_acct_id") + ", " +
                            "[route_id]=" + _db.CreateSqlParameterName("Route_id") + ", " +
                            "[status]=" + _db.CreateSqlParameterName("Status") + ", " +
                            "[asr_time_window]=" + _db.CreateSqlParameterName("Asr_time_window") + ", " +
                            "[asr_target]=" + _db.CreateSqlParameterName("Asr_target") + ", " +
                            "[acd_time_window]=" + _db.CreateSqlParameterName("Acd_time_window") + ", " +
                            "[acd_target]=" + _db.CreateSqlParameterName("Acd_target") +
                            " WHERE " +
                            "[carrier_route_id]=" + _db.CreateSqlParameterName("Carrier_route_id");
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Carrier_acct_id", value.Carrier_acct_id);
            AddParameter(cmd, "Route_id",
                         value.IsRoute_idNull ? DBNull.Value : (object)value.Route_id);
            AddParameter(cmd, "Status", value.Status);
            AddParameter(cmd, "Asr_time_window", value.Asr_time_window);
            AddParameter(cmd, "Asr_target", value.Asr_target);
            AddParameter(cmd, "Acd_time_window", value.Acd_time_window);
            AddParameter(cmd, "Acd_target", value.Acd_target);
            AddParameter(cmd, "Carrier_route_id", value.Carrier_route_id);
            return(0 != cmd.ExecuteNonQuery());
        }
        /// <summary>
        /// Adds a new record into the <c>CarrierRoute</c> table.
        /// </summary>
        /// <param name="value">The <see cref="CarrierRouteRow"/> object to be inserted.</param>
        public virtual void Insert(CarrierRouteRow value)
        {
            string sqlStr = "INSERT INTO [dbo].[CarrierRoute] (" +
                            "[carrier_route_id], " +
                            "[carrier_acct_id], " +
                            "[route_id], " +
                            "[status], " +
                            "[asr_time_window], " +
                            "[asr_target], " +
                            "[acd_time_window], " +
                            "[acd_target]" +
                            ") VALUES (" +
                            _db.CreateSqlParameterName("Carrier_route_id") + ", " +
                            _db.CreateSqlParameterName("Carrier_acct_id") + ", " +
                            _db.CreateSqlParameterName("Route_id") + ", " +
                            _db.CreateSqlParameterName("Status") + ", " +
                            _db.CreateSqlParameterName("Asr_time_window") + ", " +
                            _db.CreateSqlParameterName("Asr_target") + ", " +
                            _db.CreateSqlParameterName("Acd_time_window") + ", " +
                            _db.CreateSqlParameterName("Acd_target") + ")";
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Carrier_route_id", value.Carrier_route_id);
            AddParameter(cmd, "Carrier_acct_id", value.Carrier_acct_id);
            AddParameter(cmd, "Route_id",
                         value.IsRoute_idNull ? DBNull.Value : (object)value.Route_id);
            AddParameter(cmd, "Status", value.Status);
            AddParameter(cmd, "Asr_time_window", value.Asr_time_window);
            AddParameter(cmd, "Asr_target", value.Asr_target);
            AddParameter(cmd, "Acd_time_window", value.Acd_time_window);
            AddParameter(cmd, "Acd_target", value.Acd_target);
            cmd.ExecuteNonQuery();
        }
        /// <summary>
        /// Reads data from the provided data reader and returns
        /// an array of mapped objects.
        /// </summary>
        /// <param name="reader">The <see cref="System.Data.IDataReader"/> object to read data from the table.</param>
        /// <param name="startIndex">The index of the first record to map.</param>
        /// <param name="length">The number of records to map.</param>
        /// <param name="totalRecordCount">A reference parameter that returns the total number
        /// of records in the reader object if 0 was passed into the method; otherwise it returns -1.</param>
        /// <returns>An array of <see cref="CarrierRouteRow"/> objects.</returns>
        protected virtual CarrierRouteRow[] MapRecords(IDataReader reader,
                                                       int startIndex, int length, ref int totalRecordCount)
        {
            if (0 > startIndex)
            {
                throw new ArgumentOutOfRangeException("startIndex", startIndex, "StartIndex cannot be less than zero.");
            }
            if (0 > length)
            {
                throw new ArgumentOutOfRangeException("length", length, "Length cannot be less than zero.");
            }

            int carrier_route_idColumnIndex = reader.GetOrdinal("carrier_route_id");
            int carrier_acct_idColumnIndex  = reader.GetOrdinal("carrier_acct_id");
            int route_idColumnIndex         = reader.GetOrdinal("route_id");
            int statusColumnIndex           = reader.GetOrdinal("status");
            int asr_time_windowColumnIndex  = reader.GetOrdinal("asr_time_window");
            int asr_targetColumnIndex       = reader.GetOrdinal("asr_target");
            int acd_time_windowColumnIndex  = reader.GetOrdinal("acd_time_window");
            int acd_targetColumnIndex       = reader.GetOrdinal("acd_target");
            int next_epColumnIndex          = reader.GetOrdinal("next_ep");

            System.Collections.ArrayList recordList = new System.Collections.ArrayList();
            int ri = -startIndex;

            while (reader.Read())
            {
                ri++;
                if (ri > 0 && ri <= length)
                {
                    CarrierRouteRow record = new CarrierRouteRow();
                    recordList.Add(record);

                    record.Carrier_route_id = Convert.ToInt32(reader.GetValue(carrier_route_idColumnIndex));
                    record.Carrier_acct_id  = Convert.ToInt16(reader.GetValue(carrier_acct_idColumnIndex));
                    if (!reader.IsDBNull(route_idColumnIndex))
                    {
                        record.Route_id = Convert.ToInt32(reader.GetValue(route_idColumnIndex));
                    }
                    record.Status          = Convert.ToByte(reader.GetValue(statusColumnIndex));
                    record.Asr_time_window = Convert.ToInt32(reader.GetValue(asr_time_windowColumnIndex));
                    record.Asr_target      = Convert.ToInt16(reader.GetValue(asr_targetColumnIndex));
                    record.Acd_time_window = Convert.ToInt32(reader.GetValue(acd_time_windowColumnIndex));
                    record.Acd_target      = Convert.ToInt16(reader.GetValue(acd_targetColumnIndex));
                    record.Next_ep         = Convert.ToByte(reader.GetValue(next_epColumnIndex));

                    if (ri == length && 0 != totalRecordCount)
                    {
                        break;
                    }
                }
            }

            totalRecordCount = 0 == totalRecordCount ? ri + startIndex : -1;
            return((CarrierRouteRow[])(recordList.ToArray(typeof(CarrierRouteRow))));
        }
Example #9
0
        void exportCarrierRates()
        {
            try {
                countries = new SortedList <string, CountryRecord>();

                using (var _db = new Rbr_Db()) {
                    CarrierAcctDto _carrierAcct = getCarrierAcct(_db);

                    RouteRow[] _baseRouteRows = _db.RouteCollection.GetByCalling_plan_id(_carrierAcct.CallingPlan.CallingPlanId);
                    if (_baseRouteRows == null || _baseRouteRows.Length <= 0)
                    {
                        reportStatus(LogSeverity.Status, "DialPlanExporter.exportCarrierRates", "WARNING: No Routes to Process...");
                        return;
                    }

                    _baseRouteRows = RoutingManager.SortRouteRows(_baseRouteRows);
                    string _filePath = getFilePath();

                    using (var _sw = new StreamWriter(_filePath, false)) {
                        _sw.WriteLine(args.PerMinute ? RatesFileHeaderCostPerMinute : RatesFileHeaderCostPerIncrements);

                        int           _index         = 0;
                        CountryRecord _countryRecord = null;
                        foreach (RouteRow _baseRouteRow in _baseRouteRows)
                        {
                            host.ReportProgress(_index++ *100 / _baseRouteRows.Length);

                            CarrierRouteRow _carrierRouteRow = _db.CarrierRouteCollection.GetByCarrierAcctIdRouteId(_carrierAcct.CarrierAcctId, _baseRouteRow.Route_id);
                            if (_carrierRouteRow == null)
                            {
                                continue;
                            }

                            if (_countryRecord == null || _countryRecord.Name != _baseRouteRow.Name)
                            {
                                _countryRecord = getCountryRecord(_db, _baseRouteRow);
                            }
                            RouteRecord _routeRecord = getRouteRecord(_baseRouteRow, _countryRecord);
                            _countryRecord.Routes.Add(_routeRecord.FullName, _routeRecord);

                            CarrierRateHistoryRow _carrierRateHistoryRow = _db.CarrierRateHistoryCollection.GetByCarrierRouteIdDate(_carrierRouteRow.Carrier_route_id, DateTime.Today);
                            if (_carrierRateHistoryRow != null)
                            {
                                RatingInfoDto _ratingInfo = RatingManager.GetRatingInfo(_db, _carrierRateHistoryRow.Rate_info_id, false);
                                if (_ratingInfo == null)
                                {
                                    reportStatus(LogSeverity.Critical, "DialPlanExporter.exportCarrierRates", string.Format("RatingInfo == null, {0}", _carrierRateHistoryRow.Rate_info_id));
                                    continue;
                                }
                                _routeRecord.RatingInfo = _ratingInfo;
                                reportStatus(LogSeverity.Status, "DialPlanExporter.exportCarrierRates", string.Format("Exporting Rates for Route: {0}", _routeRecord.FullName));
                                _sw.Write(_routeRecord.GetRatesAsString(args.PerMinute));
                            }
                        }
                    }
                }
            }
            catch (Exception _ex) {
                TimokLogger.Instance.LogRbr(LogSeverity.Critical, "DialPlanExporter.exportCarrierRates", _ex.ToString());
                throw;
            }
        }
        /// <summary>
        /// Converts <see cref="System.Data.DataRow"/> to <see cref="CarrierRouteRow"/>.
        /// </summary>
        /// <param name="row">The <see cref="System.Data.DataRow"/> object to be mapped.</param>
        /// <returns>A reference to the <see cref="CarrierRouteRow"/> object.</returns>
        protected virtual CarrierRouteRow MapRow(DataRow row)
        {
            CarrierRouteRow mappedObject = new CarrierRouteRow();
            DataTable       dataTable    = row.Table;
            DataColumn      dataColumn;

            // Column "Carrier_route_id"
            dataColumn = dataTable.Columns["Carrier_route_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Carrier_route_id = (int)row[dataColumn];
            }
            // Column "Carrier_acct_id"
            dataColumn = dataTable.Columns["Carrier_acct_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Carrier_acct_id = (short)row[dataColumn];
            }
            // Column "Route_id"
            dataColumn = dataTable.Columns["Route_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Route_id = (int)row[dataColumn];
            }
            // Column "Status"
            dataColumn = dataTable.Columns["Status"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Status = (byte)row[dataColumn];
            }
            // Column "Asr_time_window"
            dataColumn = dataTable.Columns["Asr_time_window"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Asr_time_window = (int)row[dataColumn];
            }
            // Column "Asr_target"
            dataColumn = dataTable.Columns["Asr_target"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Asr_target = (short)row[dataColumn];
            }
            // Column "Acd_time_window"
            dataColumn = dataTable.Columns["Acd_time_window"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Acd_time_window = (int)row[dataColumn];
            }
            // Column "Acd_target"
            dataColumn = dataTable.Columns["Acd_target"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Acd_target = (short)row[dataColumn];
            }
            // Column "Next_ep"
            dataColumn = dataTable.Columns["Next_ep"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Next_ep = (byte)row[dataColumn];
            }
            return(mappedObject);
        }
 /// <summary>
 /// Deletes the specified object from the <c>CarrierRoute</c> table.
 /// </summary>
 /// <param name="value">The <see cref="CarrierRouteRow"/> object to delete.</param>
 /// <returns>true if the record was deleted; otherwise, false.</returns>
 public bool Delete(CarrierRouteRow value)
 {
     return(DeleteByPrimaryKey(value.Carrier_route_id));
 }