public void Bet(string userId, RouletteBetDto rouletteBetDto) { var roulette = this.GetById(rouletteBetDto.IdRoulette); if (roulette.Id != Guid.Empty.ToString() && roulette.Status == StatusEnum.Open) { roulette.Bets.Add(new Bet { CashAmount = rouletteBetDto.CashAmount, Color = rouletteBetDto.Color, Number = rouletteBetDto.Number, UserId = userId }); this.UpdateCache(); } }
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 Task <HttpResponseMessage> Bet(int userId, [FromBody] RouletteBetRequest betRequest) { string token = Request.Headers.GetValues("OnlineCasino-Token").FirstOrDefault(); if (!loginRepository.HasUserAndToken(userId, token)) { throw new ForbiddenException(); } int[] userBets = betRequest.BetValues; decimal stake = betRequest.Stake; if (userBets.Length != 1 && userBets.Length != 2 && userBets.Length != 3 && userBets.Length != 4 && userBets.Length != 6 && userBets.Length != 12 && userBets.Length != 18) { throw new BadRequestException("Bet values count is invalid!"); } var user = userRepository.Get(userId); if (user.Money < stake) { throw new BadRequestException("Not enough money in balance!"); } decimal win = 0; int spin = SpinWheel(); if (userBets.Contains(spin)) { int payout = StakePayout(userBets.Length); win = stake + (stake * payout); } var bet = new RouletteBetDto() { UserId = userId, BetValues = userBets, SpinResult = spin, Stake = stake, Win = win, CreationDate = DateTime.Now }; bet = betRepository.Create(bet); user.Money = user.Money - stake + win; userRepository.UpdateMoney(user.Id, user.Money); var response = new { BetId = bet.Id, BetValues = bet.BetValues, SpinResult = bet.SpinResult, Stake = bet.Stake, Win = bet.Win, Timestamp = bet.CreationDate }; return(Task.FromResult(Request.CreateResponse(HttpStatusCode.Created, response))); }
public void Bet([FromHeader(Name = "user-id")] string userId, RouletteBetDto rouletteBetDto) { this.rouletteService.Bet(userId, rouletteBetDto); }