mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Compact SupplierProfile.Suppliers and update test in engine/loader_csv_test.go
This commit is contained in:
committed by
Dan Christian Bogos
parent
215146ea14
commit
a3822fe643
@@ -293,6 +293,9 @@ cgrates.org,FLTR_DST_NL,*destinations,Destination,DST_NL,2014-07-29T15:00:00Z
|
||||
sppProfiles = `
|
||||
#Tenant,ID,FilterIDs,ActivationInterval,Sorting,SortingParams,SupplierID,SupplierFilterIDs,SupplierRatingPlanIDs,SupplierResourceIDs,SupplierStatIDs,SupplierWeight,Blocker,Weight
|
||||
cgrates.org,SPP_1,FLTR_ACNT_dan;FLTR_DST_DE,2014-07-29T15:00:00Z,*lowest_cost,,supplier1,FLTR_ACNT_dan,RPL_1,ResGroup1,Stat1,10,true,20
|
||||
cgrates.org,SPP_1,,,,,supplier1,,RPL_2,ResGroup2,,10,,
|
||||
cgrates.org,SPP_1,,,,,supplier1,FLTR_DST_DE,RPL_3,ResGroup3,Stat2,10,,
|
||||
cgrates.org,SPP_1,,,,,supplier1,,,ResGroup4,Stat3,10,,
|
||||
`
|
||||
)
|
||||
|
||||
@@ -1633,10 +1636,10 @@ func TestLoadSupplierProfiles(t *testing.T) {
|
||||
Suppliers: []*utils.TPRequestSupplier{
|
||||
&utils.TPRequestSupplier{
|
||||
ID: "supplier1",
|
||||
FilterIDs: []string{"FLTR_ACNT_dan"},
|
||||
RatingPlanIDs: []string{"RPL_1"},
|
||||
ResourceIDs: []string{"ResGroup1"},
|
||||
StatIDs: []string{"Stat1"},
|
||||
FilterIDs: []string{"FLTR_ACNT_dan", "FLTR_DST_DE"},
|
||||
RatingPlanIDs: []string{"RPL_1", "RPL_2", "RPL_3"},
|
||||
ResourceIDs: []string{"ResGroup1", "ResGroup2", "ResGroup3", "ResGroup4"},
|
||||
StatIDs: []string{"Stat1", "Stat2", "Stat3"},
|
||||
Weight: 10,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -2423,6 +2423,7 @@ type TpSuppliers []*TpSupplier
|
||||
|
||||
func (tps TpSuppliers) AsTPSuppliers() (result []*utils.TPSupplier) {
|
||||
mst := make(map[string]*utils.TPSupplier)
|
||||
suppliersMap := make(map[string]map[string]*utils.TPRequestSupplier)
|
||||
for _, tp := range tps {
|
||||
th, found := mst[tp.ID]
|
||||
if !found {
|
||||
@@ -2436,14 +2437,41 @@ func (tps TpSuppliers) AsTPSuppliers() (result []*utils.TPSupplier) {
|
||||
}
|
||||
}
|
||||
if tp.SupplierID != "" {
|
||||
th.Suppliers = append(th.Suppliers, &utils.TPRequestSupplier{
|
||||
ID: tp.SupplierID,
|
||||
FilterIDs: strings.Split(tp.SupplierFilterIDs, utils.INFIELD_SEP),
|
||||
RatingPlanIDs: strings.Split(tp.SupplierRatingplanIDs, utils.INFIELD_SEP),
|
||||
ResourceIDs: strings.Split(tp.SupplierResourceIDs, utils.INFIELD_SEP),
|
||||
StatIDs: strings.Split(tp.SupplierStatIDs, utils.INFIELD_SEP),
|
||||
Weight: tp.SupplierWeight,
|
||||
})
|
||||
if _, has := suppliersMap[tp.ID]; !has {
|
||||
suppliersMap[tp.ID] = make(map[string]*utils.TPRequestSupplier)
|
||||
}
|
||||
sup, found := suppliersMap[tp.ID][tp.SupplierID]
|
||||
if !found {
|
||||
sup = &utils.TPRequestSupplier{
|
||||
ID: tp.SupplierID,
|
||||
Weight: tp.SupplierWeight,
|
||||
}
|
||||
}
|
||||
if tp.SupplierFilterIDs != "" {
|
||||
supFilterSplit := strings.Split(tp.SupplierFilterIDs, utils.INFIELD_SEP)
|
||||
for _, supFilter := range supFilterSplit {
|
||||
sup.FilterIDs = append(sup.FilterIDs, supFilter)
|
||||
}
|
||||
}
|
||||
if tp.SupplierRatingplanIDs != "" {
|
||||
ratingPlanSplit := strings.Split(tp.SupplierRatingplanIDs, utils.INFIELD_SEP)
|
||||
for _, ratingSplit := range ratingPlanSplit {
|
||||
sup.RatingPlanIDs = append(sup.RatingPlanIDs, ratingSplit)
|
||||
}
|
||||
}
|
||||
if tp.SupplierResourceIDs != "" {
|
||||
resSplit := strings.Split(tp.SupplierResourceIDs, utils.INFIELD_SEP)
|
||||
for _, res := range resSplit {
|
||||
sup.ResourceIDs = append(sup.ResourceIDs, res)
|
||||
}
|
||||
}
|
||||
if tp.SupplierStatIDs != "" {
|
||||
statSplit := strings.Split(tp.SupplierStatIDs, utils.INFIELD_SEP)
|
||||
for _, sts := range statSplit {
|
||||
sup.StatIDs = append(sup.StatIDs, sts)
|
||||
}
|
||||
}
|
||||
suppliersMap[tp.ID][tp.SupplierID] = sup
|
||||
}
|
||||
if tp.SortingParams != "" {
|
||||
sortingParamSplit := strings.Split(tp.SortingParams, utils.INFIELD_SEP)
|
||||
@@ -2470,13 +2498,19 @@ func (tps TpSuppliers) AsTPSuppliers() (result []*utils.TPSupplier) {
|
||||
th.FilterIDs = append(th.FilterIDs, filter)
|
||||
}
|
||||
}
|
||||
|
||||
mst[tp.ID] = th
|
||||
}
|
||||
result = make([]*utils.TPSupplier, len(mst))
|
||||
i := 0
|
||||
for _, th := range mst {
|
||||
result[i] = th
|
||||
for id, _ := range suppliersMap {
|
||||
if result[i].ID == id {
|
||||
for _, supdata := range suppliersMap[id] {
|
||||
result[i].Suppliers = append(result[i].Suppliers, supdata)
|
||||
}
|
||||
}
|
||||
}
|
||||
i++
|
||||
}
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user