// Process dependencies and load a specific AccountActions profile from storDb into dataDb. func (self *ApierV2) LoadAccountActions(attrs AttrLoadAccountActions, 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) tpAa := &utils.TPAccountActions{TPid: attrs.TPid} tpAa.SetAccountActionsId(attrs.AccountActionsId) aa := engine.APItoModelAccountAction(tpAa) if _, err := engine.Guardian.Guard(func() (interface{}, error) { if err := dbReader.LoadAccountActionsFiltered(aa); err != nil { return 0, err } return 0, nil }, 0, attrs.AccountActionsId); err != nil { return utils.NewErrServerError(err) } // ToDo: Get the action keys loaded by dbReader so we reload only these in cache // Need to do it before scheduler otherwise actions to run will be unknown if err := self.RatingDb.CacheRatingPrefixes(utils.DERIVEDCHARGERS_PREFIX, utils.ACTION_PREFIX, utils.SHARED_GROUP_PREFIX); err != nil { return err } if self.Sched != nil { self.Sched.Reload(true) } *reply = v1.OK return nil }
// Queries specific DerivedCharge on tariff plan func (self *ApierV1) GetTPAccountActions(attrs AttrGetTPAccountActions, reply *utils.TPAccountActions) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "AccountActionsId"}); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } tmpAa := &utils.TPAccountActions{TPid: attrs.TPid} if err := tmpAa.SetAccountActionsId(attrs.AccountActionsId); err != nil { return err } tmpAaa := engine.APItoModelAccountAction(tmpAa) if aas, err := self.StorDb.GetTpAccountActions(tmpAaa); err != nil { return utils.NewErrServerError(err) } else if len(aas) == 0 { return utils.ErrNotFound } else { tpAaa, err := engine.TpAccountActions(aas).GetAccountActions() if err != nil { return err } aa := tpAaa[tmpAa.KeyId()] tpdc := utils.TPAccountActions{ TPid: attrs.TPid, ActionPlanId: aa.ActionPlanId, ActionTriggersId: aa.ActionTriggersId, } if err := tpdc.SetAccountActionsId(attrs.AccountActionsId); err != nil { return err } *reply = tpdc } return nil }
// Queries specific AccountActions profile on tariff plan func (self *ApierV1) GetTPAccountActionsByLoadId(attrs utils.TPAccountActions, reply *[]*utils.TPAccountActions) error { mndtryFlds := []string{"TPid", "LoadId"} if len(attrs.Account) != 0 { // If account provided as filter, make all related fields mandatory mndtryFlds = append(mndtryFlds, "Tenant", "Account") } if missing := utils.MissingStructFields(&attrs, mndtryFlds); len(missing) != 0 { //Params missing return utils.NewErrMandatoryIeMissing(missing...) } aas := engine.APItoModelAccountAction(&attrs) if aa, err := self.StorDb.GetTpAccountActions(aas); err != nil { return utils.NewErrServerError(err) } else if len(aa) == 0 { return utils.ErrNotFound } else { tpAa, err := engine.TpAccountActions(aa).GetAccountActions() if err != nil { return err } var acts []*utils.TPAccountActions if len(attrs.Account) != 0 { acts = []*utils.TPAccountActions{tpAa[attrs.KeyId()]} } else { for _, actLst := range tpAa { acts = append(acts, actLst) } } *reply = acts } return nil }
// Creates a new AccountActions profile within a tariff plan func (self *ApierV1) SetTPAccountActions(attrs utils.TPAccountActions, reply *string) error { if missing := utils.MissingStructFields(&attrs, []string{"TPid", "LoadId", "Tenant", "Account", "ActionPlanId", "ActionTriggersId"}); len(missing) != 0 { return utils.NewErrMandatoryIeMissing(missing...) } aas := engine.APItoModelAccountAction(&attrs) if err := self.StorDb.SetTpAccountActions([]engine.TpAccountAction{*aas}); err != nil { return utils.NewErrServerError(err) } *reply = "OK" return nil }
// Process dependencies and load a specific AccountActions profile from storDb into dataDb. func (self *ApierV1) LoadAccountActions(attrs utils.TPAccountActions, 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) if _, err := engine.Guardian.Guard(func() (interface{}, error) { aas := engine.APItoModelAccountAction(&attrs) if err := dbReader.LoadAccountActionsFiltered(aas); err != nil { return 0, err } return 0, nil }, 0, attrs.KeyId()); err != nil { return utils.NewErrServerError(err) } // ToDo: Get the action keys loaded by dbReader so we reload only these in cache // Need to do it before scheduler otherwise actions to run will be unknown if self.Sched != nil { self.Sched.Reload(true) } *reply = OK return nil }
// Process dependencies and load a specific AccountActions profile from storDb into dataDb. func (self *ApierV2) LoadAccountActions(attrs AttrLoadAccountActions, 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) tpAa := &utils.TPAccountActions{TPid: attrs.TPid} tpAa.SetAccountActionsId(attrs.AccountActionsId) aa := engine.APItoModelAccountAction(tpAa) if _, err := engine.Guardian.Guard(func() (interface{}, error) { if err := dbReader.LoadAccountActionsFiltered(aa); err != nil { return 0, err } return 0, nil }, 0, attrs.AccountActionsId); err != nil { return utils.NewErrServerError(err) } if self.Sched != nil { self.Sched.Reload(true) } *reply = v1.OK return nil }