private long BetWithBanker(long sessionId, long accountId, string accountName, long amount, Gate gate, long banker, string bankerName, out long gateSumary, bool skipDAO = false) { gateSumary = 0; long sumaryBanker = _bankerLocks.Sum(x => x.betAmount); long requireNextLock = amount * GetWinnerMulti(gate); long oddLock = _bets[1].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.Odd) + _bets[2].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.ThreeUp) + _bets[3].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.ThreeDown); long evenLock = _bets[4].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.Even) + _bets[5].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.FourUp) + _bets[6].Logs.Sum(x => x.betAmount) * GetWinnerMulti(Gate.FourDown); if (gate >= Gate.Odd && gate <= Gate.ThreeDown) { oddLock += requireNextLock; } else { evenLock += requireNextLock; } long lockAmount = oddLock > evenLock ? oddLock - sumaryBanker : evenLock - sumaryBanker; long betResult = -99; string money = _moneyType == MoneyType.GOLD ? "Vàng" : "Xu"; if (!skipDAO) { betResult = GameDAO.BetWithBanker(sessionId, accountId, accountName, $"Đặt cửa: {gate.ToString()}, {amount} {money}", amount, (int)_moneyType, banker, lockAmount, bankerName, $"Tạm giữ bổ sung nhà cái: {gate.ToString()}, {amount} {money}"); } else { betResult = 1; } if (betResult >= 0) { _bets[(int)gate].Logs.Add(new BetLog { accountId = accountId, accountName = accountName, betAmount = amount, betGate = gate }); _bankerLocks.Add(new BetLog { accountId = banker, accountName = bankerName, betAmount = lockAmount, betGate = gate }); gateSumary = _bets[(int)gate].Logs.Sum(x => x.betAmount); } return(betResult); }