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:
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)