Select Git revision
stats_controller.go 1.28 KiB
/**
* stats_controller.go
*
* COPYRIGHT: FUNDACIÓN TECNALIA RESEARCH & INNOVATION, 2022.
*/
package stats
import (
"git.code.tecnalia.com/blockchain/hypercog/model"
"git.code.tecnalia.com/ledgerbuilder/sdk/core/api"
"git.code.tecnalia.com/ledgerbuilder/sdk/core/fabric/protos"
"git.code.tecnalia.com/ledgerbuilder/sdk/shared"
)
type StatsResult struct {
GlobalStats model.Stats `json:"global"` // in tons
PerCompany map[string]model.Stats `json:"perCompany,omitempty"`
}
func GetStatsOperation(stub shared.LedgerBuildrStubInterface, request shared.LedgerBuildrAsset) protos.Response {
fnName := "GetStats"
ret := new(StatsResult)
orgs, err := getOrgList(stub)
if err != nil {
return api.NewApiResponsePtr(fnName, err, nil).SendResponse()
}
globalStat, err := GetStats(stub, GLOBAL_KEY)
if err != nil {
return api.NewApiResponsePtr(fnName, err, nil).SendResponse()
}
ret.GlobalStats = *model.RefineStats(globalStat)
if len(*orgs) > 0 {
ret.PerCompany = make(map[string]model.Stats)
}
for _, org := range *orgs {
orgStat, err := GetStats(stub, org)
if err != nil {
return api.NewApiResponsePtr(fnName, err, nil).SendResponse()
}
ret.PerCompany[org] = *model.RefineStats(orgStat)
}
return api.NewAPIGenericResponsePtr(fnName, nil, ret).SendResponse()
}