public ActionResult CalcResults() { var wagers = _context.Wagers .Include(w => w.Game) .Where(w => w.Game.Active) .OrderBy(w => w.ApplicationUserId) .ToArray(); var currentUser = _context.Users.OrderBy(u => u.Id).ToList().First(); long applyToWallet = 0L; foreach (var item in wagers) { if (item.ApplicationUserId != currentUser.Id) { // Update the wallet currentUser.Wallet += applyToWallet; // Reset the variables applyToWallet = 0; currentUser = _context.Users.Where(u => u.Id == item.ApplicationUserId).SingleOrDefault(); } // Calculate how much to apply based on how much the Wager awards applyToWallet += Wager.Award(item); } currentUser.Wallet += applyToWallet; _context.SaveChanges(); return(RedirectToAction("Index", "User")); }
public async Task <IActionResult> CancelWager(int id) { string?userId = User.GetId(); string?userName = User.GetName(); Wager wager = await _context.Wagers.Where(x => x.Id == id).Include(x => x.Hosts).FirstOrDefaultAsync(); if (wager == null) { ModelState.AddModelError(string.Empty, _errorMessages.NotFound); return(BadRequest(ModelState)); } if (wager.Status != (byte)Status.Created) { ModelState.AddModelError(string.Empty, "Wager is not in the created."); return(BadRequest(ModelState)); } if (!wager.Hosts.Any(x => x.ProfileId == userId)) { ModelState.AddModelError(string.Empty, "You are not a host of this wager."); return(BadRequest(ModelState)); } wager.Status = (byte)Status.Canceled; PersonalNotification notification = new PersonalNotification { Date = DateTime.Now, Message = $"{userName} has canceled the wager.", Data = wager.Id.ToString(), DataModel = (byte)DataModel.Wager }; List <PersonalNotification> notifications = NotificationHandler.AddNotificationToUsers(_context, wager.HostIds(), notification); await SignalRHandler.SendNotificationsAsync(_context, _hubContext, wager.HostIds(), notifications); return(Ok()); }
public override void Draw() { if (HasWager) { Console.Write($"{Wager.ToString("c")}\t"); } if (HasCards) { foreach (Card card in Cards) { card.Draw(); Console.Write(" "); } if (HasBeenDealt) { if (IsBlackjack) { Console.Write("BLACKJACK!"); } else if (HasSoftValue) { Console.Write($"({SoftLowValue} or {SoftHighValue})\t{Status}"); } else { Console.Write($"({FinalValue})\t{Status}"); } } } }
public ActionResult Save(Wager wager) { if (!ModelState.IsValid) { var viewModel = new WagerFormViewModel() { Games = _context.Games.Where(x => x.Active == true).ToList(), Wager = wager }; return(View("WagerForm", viewModel)); } if (wager.Id == 0) { ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext() .GetUserManager <ApplicationUserManager>() .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); wager.ApplicationUserId = user.Id; _context.Wagers.Add(wager); } else { var wagerInDb = _context.Wagers.Single(w => w.Id == wager.Id); wagerInDb.GameId = wager.GameId; wagerInDb.HomeOrVisit = wager.HomeOrVisit; wagerInDb.Amount = wager.Amount; } _context.SaveChanges(); return(RedirectToAction("Index", "Wager")); }
public void ExpectedResults_ReturnsCorrectly() { var wager = new Wager <IResultSet>(_bet.Object, _expectedResults.Object, _stake.Object); _expectedResults.Setup(_ => _.Equals(_expectedResults.Object)).Returns(true); Assert.Equal(_expectedResults.Object, wager.ExpectedResults); }
public void GetOutcome_ReturnsCorrectly() { var wager = new Wager <IResultSet>(_bet.Object, _expectedResults.Object, _stake.Object); _bet.Setup(_ => _.GetOutcome(wager, _expectedResults.Object)).Returns(_outcome.Object); Assert.Equal(_outcome.Object, wager.GetOutcome(_expectedResults.Object)); }
public static WagerResult ToWagerResult(this Wager wager, decimal returns) { return(new WagerResult { Username = wager.Username, Returns = returns, InFavour = wager.InFavour }); }
public async Task <Wager> Create(Wager wager) { await using var context = new CraigBotDbContext(); var newWager = (await context.Wagers.AddAsync(wager)).Entity; await context.SaveChangesAsync(); return(newWager); }
public void Post([FromBody] Wager value) { var content = new StringContent(JsonConvert.SerializeObject(value).ToString(), Encoding.UTF8, "application/json"); using (var httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"); var response = httpClient.PostAsync(new Uri(url), content).Result; } }
public static double GetRaiseAmount(Wager wager, double pot, double wagerToCall) { switch (wager) { case Wager.Half: var raiseAmount = wagerToCall + (wagerToCall + pot) / 2; return(raiseAmount); default: throw new System.InvalidOperationException(); } }
public async Task <Wager> CreateWager(IUser user, int betId, decimal stake, bool inFavour) { var wager = new Wager { UserId = user.Id, BetId = betId, Username = user.Username, Stake = stake, InFavour = inFavour }; var newWager = await _wagerRepository.Create(wager); return(newWager); }
public void TestUserLosesIfNotDouble() { var wager = new Wager() { Stake = 1.0f }; var diceRoll = new DiceRollMachine(); var testRoller = new TestDiceRollProvider(); diceRoll.DiceRoller = testRoller; testRoller.PreDeterminedRolls = new[] { 6, 1 }; var result = diceRoll.Play(wager); Assert.IsFalse(result.IsSuccess); }
public void TestPaysOutNinePoundOnDoubleSix() { var wager = new Wager() { Stake = 1.0f }; var diceRoll = new DiceRollMachine(); var testRoller = new TestDiceRollProvider(); diceRoll.DiceRoller = testRoller; testRoller.PreDeterminedRolls = new[] { 6, 6 }; var result = diceRoll.Play(wager); Assert.AreEqual(9.0f, result.Returns, 0.01f); }
public async Task AddWagerAsync(long challengeId, long userId, decimal amount) { var targetChallenge = await this.Context.Challenges.FirstOrDefaultAsync(x => x.Id == challengeId); var targetUser = await this.Context.Users.FirstOrDefaultAsync(x => x.Id == userId); var newWager = new Wager() { DateCreated = DateTime.UtcNow, Challenge = targetChallenge, Amount = amount, Principal = this.Principal, User = targetUser }; await this.Context.Wagers.AddAsync(newWager); }
public async Task <IActionResult> GetControlWager(int id) { string?userId = User.GetId(); Wager wager = await _context.Wagers.AsNoTracking().Where(x => x.Id == id).Include(x => x.Hosts).ThenInclude(x => x.Profile).Include(x => x.Challenges).ThenInclude(x => x.Challengers).ThenInclude(x => x.Profile).FirstOrDefaultAsync(); if (wager == null) { _errorMessages.Name = "Wager"; ModelState.AddModelError(string.Empty, _errorMessages.NotFound); return(BadRequest(ModelState)); } if (!wager.Hosts.Any(x => x.ProfileId == userId)) { ModelState.AddModelError(string.Empty, "You are not a host of this wager."); return(BadRequest(ModelState)); } return(Ok(wager)); }
public void Wager_IsApproved_ReturnFalse(bool[] approved) { //Arrange var wager = new Wager { Hosts = new List <WagerHostBid>() }; foreach (bool b in approved) { wager.Hosts.Add(new WagerHostBid { Approved = b }); } //Act var result = wager.IsApproved(); //Assert Assert.False(result); }
public void Wager_IsApproved_ReturnTrue(int approvedCount) { //Arrange var wager = new Wager { Hosts = new List <WagerHostBid>() }; for (int i = 0; i < approvedCount; i++) { wager.Hosts.Add(new WagerHostBid { Approved = true }); } //Act var result = wager.IsApproved(); //Assert Assert.True(result); }
public ActionResult Default(string id) { var user = _context.Users.SingleOrDefault(c => c.Id == id); if (user == null) { return(HttpNotFound()); } var games = _context.Games .Where(a => a.Active == true) .OrderByDescending(b => b.Spread).ToList(); var g1 = games.First(); var g2 = games.Last(); var game = (Math.Abs((double)g1.Spread) > Math.Abs((double)g2.Spread)) ? g1 : g2; Wager defaultWager = new Wager(); defaultWager.Amount = (int)user.getMinWager(); defaultWager.ApplicationUserId = user.Id; defaultWager.GameId = game.Id; defaultWager.HomeOrVisit = (game.Spread < 0) ? "Home" : "Away"; var wagers = _context.Wagers .Where(w => w.Game.Active) .Where(w => w.ApplicationUserId == user.Id) .ToList(); foreach (var w in wagers) { _context.Wagers.Remove(w); } _context.SaveChanges(); _context.Wagers.Add(defaultWager); _context.SaveChanges(); return(RedirectToAction("Index", "User")); }
public IActionResult Create([Bind("GameTeamId,WagerGameTeamSpreadMoneylineOfBet,WagerGameTeamSpreadOfBet,WagerType,WagerAmount,WinAmount,PayoutAmount,UpdatedBy,WagerGameTeamTeamName,GameId")] CreateWager createWager) { _logger.LogInformation("entered create wager"); var client = new HttpClient(); Wager wager = new Wager { GameId = createWager.GameId, GameTeamId = createWager.GameTeamId, WagerType = createWager.WagerType, WagerAmount = createWager.WagerAmount, WinAmount = createWager.WinAmount, PayoutAmount = createWager.PayoutAmount, TeamName = createWager.WagerGameTeamTeamName, SpreadOfBet = createWager.WagerGameTeamSpreadOfBet, SpreadMoneylineOfBet = createWager.WagerGameTeamSpreadMoneylineOfBet }; string json = JsonConvert.SerializeObject(wager); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); var response = client.PostAsync($"{baseUrl}/api/Wagers", stringContent).Result; return(View("Confirm", createWager)); }
public async Task RunBlackJackAsync(ArcadeUser invoker, ISocketMessageChannel channel, Wager wager) { if (!invoker.CanGamble) { return; } if (wager.Value < 0) { await channel.SendMessageAsync($"> 👁️ You can't specify a **negative** value.\n> *\"I know what you were trying to do.\"*"); return; } if (wager.Value == 0) { await channel.SendMessageAsync($"> ⚠️ You need to specify a positive amount of **Chips** to bet."); return; } if (wager.Value > invoker.ChipBalance) { await channel.SendMessageAsync($"> ⚠️ You don't have enough **Chips** to bet with."); return; } invoker.CanGamble = false; var session = new BlackJackSession(invoker, channel, wager.Value); try { var options = new SessionOptions { ResetTimeoutOnAttempt = true, Timeout = TimeSpan.FromSeconds(15), Session = session }; bool Filter(SocketMessage message, int index) { return(message.Author.Id == invoker.Id && message.Channel.Id == channel.Id); } await _collector.MatchAsync(Filter, options); } catch (Exception e) { await channel.CatchAsync(e); } invoker.CanGamble = true; }
public void Stake_ReturnsCorrectly() { var wager = new Wager <IResultSet>(_bet.Object, _expectedResults.Object, _stake.Object); Assert.Equal(_stake.Object, wager.Stake); }
public async Task <IActionResult> PostWager(Wager wagerData) { string?userId = User.GetId(); string?userName = User.GetName(); string?userKey = User.GetKey(); if (userKey == null) { ModelState.AddModelError(string.Empty, "User does not have a public key registered."); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } WagerHostBid caller = wagerData.Hosts.FirstOrDefault(x => x.ProfileId == userId); if (wagerData.Hosts.Sum(x => x.ReceivablePt) != 100) { ModelState.AddModelError(string.Empty, "The hosts receivable percentages do not add up to 100."); } if (wagerData.Hosts.Sum(x => x.PayablePt) != 100) { ModelState.AddModelError(string.Empty, "The hosts payable percentages do not add up to 100."); } if (caller == null) { ModelState.AddModelError(string.Empty, "Caller must be a host."); } else if (!caller.IsOwner) { ModelState.AddModelError(string.Empty, "Caller must be the owner."); } if (!wagerData.HostIds().IsUnique()) { ModelState.AddModelError(string.Empty, "The hosts are not unique."); } try { if (wagerData.Hosts.Single(x => x.IsOwner) == null) { throw new Exception("Only 1 owner should be specified."); } } catch (Exception e) { ModelState.AddModelError(string.Empty, e.Message); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } DateTime date = DateTime.Now; Wager wager = new Wager //prevents overposting { GameId = wagerData.GameId, Date = date, Description = wagerData.Description, MinimumWager = wagerData.MinimumWager, MaximumWager = wagerData.MaximumWager, IsPrivate = wagerData.IsPrivate, Status = 0, Hosts = new List <WagerHostBid>(), ChallengeCount = 0 }; foreach (WagerHostBid host in wagerData.Hosts) { WagerHostBid bid = new WagerHostBid { Approved = null, IsOwner = false, ReceivablePt = host.ReceivablePt, PayablePt = host.PayablePt, ProfileId = host.ProfileId }; if (host.IsOwner) { bid.Approved = true; bid.IsOwner = true; } wager.Hosts.Add(bid); } if (wager.IsApproved()) { wager.Status = (byte)Status.Confirmed; } _context.Wagers.Add(wager); _context.SaveChanges(); PersonalNotification notification = new PersonalNotification { Date = date, Message = $"{userName} created a wager with you.", Data = wager.Id.ToString(), DataModel = (byte)DataModel.Wager }; IEnumerable <string> others = wager.HostIds().Where(x => x != userId); List <PersonalNotification> notifications = NotificationHandler.AddNotificationToUsers(_context, others, notification); await SignalRHandler.SendNotificationsAsync(_context, _hubContext, others, notifications); return(Ok(new { id = wager.Id, status = wager.Status })); }
public async Task BlackJackAsync(Wager wager) { await _service.RunBlackJackAsync(Context.Account, Context.Channel, wager).ConfigureAwait(false); }
public Embed Generate() { EmbedBuilder e = EmbedData.DefaultEmbed; EmbedFooterBuilder f = new EmbedFooterBuilder(); f.WithText(ToString()); // Colors Color onEmptyColor = EmbedData.GetColor("steamerror"); Color onLoseColor = EmbedData.GetColor("error"); Color onWinColor = EmbedData.GetColor("origreen"); // Titles string onWinTitle = "+ {0}"; string onLoseTitle = "- {0}"; string onOORTitle = "> {0}"; // Money display string money = $"{EmojiIndex.Balance}" + "{0}".MarkdownBold(); string defLoseDesc = "You lost at chance at {0}."; string defWinDesc = "You have earned " + "(x{0})".MarkdownBold() + " the initial bet!"; string defEmptyDesc = "You do know you need money, right?"; string defOORDesc = "You asked to wager a bit too much."; // exceptions based on balance. if (Player.Balance == 0) { e.WithColor(onEmptyColor); e.WithTitle(string.Format(money, "null")); e.WithDescription(defEmptyDesc); return(e.Build()); } if (Player.Balance - Wager < 0) { if (!Player.Config.Overflow) { e.WithColor(onEmptyColor); e.WithTitle(string.Format(onOORTitle, string.Format(money, Player.Balance.ToPlaceValue()))); e.WithDescription(defOORDesc); return(e.Build()); } Wager = Player.Balance; } Player.Take((ulong)Wager); e.WithFooter(f); if (Victory) { Player.Give((ulong)Reward); e.WithColor(onWinColor); e.WithTitle(string.Format(onWinTitle, string.Format(money, Reward.ToPlaceValue()))); e.WithDescription(string.Format(defWinDesc, Risk.ToString("##,0.0#"))); return(e.Build()); } else { e.WithColor(onLoseColor); e.WithTitle(string.Format(onLoseTitle, string.Format(money, Wager.ToPlaceValue()))); e.WithDescription(LosingSummary ?? string.Format(defLoseDesc, string.Format(money, Reward.ToPlaceValue()))); return(e.Build()); } }
private void GenerateTestDataForTopTen() { var redisDb = RedisConnectionFactory.Instance.GetDatabase(GroupTypeEnum.Cache, "redis01"); var rnd = new Random(DateTime.Now.Millisecond); for (int i = 0; i < 100; i++) { var stake = rnd.Next(100, 10000); var winningAmt = rnd.Next(-70, 30) * stake; var wager = new Wager { WagerId = i + 1, UserCode = "Member" + (i + 1).ToString().PadLeft(2, '0'), Stake = stake, WinningAmount = winningAmt <= 0 ? 0 : winningAmt, }; redisDb.HashSet("EXAM:WAGERS", wager.WagerId, JsonConvert.SerializeObject(wager)); } }