public ActionResult CreateBet([FromBody] RouletteBet bet) { bool isNumber = ValidateBetNumber(bet); bool isColor = ValidateBetColor(bet); try { if (!this.Request.Headers.Keys.Contains("UserId")) { return(StatusCode(403, "The bet doesn't have an user id in headers.")); } if (isNumber && bet.BetValue <= 10000) { context.RouletteBet.Add(bet); context.SaveChanges(); return(Ok($"The bet has been created.")); } if (isColor && bet.BetValue <= 10000) { context.RouletteBet.Add(bet); context.SaveChanges(); return(Ok($"The bet has been created.")); } return(BadRequest()); } catch (Exception ex) { return(StatusCode(500, $"The server encountered an internal error ad was unable to complete your request. {ex.Message} {ex.StackTrace}")); } }
public override PlaceRouletteBet CalculateNextRouletteBet(RouletteBet PreviousBet, bool Win) { PlaceRouletteBet NextBet = new PlaceRouletteBet(); dynamic result = Scope.DoRouletteBet(PreviousBet, Win, NextBet); return(result); }
public static string GetRouletteBetString(RouletteBet bet, int numberBet) { string rtn = ""; switch (bet) { case RouletteBet.NONE: rtn = "NONE"; break; case RouletteBet.Black: rtn = "Black"; break; case RouletteBet.Red: rtn = "Red"; break; case RouletteBet.Even: rtn = "Even"; break; case RouletteBet.Odd: rtn = "Odd"; break; case RouletteBet.First12: rtn = "First 12"; break; case RouletteBet.Second12: rtn = "Second 12"; break; case RouletteBet.Third12: rtn = "Second 12"; break; case RouletteBet.OneToEighteen: rtn = "First Half"; break; case RouletteBet.NineteenToThirtySix: rtn = "Second Half"; break; case RouletteBet.SpecificNumber: rtn = "Number " + numberBet; break; } return(rtn); }
public override PlaceRouletteBet CalculateNextRouletteBet(RouletteBet PreviousBet, bool Win) { PlaceRouletteBet NextBet = new PlaceRouletteBet(); DynValue DoDiceBet = CurrentRuntime.Globals.Get("DoRouletteBet"); if (DoDiceBet != null) { DynValue Result = CurrentRuntime.Call(DoDiceBet, PreviousBet, Win, NextBet); } return(NextBet); }
public async Task UpdateRoulette(NewRoulette rouletteToRetrieve, RouletteBet rouletteUpdated) { var rouletteRetrived = await _DynamoDb.Get(rouletteToRetrieve); if (!rouletteRetrived.Status) { return; } rouletteRetrived.Bets.Add(rouletteUpdated.Player); await _DynamoDb.Insert(rouletteRetrived); }
private RouletteBetDto CreateBetDTO(RouletteBet bet) { return(new RouletteBetDto() { Id = bet.Id, UserId = bet.UserId, BetValues = bet.BetValues.ToArray(), SpinResult = bet.SpinResult, Stake = bet.Stake, Win = bet.Win, CreationDate = bet.CreationDate }); }
public bool ValidateBetNumber(RouletteBet bet) { try { if (Enumerable.Range(1, 36).Contains(Convert.ToInt16(bet.BetOnNumber))) { return(true); } } catch { return(false); } return(false); }
public async Task <IActionResult> Bet([FromBody] RouletteBet Bet) { var tokenEmailSession = new UserDynamo { Email = ClaimsHelper.GetValue(HttpContext) }; UserDynamo userInfo = await _DBDynamo.Get(tokenEmailSession); if (Quantity.IsBigger(baseValue: Bet.Player.Cash, comparedValue: userInfo.Cash)) { return(BadRequest("Not enough cash. Charge your account and try later please.")); } Bet.Player.Email = userInfo.Email; var jsonObject = JsonConvert.SerializeObject(Bet); await _Queue.SendMessageAsync(message : jsonObject, sqsUrl : sqsBet); return(StatusCode(201, Bet)); }
public bool ValidateBetColor(RouletteBet bet) { try { string color = bet.BetOnNumber.Trim().ToLower();; if (color == "black" || color == "red") { return(true); } } catch { return(false); } return(false); }
public RouletteBetDto Create(RouletteBetDto bet) { var newBet = new RouletteBet() { UserId = bet.UserId, BetValues = bet.BetValues.ToArray(), SpinResult = bet.SpinResult, Stake = bet.Stake, Win = bet.Win, CreationDate = bet.CreationDate }; using (var db = new OnlineCasinoDb()) { db.RouletteBets.Add(newBet); db.SaveChanges(); } return(CreateBetDTO(newBet)); }
public bool CreateRouletteBet(RouletteBetPayload payload) { var roulette = GetRouletteById(payload.RouletteId); if (roulette == null || !roulette.Status) { return(false); } var rouletteBets = GetRouletteBets(); var rouletteBet = new RouletteBet { RouletteId = payload.RouletteId, UserId = payload.UserId, NumberOrColorBet = payload.NumberOrColorBet, MoneyBet = payload.MoneyBet }; rouletteBets.Add(rouletteBet); var rouletteBetsJson = JsonSerializer.Serialize(rouletteBets); var result = _redisRepository.Set(_rouletteBetKey, rouletteBetsJson); return(result); }
public int RouletteBetReturn(int rouletteBallResult, List <int> redNumbers, List <int> blackNumbers, RouletteBet betMade, int specificNumberBet) { switch (betMade) { case RouletteBet.NONE: return(0); case RouletteBet.Red: if (redNumbers.Contains(rouletteBallResult)) { return(2); } else { return(0); } case RouletteBet.Black: if (blackNumbers.Contains(rouletteBallResult)) { return(2); } else { return(0); } case RouletteBet.Even: if (rouletteBallResult % 2 == 0 && rouletteBallResult != 0) { return(2); } else { return(0); } case RouletteBet.Odd: if (rouletteBallResult % 2 == 1 && rouletteBallResult != 0) { return(2); } else { return(0); } case RouletteBet.OneToEighteen: if (rouletteBallResult >= 1 && rouletteBallResult <= 18) { return(2); } else { return(0); } case RouletteBet.NineteenToThirtySix: if (rouletteBallResult >= 19 && rouletteBallResult <= 36) { return(2); } else { return(0); } case RouletteBet.First12: if (rouletteBallResult >= 1 && rouletteBallResult <= 12) { return(3); } else { return(0); } case RouletteBet.Second12: if (rouletteBallResult >= 13 && rouletteBallResult <= 24) { return(3); } else { return(0); } case RouletteBet.Third12: if (rouletteBallResult >= 25 && rouletteBallResult <= 36) { return(3); } else { return(0); } case RouletteBet.SpecificNumber: if (rouletteBallResult == specificNumberBet) { return(36); } else { return(0); } } return(0); }
public async Task <Response> Bet([FromBody] RouletteBet rouletteBet) { return(await rouletteService.BetToRoulette(rouletteBet.ToBet(Convert.ToInt64(httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value)))); }
public Player(Roulette roulette, RouletteBet bet, string name) { _bet = bet; _name = name; roulette.RouletteEvent += Listen; }
//Вернёт изменение баланса после ставки public Int64 Play(RouletteBet bet) { SpinRoulette(); switch (bet.Type) { //0 - чёрный, 1 - красный, 2 - зелёный case BetType.Color: BetColorType?betColor = ((ColorRouletteBet)bet).Color; if (betColor is null) { throw new ArgumentNullException("Color is null"); } if (GetColorType(LastNumber) == betColor && betColor != BetColorType.Green) { return(bet.Value); } else if (GetColorType(LastNumber) == betColor && betColor == BetColorType.Green) { return(bet.Value * 35); } else { return(-bet.Value); } break; //0 - чётный, 1 - нечётный case BetType.Parity: BetParityType?betParity = ((ParityRouletteBet)bet).Parity; if (betParity is null) { throw new ArgumentNullException("Parity is null"); } if ((int)betParity != LastNumber % 2 || LastNumber == 0) { return(-bet.Value); } else { return(bet.Value); } break; //Числа от 1 до 3 обозначают соотв. дюжину чисел (1-12, 13-24, 25-36) case BetType.Dozen: BetDozenType?betDozen = ((DozenRouletteBet)bet).Dozen; if (betDozen is null) { throw new ArgumentNullException("Dozen is null"); } if ((LastNumber <= 12 && LastNumber > 0 && (int)betDozen == 0) || (13 <= LastNumber && LastNumber <= 24 && (int)betDozen == 1) || (LastNumber > 24 && (int)betDozen == 2)) { return(bet.Value * 2); } else { return(-bet.Value); } break; case BetType.Single: Int64?betSingle = ((SingleRouletteBet)bet).Single; if (betSingle is null) { throw new ArgumentNullException("Single is null"); } if (LastNumber == betSingle) { return(bet.Value * 35); } else { return(-bet.Value); } break; default: throw new ArgumentOutOfRangeException("Bet type is out of allowed range"); } }
public virtual PlaceRouletteBet CalculateNextRouletteBet(RouletteBet PreviousBet, bool Win) { throw new NotImplementedException(); }
public override void Run(BotMain bot, BotCommandController commandController, string[] rawTerms, string[] terms, string characterName, string channel, UserGeneratedCommand command) { ChannelSettings thisChannel = bot.GetChannelSettings(channel); if (thisChannel.AllowGames) { string messageString = ""; int ante = Utils.GetNumberFromInputs(terms); if (ante < 0) { ante = 0; } if (ante > 0 && !thisChannel.AllowChips) { messageString = Name + " [b]with chips[/b] is currently not allowed in this channel under " + Utils.GetCharacterUserTags("Dice Bot") + "'s settings for this channel."; } else { IGame gametype = commandController.GetGameTypeFromCommandTerms(bot.DiceBot, terms); if (gametype == null) { //check game sessions and see if this channel has a session for anything var gamesPresent = bot.DiceBot.GameSessions.Where(a => a.ChannelId == channel); if (gamesPresent.Count() == 0) { messageString = "Error: No game type specified. [i]You must create a game session by specifying the game type as the first player.[/i]"; } else if (gamesPresent.Count() > 1) { messageString = "Error: You must specify a game type if more than one game session exists in the channel."; } else if (gamesPresent.Count() == 1) { GameSession sesh = gamesPresent.First(); gametype = sesh.CurrentGame; } } if (gametype != null) { if (!gametype.AllowAnte() && ante > 0) { messageString = Name + " cannot be played with ante. Try joining the game without an ante amount."; } else { GameSession sesh = bot.DiceBot.GetGameSession(channel, gametype); if (sesh != null) { ChipPile characterChips = bot.DiceBot.GetChipPile(characterName, channel); if (sesh.Players.Contains(characterName)) { messageString = Utils.GetCharacterUserTags(characterName) + " is already in " + sesh.CurrentGame.GetGameName() + "."; } else if (sesh.Players.Count > sesh.CurrentGame.GetMaxPlayers()) { messageString = Utils.GetCharacterUserTags(characterName) + " cannot join " + sesh.CurrentGame.GetGameName() + " because it is already at the [b]maximum amount of players[/b]."; } else if (ante > 0 && characterChips.Chips < ante) { messageString = Utils.GetCharacterUserTags(characterName) + " cannot make a bet for " + ante + " because they do not have enough chips."; } else { //TODO: change game join logic so that each game uses its own method to verify and add players if (gametype.GetType() == typeof(Roulette)) { #region gametype roulette RouletteBet betType = RouletteBet.NONE; int betNumber = -1; if (terms.Contains("red")) { betType = RouletteBet.Red; } else if (terms.Contains("black")) { betType = RouletteBet.Black; } else if (terms.Contains("even")) { betType = RouletteBet.Even; } else if (terms.Contains("odd")) { betType = RouletteBet.Odd; } else if (terms.Contains("first12")) { betType = RouletteBet.First12; } else if (terms.Contains("second12")) { betType = RouletteBet.Second12; } else if (terms.Contains("third12")) { betType = RouletteBet.Third12; } else if (terms.Contains("firsthalf")) { betType = RouletteBet.OneToEighteen; } else if (terms.Contains("secondhalf")) { betType = RouletteBet.NineteenToThirtySix; } else if (terms.Contains("#1")) { betType = RouletteBet.SpecificNumber; betNumber = 1; } else if (terms.Contains("#2")) { betType = RouletteBet.SpecificNumber; betNumber = 2; } else if (terms.Contains("#3")) { betType = RouletteBet.SpecificNumber; betNumber = 3; } else if (terms.Contains("#4")) { betType = RouletteBet.SpecificNumber; betNumber = 4; } else if (terms.Contains("#5")) { betType = RouletteBet.SpecificNumber; betNumber = 5; } else if (terms.Contains("#6")) { betType = RouletteBet.SpecificNumber; betNumber = 6; } else if (terms.Contains("#7")) { betType = RouletteBet.SpecificNumber; betNumber = 7; } else if (terms.Contains("#8")) { betType = RouletteBet.SpecificNumber; betNumber = 8; } else if (terms.Contains("#9")) { betType = RouletteBet.SpecificNumber; betNumber = 9; } else if (terms.Contains("#10")) { betType = RouletteBet.SpecificNumber; betNumber = 10; } else if (terms.Contains("#11")) { betType = RouletteBet.SpecificNumber; betNumber = 11; } else if (terms.Contains("#12")) { betType = RouletteBet.SpecificNumber; betNumber = 12; } else if (terms.Contains("#13")) { betType = RouletteBet.SpecificNumber; betNumber = 13; } else if (terms.Contains("#14")) { betType = RouletteBet.SpecificNumber; betNumber = 14; } else if (terms.Contains("#15")) { betType = RouletteBet.SpecificNumber; betNumber = 15; } else if (terms.Contains("#16")) { betType = RouletteBet.SpecificNumber; betNumber = 16; } else if (terms.Contains("#17")) { betType = RouletteBet.SpecificNumber; betNumber = 17; } else if (terms.Contains("#18")) { betType = RouletteBet.SpecificNumber; betNumber = 18; } else if (terms.Contains("#19")) { betType = RouletteBet.SpecificNumber; betNumber = 19; } else if (terms.Contains("#20")) { betType = RouletteBet.SpecificNumber; betNumber = 20; } else if (terms.Contains("#21")) { betType = RouletteBet.SpecificNumber; betNumber = 21; } else if (terms.Contains("#22")) { betType = RouletteBet.SpecificNumber; betNumber = 22; } else if (terms.Contains("#23")) { betType = RouletteBet.SpecificNumber; betNumber = 23; } else if (terms.Contains("#24")) { betType = RouletteBet.SpecificNumber; betNumber = 24; } else if (terms.Contains("#25")) { betType = RouletteBet.SpecificNumber; betNumber = 25; } else if (terms.Contains("#26")) { betType = RouletteBet.SpecificNumber; betNumber = 26; } else if (terms.Contains("#27")) { betType = RouletteBet.SpecificNumber; betNumber = 27; } else if (terms.Contains("#28")) { betType = RouletteBet.SpecificNumber; betNumber = 28; } else if (terms.Contains("#29")) { betType = RouletteBet.SpecificNumber; betNumber = 29; } else if (terms.Contains("#30")) { betType = RouletteBet.SpecificNumber; betNumber = 30; } else if (terms.Contains("#31")) { betType = RouletteBet.SpecificNumber; betNumber = 31; } else if (terms.Contains("#32")) { betType = RouletteBet.SpecificNumber; betNumber = 32; } else if (terms.Contains("#33")) { betType = RouletteBet.SpecificNumber; betNumber = 33; } else if (terms.Contains("#34")) { betType = RouletteBet.SpecificNumber; betNumber = 34; } else if (terms.Contains("#35")) { betType = RouletteBet.SpecificNumber; betNumber = 35; } else if (terms.Contains("#36")) { betType = RouletteBet.SpecificNumber; betNumber = 36; } if (betType == RouletteBet.NONE) { messageString = "No bet type was found in the [b]!joingame " + sesh.CurrentGame.GetGameName() + "[/b] command. Try adding a bet amount and a bet type."; } else if (ante <= 0) { messageString = "No bet amount was found in the [b]!joingame " + sesh.CurrentGame.GetGameName() + "[/b] command. Try adding a bet amount and a bet type."; } else { RouletteBetData betData = new RouletteBetData() { bet = betType, specificNumberBet = betNumber, characterName = characterName, amount = ante }; string timerString = ""; double secondsRemain = bot.DiceBot.GetSecondsRemainingOnCountdownTimer(channel, gametype.GetGameName()); if (secondsRemain > 0) { timerString = "[i] (game can begin in " + secondsRemain.ToString("N3") + " seconds)[/i]"; } string addDataString = bot.DiceBot.AddGameData(channel, gametype, betData); if (addDataString != "success") { messageString = "Error: Failed to add bet data to game session for " + gametype.GetGameName() + ". Game session terminated."; bot.DiceBot.CancelGame(channel, gametype); } else { messageString = bot.DiceBot.JoinGame(characterName, channel, gametype); messageString += "\n" + sesh.Players.Count + " / " + sesh.CurrentGame.GetMaxPlayers() + " players ready."; if (!string.IsNullOrEmpty(timerString)) { messageString += timerString; } else if (sesh.Players.Count >= sesh.CurrentGame.GetMinPlayers()) { messageString += "[b] (Ready to start!)[/b]"; } } } #endregion } else { bool anteJustSet = false; if (!sesh.AnteSet) //leave as separate if { sesh.AnteSet = true; anteJustSet = true; sesh.Ante = ante > 0 ? ante : 0; } if (anteJustSet && ante > 0 && characterChips.Chips < sesh.Ante) { messageString = Utils.GetCharacterUserTags(characterName) + " does not have [b]" + ante + " chips[/b] to start a game with an ante this high."; bot.DiceBot.RemoveGameSession(channel, sesh.CurrentGame); } else if (sesh.AnteSet && ante > 0 && sesh.Ante != ante) { messageString = "The ante for " + sesh.CurrentGame.GetGameName() + " has already been set to something else. Use [b]!joingame " + sesh.CurrentGame.GetGameName() + "[/b] without an ante."; } else if (characterChips.Chips < sesh.Ante) { messageString = Utils.GetCharacterUserTags(characterName) + " cannot join " + sesh.CurrentGame.GetGameName() + " because they have less than the ante amount of [b]" + sesh.Ante + " chips.[/b]"; } else if (sesh.Players.Contains(characterName)) { messageString = Utils.GetCharacterUserTags(characterName) + " is already in " + sesh.CurrentGame.GetGameName() + "."; } else if (sesh.Players.Count > sesh.CurrentGame.GetMaxPlayers()) { messageString = Utils.GetCharacterUserTags(characterName) + " cannot join " + sesh.CurrentGame.GetGameName() + " because it is already at the [b]maximum amount of players[/b]."; } else { messageString = bot.DiceBot.JoinGame(characterName, channel, gametype); messageString += "\n" + sesh.Players.Count + " / " + sesh.CurrentGame.GetMaxPlayers() + " players ready."; if (sesh.Players.Count >= sesh.CurrentGame.GetMinPlayers()) { messageString += "[b] (Ready to start!)[/b]"; } } } }//end too many players or player already joined } else { messageString = "Error: Game session for " + gametype.GetGameName() + " not found or created."; } //end game session null } } //end if gametype != null } bot.SendMessageInChannel(messageString, channel); } else { bot.SendMessageInChannel(Name + " is currently not allowed in this channel under " + Utils.GetCharacterUserTags("Dice Bot") + "'s settings for this channel.", channel); } }