dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit e8422b69a38ec230ff152bbb79f1cdb84eb4a320
parent 65270d92695aaa5978421a894b3b062b29576c4d
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 14 Dec 2023 16:56:42 -0500

admin transactions page

Diffstat:
Mpkg/database/tablePokerXmrTransactions.go | 1+
Mpkg/web/handlers/admin.go | 20++++++++++++++++++++
Mpkg/web/handlers/data.go | 8++++++++
Mpkg/web/public/views/pages/admin/index.gohtml | 1+
Apkg/web/public/views/pages/admin/poker-transactions.gohtml | 34++++++++++++++++++++++++++++++++++
Mpkg/web/web.go | 1+
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 }}">&laquo; {{ t "Prev" . }}</a> + <a href="?p={{ add .Data.CurrentPage 1 }}" class="btn btn-light{{ if eq .Data.CurrentPage .Data.MaxPage }} disabled{{ end }}">{{ t "Next" . }} &raquo;</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)