dkforest

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

commit f8175f706efe08a965691f276bf33c590df71ee4
parent a071fd75d003bdc1624f7bf116fef27d752a0855
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Tue, 12 Dec 2023 16:19:41 -0500

refund bets if winners len is 0

Diffstat:
Mpkg/web/handlers/poker/poker.go | 60+++++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 37 insertions(+), 23 deletions(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -887,31 +887,45 @@ END: winners := g.Ongoing.computeWinners() mainPot := int(g.Ongoing.MainPot.Load()) playersGain := processPot(winners, mainPot) + pokerTable, _ := db.GetPokerTableBySlug(roomID) var winnersStr, winnerHand string - if len(playersGain) == 1 { - winnerHand = playersGain[0].HandStr - } else if len(playersGain) > 1 { - winnerHand = "Split pot" - } - tx := db.Begin() - pokerTable, _ := tx.GetPokerTableBySlug(roomID) - for _, el := range playersGain { - newLogEvent(g, roomLogsTopic, fmt.Sprintf("Winner #%d: %s %s -> %d", el.Group, el.Player.Username, el.HandStr, el.Gain)) - user, _ := tx.GetUserByUsername(database.Username(el.Player.Username)) - account, _ := tx.GetPokerTableAccount(user.ID, pokerTable.ID) - account.Amount += int64(el.Gain) - account.AmountBet = 0 - account.DoSave(tx) - winnersStr += el.Player.Username + " " - el.Player.Cash += el.Gain - } - for _, p := range g.Ongoing.Players { - user, _ := tx.GetUserByUsername(database.Username(p.Username)) - account, _ := tx.GetPokerTableAccount(user.ID, pokerTable.ID) - account.AmountBet = 0 - account.DoSave(tx) + if len(playersGain) >= 1 { + if len(playersGain) == 1 { + winnerHand = playersGain[0].HandStr + } else if len(playersGain) > 1 { + winnerHand = "Split pot" + } + tx := db.Begin() + for _, el := range playersGain { + newLogEvent(g, roomLogsTopic, fmt.Sprintf("Winner #%d: %s %s -> %d", el.Group, el.Player.Username, el.HandStr, el.Gain)) + user, _ := tx.GetUserByUsername(database.Username(el.Player.Username)) + account, _ := tx.GetPokerTableAccount(user.ID, pokerTable.ID) + account.Amount += int64(el.Gain) + account.AmountBet = 0 + account.DoSave(tx) + winnersStr += el.Player.Username + " " + el.Player.Cash += el.Gain + } + for _, p := range g.Ongoing.Players { + user, _ := tx.GetUserByUsername(database.Username(p.Username)) + account, _ := tx.GetPokerTableAccount(user.ID, pokerTable.ID) + account.AmountBet = 0 + account.DoSave(tx) + } + tx.Commit() + + } else if len(playersGain) == 0 { + // No winners, refund bets + tx := db.Begin() + for _, p := range g.Ongoing.Players { + user, _ := tx.GetUserByUsername(database.Username(p.Username)) + account, _ := tx.GetPokerTableAccount(user.ID, pokerTable.ID) + account.Amount += account.AmountBet + account.AmountBet = 0 + account.DoSave(tx) + } + tx.Commit() } - tx.Commit() g.Ongoing.MainPot.Store(0)