Skip to content
Snippets Groups Projects
Select Git revision
  • 6adfdc41ef5370e20f6b4b57d194644c3855b1c9
  • main default
2 results

stats_controller.go

Blame
  • 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()
    }