// Queries specific RatingProfile on tariff plan func (self *ApierV1) GetTPRatingProfile(attrs AttrGetTPRatingProfile, reply *utils.TPRatingProfile) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "RatingProfileId"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } tmpRpf := &utils.TPRatingProfile{TPid: attrs.TPid} if err := tmpRpf.SetRatingProfilesId(attrs.RatingProfileId); err != nil { return err } rpf := engine.APItoModelRatingProfile(tmpRpf) if rpfs, err := self.StorDb.GetTpRatingProfiles(&rpf[0]); err != nil { return utils.NewErrServerError(err) } else if len(rpfs) == 0 { return utils.ErrNotFound } else { rpfMap, err := engine.TpRatingProfiles(rpfs).GetRatingProfiles() if err != nil { return err } rpf := rpfMap[tmpRpf.KeyId()] tpdc := utils.TPRatingProfile{ TPid: attrs.TPid, RatingPlanActivations: rpf.RatingPlanActivations, } if err := tpdc.SetRatingProfilesId(attrs.RatingProfileId); err != nil { return err } *reply = tpdc } return nil }
// Queries specific RatingProfile on tariff plan func (self *ApierV1) GetTPRatingProfilesByLoadId(attrs utils.TPRatingProfile, reply *[]*utils.TPRatingProfile) error { mndtryFlds := []string{"TPid", "LoadId"} if len(attrs.Subject) != 0 { // If Subject provided as filter, make all related fields mandatory mndtryFlds = append(mndtryFlds, "Tenant", "TOR", "Direction", "Subject") } if missing := utils.MissingStructFields(&attrs, mndtryFlds); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } rpf := engine.APItoModelRatingProfile(&attrs) if dr, err := self.StorDb.GetTpRatingProfiles(&rpf[0]); err != nil { return utils.NewErrServerError(err) } else if dr == nil { return utils.ErrNotFound } else { rpfMap, err := engine.TpRatingProfiles(dr).GetRatingProfiles() if err != nil { return err } var rpfs []*utils.TPRatingProfile if len(attrs.Subject) != 0 { rpfs = []*utils.TPRatingProfile{rpfMap[attrs.KeyId()]} } else { for _, rpfLst := range rpfMap { rpfs = append(rpfs, rpfLst) } } *reply = rpfs } return nil }
// Creates a new RatingProfile within a tariff plan func (self *ApierV1) SetTPRatingProfile(attrs utils.TPRatingProfile, reply *string) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "LoadId", "Tenant", "Category", "Direction", "Subject", "RatingPlanActivations"}); len(missing) != 0 { return utils.NewErrMandatoryIeMissing(missing...) } rpf := engine.APItoModelRatingProfile(&attrs) if err := self.StorDb.SetTpRatingProfiles(rpf); err != nil { return utils.NewErrServerError(err) } *reply = "OK" return nil }
// Process dependencies and load a specific rating profile from storDb into dataDb. func (self *ApierV1) LoadRatingProfile(attrs utils.TPRatingProfile, 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) rp := engine.APItoModelRatingProfile(&attrs) if err := dbReader.LoadRatingProfilesFiltered(&rp[0]); err != nil { return utils.NewErrServerError(err) } *reply = OK return nil }
// Process dependencies and load a specific rating profile from storDb into dataDb. func (self *ApierV2) LoadRatingProfile(attrs AttrLoadRatingProfile, reply *string) error { if len(attrs.TPid) == 0 { return utils.NewErrMandatoryIeMissing("TPid") } tpRpf := &utils.TPRatingProfile{TPid: attrs.TPid} tpRpf.SetRatingProfilesId(attrs.RatingProfileId) rpf := engine.APItoModelRatingProfile(tpRpf) dbReader := engine.NewTpReader(self.RatingDb, self.AccountDb, self.StorDb, attrs.TPid, self.Config.DefaultTimezone) if err := dbReader.LoadRatingProfilesFiltered(&rpf[0]); err != nil { return utils.NewErrServerError(err) } *reply = v1.OK return nil }
// Process dependencies and load a specific rating profile from storDb into dataDb. func (self *ApierV1) LoadRatingProfile(attrs utils.TPRatingProfile, 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) rp := engine.APItoModelRatingProfile(&attrs) if err := dbReader.LoadRatingProfilesFiltered(&rp[0]); err != nil { return utils.NewErrServerError(err) } //Automatic cache of the newly inserted rating profile var ratingProfile []string if attrs.KeyId() != ":::" { // if has some filters ratingProfile = []string{utils.RATING_PROFILE_PREFIX + attrs.KeyId()} } if err := self.RatingDb.CacheRatingPrefixValues(map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil { return err } *reply = OK return nil }
// Process dependencies and load a specific rating profile from storDb into dataDb. func (self *ApierV2) LoadRatingProfile(attrs AttrLoadRatingProfile, reply *string) error { if len(attrs.TPid) == 0 { return utils.NewErrMandatoryIeMissing("TPid") } tpRpf := &utils.TPRatingProfile{TPid: attrs.TPid} tpRpf.SetRatingProfilesId(attrs.RatingProfileId) rpf := engine.APItoModelRatingProfile(tpRpf) dbReader := engine.NewTpReader(self.RatingDb, self.AccountDb, self.StorDb, attrs.TPid, self.Config.DefaultTimezone) if err := dbReader.LoadRatingProfilesFiltered(&rpf[0]); err != nil { return utils.NewErrServerError(err) } //Automatic cache of the newly inserted rating profile var ratingProfile []string if tpRpf.KeyId() != ":::" { // if has some filters ratingProfile = []string{utils.RATING_PROFILE_PREFIX + tpRpf.KeyId()} } if err := self.RatingDb.CacheRatingPrefixValues("LoadRatingProfileAPI", map[string][]string{utils.RATING_PROFILE_PREFIX: ratingProfile}); err != nil { return err } *reply = v1.OK return nil }