// Load derived chargers from storDb into dataDb. func (self *ApierV1) LoadDerivedChargers(attrs utils.TPDerivedChargers, reply *string) error { if len(attrs.TPid) == 0 { return utils.NewErrMandatoryIeMissing("TPid") } dbReader := engine.NewTpReader(self.RatingDb, self.AccountDb, self.StorDb, attrs.TPid, self.Config.DefaultTimezone) dc := engine.APItoModelDerivedCharger(&attrs) if err := dbReader.LoadDerivedChargersFiltered(&dc[0], true); err != nil { return utils.NewErrServerError(err) } *reply = OK return nil }
// Load derived chargers from storDb into dataDb. func (self *ApierV1) LoadDerivedChargers(attrs utils.TPDerivedChargers, reply *string) error { if len(attrs.TPid) == 0 { return utils.NewErrMandatoryIeMissing("TPid") } dbReader := engine.NewTpReader(self.RatingDb, self.AccountDb, self.StorDb, attrs.TPid, self.Config.DefaultTimezone, self.Config.LoadHistorySize) dc := engine.APItoModelDerivedCharger(&attrs) if err := dbReader.LoadDerivedChargersFiltered(&dc[0], true); err != nil { return utils.NewErrServerError(err) } //Automatic cache of the newly inserted rating plan var derivedChargingKeys []string if len(attrs.Direction) != 0 && len(attrs.Tenant) != 0 && len(attrs.Category) != 0 && len(attrs.Account) != 0 && len(attrs.Subject) != 0 { derivedChargingKeys = []string{utils.DERIVEDCHARGERS_PREFIX + attrs.GetDerivedChargersKey()} } if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: derivedChargingKeys}); err != nil { return err } *reply = OK return nil }
// Creates a new DerivedCharges profile within a tariff plan func (self *ApierV1) SetTPDerivedChargers(attrs utils.TPDerivedChargers, reply *string) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "Direction", "Tenant", "Category", "Account", "Subject"}); len(missing) != 0 { return utils.NewErrMandatoryIeMissing(missing...) } /*for _, action := range attrs.DerivedCharges { requiredFields := []string{"Identifier", "Weight"} if action.BalanceType != "" { // Add some inter-dependent parameters - if balanceType then we are not talking about simply calling actions requiredFields = append(requiredFields, "Direction", "Units") } if missing := utils.MissingStructFields(action, requiredFields); len(missing) != 0 { return fmt.Errorf("%s:DerivedCharge:%s:%v", utils.ERR_MANDATORY_IE_MISSING, action.Identifier, missing) } }*/ dc := engine.APItoModelDerivedCharger(&attrs) if err := self.StorDb.SetTpDerivedChargers(dc); err != nil { return utils.NewErrServerError(err) } *reply = "OK" return nil }
// Load derived chargers from storDb into dataDb. func (self *ApierV2) LoadDerivedChargers(attrs AttrLoadDerivedChargers, reply *string) error { if len(attrs.TPid) == 0 { return utils.NewErrMandatoryIeMissing("TPid") } tpDc := &utils.TPDerivedChargers{TPid: attrs.TPid} tpDc.SetDerivedChargersId(attrs.DerivedChargersId) dc := engine.APItoModelDerivedCharger(tpDc) dbReader := engine.NewTpReader(self.RatingDb, self.AccountDb, self.StorDb, attrs.TPid, self.Config.DefaultTimezone, self.Config.LoadHistorySize) if err := dbReader.LoadDerivedChargersFiltered(&dc[0], true); err != nil { return utils.NewErrServerError(err) } //Automatic cache of the newly inserted rating plan var dcsChanged []string if len(attrs.DerivedChargersId) != 0 { dcsChanged = []string{utils.DERIVEDCHARGERS_PREFIX + attrs.DerivedChargersId} } if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.DERIVEDCHARGERS_PREFIX: dcsChanged}); err != nil { return err } *reply = v1.OK return nil }
// Queries specific DerivedCharge on tariff plan func (self *ApierV1) GetTPDerivedChargers(attrs AttrGetTPDerivedChargers, reply *utils.TPDerivedChargers) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "DerivedChargersId"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } tmpDc := &utils.TPDerivedChargers{TPid: attrs.TPid} if err := tmpDc.SetDerivedChargersId(attrs.DerivedChargersId); err != nil { return err } dcs := engine.APItoModelDerivedCharger(tmpDc) if sgs, err := self.StorDb.GetTpDerivedChargers(&dcs[0]); err != nil { return utils.NewErrServerError(err) } else if len(sgs) == 0 { return utils.ErrNotFound } else { dcsMap, err := engine.TpDerivedChargers(dcs).GetDerivedChargers() if err != nil { return err } *reply = *dcsMap[attrs.DerivedChargersId] } return nil }