]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - api/admin.go
Display total balance/performance.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / admin.go
index 3b16d878aad0e8a9502aac76551777102a00cd35..e4bfda53f0cdabeb3aa530be56db424923738667 100644 (file)
@@ -4,13 +4,18 @@ import (
        "fmt"
 
        "git.immae.eu/Cryptoportfolio/Front.git/db"
+       "github.com/shopspring/decimal"
 )
 
 type GetAllPortfoliosQuery struct {
        In struct {
                Market string
        }
-       Out map[string]Portfolio
+       Out struct {
+               Portfolios        map[string]Portfolio `json:"portfolios"`
+               TotalBTCValue     decimal.Decimal      `json:"totalBtcValue"`
+               TotalBTCVariation decimal.Decimal      `json:"totalBtcVariation"`
+       }
 }
 
 func (q GetAllPortfoliosQuery) ValidateParams() *Error {
@@ -27,7 +32,7 @@ func (q GetAllPortfoliosQuery) Run() (interface{}, *Error) {
                return nil, NewInternalError(err)
        }
 
-       q.Out = make(map[string]Portfolio)
+       q.Out.Portfolios = make(map[string]Portfolio)
 
        for _, marketConfig := range u {
                report, err := GetWeekPortfolio(marketConfig)
@@ -39,8 +44,13 @@ func (q GetAllPortfoliosQuery) Run() (interface{}, *Error) {
                        return nil, NewInternalError(err)
                }
 
-               q.Out[marketConfig.User.Email] = report.Round()
+               q.Out.Portfolios[marketConfig.User.Email] = report.Round()
+               q.Out.TotalBTCValue = q.Out.TotalBTCValue.Add(report.Performance.Value)
+               q.Out.TotalBTCVariation = q.Out.TotalBTCVariation.Add(report.Performance.Variation)
        }
 
+       q.Out.TotalBTCValue = q.Out.TotalBTCValue.Round(3)
+       q.Out.TotalBTCVariation = q.Out.TotalBTCVariation.Round(3)
+
        return q.Out, nil
 }