diff --git a/actions/admin/transactions.go b/actions/admin/transactions.go index 7e5d6a24..084c6cab 100644 --- a/actions/admin/transactions.go +++ b/actions/admin/transactions.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/BuxOrg/bux" + buxmodels "github.com/BuxOrg/bux-models" "github.com/BuxOrg/bux-server/actions" "github.com/BuxOrg/bux-server/mappings" "github.com/julienschmidt/httprouter" @@ -46,8 +47,13 @@ func (a *Action) transactionsSearch(w http.ResponseWriter, req *http.Request, _ return } + contracts := make([]*buxmodels.Transaction, 0) + for _, transaction := range transactions { + contracts = append(contracts, mappings.MapToTransactionContractForAdmin(transaction)) + } + // Return response - apirouter.ReturnResponse(w, req, http.StatusOK, transactions) + apirouter.ReturnResponse(w, req, http.StatusOK, contracts) } // transactionsCount will count all transactions filtered by metadata diff --git a/mappings/transaction.go b/mappings/transaction.go index d70e30b3..14777ccc 100644 --- a/mappings/transaction.go +++ b/mappings/transaction.go @@ -29,6 +29,35 @@ func MapToTransactionContract(t *bux.Transaction) *buxmodels.Transaction { TransactionDirection: string(t.Direction), } + processMetadata(t, t.XPubID, &model) + processOutputValue(t, t.XPubID, &model) + + return &model +} + +// MapToTransactionContractForAdmin will map the model from bux to the bux-models contract for admin +func MapToTransactionContractForAdmin(t *bux.Transaction) *buxmodels.Transaction { + if t == nil { + return nil + } + + model := buxmodels.Transaction{ + Model: *common.MapToContract(&t.Model), + ID: t.ID, + Hex: t.Hex, + XpubInIDs: t.XpubInIDs, + XpubOutIDs: t.XpubOutIDs, + BlockHash: t.BlockHash, + BlockHeight: t.BlockHeight, + Fee: t.Fee, + NumberOfInputs: t.NumberOfInputs, + NumberOfOutputs: t.NumberOfOutputs, + DraftID: t.DraftID, + TotalValue: t.TotalValue, + Status: string(t.Status), + Outputs: t.XpubOutputValue, + } + processMetadata(t, t.XPubID, &model) return &model @@ -43,7 +72,9 @@ func processMetadata(t *bux.Transaction, xpubID string, model *buxmodels.Transac model.Model.Metadata[key] = value } } +} +func processOutputValue(t *bux.Transaction, xpubID string, model *buxmodels.Transaction) { model.OutputValue = int64(0) if len(t.XpubOutputValue) > 0 && t.XpubOutputValue[xpubID] != 0 { model.OutputValue = t.XpubOutputValue[xpubID]