commit e8422b69a38ec230ff152bbb79f1cdb84eb4a320
parent 65270d92695aaa5978421a894b3b062b29576c4d
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 14 Dec 2023 16:56:42 -0500
admin transactions page
Diffstat:
6 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/pkg/database/tablePokerXmrTransactions.go b/pkg/database/tablePokerXmrTransactions.go
@@ -18,6 +18,7 @@ type PokerXmrTransaction struct {
Processed bool
CreatedAt time.Time
UpdatedAt time.Time
+ User User
}
func (d *DkfDB) GetUserPokerXmrTransactions(userID UserID) (out []PokerXmrTransaction, err error) {
diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go
@@ -477,6 +477,26 @@ func AdminRoomsHandler(c echo.Context) error {
return c.Render(http.StatusOK, "admin.rooms", data)
}
+func AdminPokerTransactionsHandler(c echo.Context) error {
+ db := c.Get("database").(*database.DkfDB)
+ var data adminPokerTransactionsData
+ data.ActiveTab = "pokerTransactions"
+
+ if err := db.DB().
+ Table("poker_xmr_transactions").
+ Scopes(func(query *gorm.DB) *gorm.DB {
+ data.CurrentPage, data.MaxPage, data.TransactionsCount, query = NewPaginator().Paginate(c, query)
+ return query
+ }).
+ Order("id DESC").
+ Preload("User").
+ Find(&data.Transactions).Error; err != nil {
+ logrus.Error(err)
+ }
+
+ return c.Render(http.StatusOK, "admin.poker-transactions", data)
+}
+
func AdminCaptchaHandler(c echo.Context) error {
db := c.Get("database").(*database.DkfDB)
var data adminCaptchaData
diff --git a/pkg/web/handlers/data.go b/pkg/web/handlers/data.go
@@ -894,6 +894,14 @@ type adminCreateGistData struct {
ErrorName string
}
+type adminPokerTransactionsData struct {
+ ActiveTab string
+ Transactions []database.PokerXmrTransaction
+ TransactionsCount int64
+ CurrentPage int64
+ MaxPage int64
+}
+
type adminSpamFiltersData struct {
ActiveTab string
SpamFiltersCount int64
diff --git a/pkg/web/public/views/pages/admin/index.gohtml b/pkg/web/public/views/pages/admin/index.gohtml
@@ -18,6 +18,7 @@
<a href="/admin/backup" class="list-group-item list-group-item-action{{ if eq .Data.ActiveTab "backup" }} active{{ end }}">{{ t "Backup" . }}</a>
<a href="/admin/ddos" class="list-group-item list-group-item-action{{ if eq .Data.ActiveTab "ddos" }} active{{ end }}">{{ t "DDoS" . }}</a>
<a href="/admin/spam-filters" class="list-group-item list-group-item-action{{ if eq .Data.ActiveTab "spamfilters" }} active{{ end }}">{{ t "Spam filters" . }}</a>
+ <a href="/admin/poker-transactions" class="list-group-item list-group-item-action{{ if eq .Data.ActiveTab "pokerTransactions" }} active{{ end }}">{{ t "Poker transactions" . }}</a>
<!-- <a href="/admin/update" class="list-group-item list-group-item-action{{ if eq .Data.ActiveTab "update" }} active{{ end }}">{{ t "Update" . }}</a>-->
</div>
</div>
diff --git a/pkg/web/public/views/pages/admin/poker-transactions.gohtml b/pkg/web/public/views/pages/admin/poker-transactions.gohtml
@@ -0,0 +1,33 @@
+{{ define "sub-content" }}
+<div class="pb-2 mt-4 mb-4 border-bottom">
+ <h2>{{ .Data.TransactionsCount | comma }} Poker Transactions</h2>
+</div>
+
+<table class="table table-striped table-sm table-novpadding table-dark">
+ <thead>
+ <tr>
+ <th>Amount</th>
+ <th>Confirmations</th>
+ <th>In/Out</th>
+ <th>User</th>
+ <th>Created at</th>
+ </tr>
+ </thead>
+ <tbody>
+ {{ range .Data.Transactions }}
+ <tr>
+ <td>{{ .Amount.XmrStr }} xmr</td>
+ <td>{{ if .IsIn }}{{ .Confirmations }}/10{{ else }}-{{ end }}</td>
+ <td>{{ if .IsIn }}IN{{ else }}OUT{{ end }}</td>
+ <td><a href="/admin/users/{{ .User.ID }}/edit">{{ .User.Username }}</a></td>
+ <td>{{ .CreatedAt.Format "Jan 02, 2006 - 15:04:05" }}</td>
+ </tr>
+ {{ end }}
+ </tbody>
+</table>
+
+<div class="mb-5">
+ <a href="?p={{ add .Data.CurrentPage -1 }}" class="btn btn-light{{ if le .Data.CurrentPage 1 }} disabled{{ end }}">« {{ t "Prev" . }}</a>
+ <a href="?p={{ add .Data.CurrentPage 1 }}" class="btn btn-light{{ if eq .Data.CurrentPage .Data.MaxPage }} disabled{{ end }}">{{ t "Next" . }} »</a>
+</div>
+{{ end }}
+\ No newline at end of file
diff --git a/pkg/web/web.go b/pkg/web/web.go
@@ -277,6 +277,7 @@ func getMainServer(db *database.DkfDB, i18nBundle *i18n.Bundle, renderer *tmp.Te
adminGroup.GET("/admin/sessions", handlers.SessionsHandler)
adminGroup.GET("/admin/backup", handlers.BackupHandler)
adminGroup.POST("/admin/backup", handlers.BackupHandler)
+ adminGroup.GET("/admin/poker-transactions", handlers.AdminPokerTransactionsHandler)
adminGroup.GET("/admin/spam-filters", handlers.AdminSpamFiltersHandler)
adminGroup.POST("/admin/spam-filters", handlers.AdminSpamFiltersHandler)
adminGroup.GET("/admin/ddos", handlers.DdosHandler)