public async Task <IActionResult> BetAsync([FromBody] BetRequest request)
        {
            Logger.LogDebug(nameof(BetAsync));

            // Validate model
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Get Player if exists
            var player = await _playerRepository.GetAsync(request.PlayerId).ConfigureAwait(false);

            // Check Player's Balance
            if (player.Balance - request.Bet < 0)
            {
                return(BadRequest(new BadRequestError($"The Player MAX. Bet Amout is {player.Balance} EUR")));
            }

            // Create new transaction
            var transaction = new Transaction
            {
                PlayerId = player.PlayerId,
                Bet      = request.Bet
            };

            // Persist Transaction
            await _transactionRepository.AddAsync(transaction).ConfigureAwait(false);

            // Re-read Player
            player = await _playerRepository.GetAsync(request.PlayerId).ConfigureAwait(false);

            return(Ok(player));
        }
Ejemplo n.º 2
0
        public BetResponse Bet(string gamblerId, BetRequest betRequest)
        {
            try
            {
                if (string.IsNullOrEmpty(gamblerId) || betRequest == null)
                {
                    ErrorMessage = ErrorEnum.ERROR_REQUEST_INCOMPLETE.ToString();
                    return(null);
                }
                if (!betValidation.ValidBetData(gamblerId, betRequest))
                {
                    ErrorMessage = betValidation.ErrorMessage;
                    return(null);
                }
                int betId = cBet.RegisterBet(gamblerId, betRequest);
                if (betId == 0)
                {
                    ErrorMessage = ErrorEnum.ERROR_GAMBLER_ALREADY_BET.ToString();
                    return(null);
                }

                return(cBet.BuilBetResponse(betId, gamblerId));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 3
0
        public void ReceiveBetAsByteArray(byte[] buffer)
        {
            string     strMessage = System.Text.Encoding.UTF8.GetString(buffer);
            BetRequest betRequest = JsonConvert.DeserializeObject <BetRequest>(strMessage);

            AcceptBet(betRequest);
        }
Ejemplo n.º 4
0
        public async Task TryBettingWithoutEnoughMoneyAndCheckIfBadRequestReturned()
        {
            string userIdString = TestHelper.TestUser.Id.ToString();

            // Make a bet

            // Arrange
            var betRequest = new BetRequest()
            {
                Bet   = 12,
                Stake = TestHelper.TestUser.Money + 10000
            };

            var json    = JsonConvert.SerializeObject(betRequest);
            var request = TestHelper.GenerateRequestMessage(url: "http://localhost/api/users/" + userIdString + "/bets",
                                                            method: HttpMethod.Post,
                                                            token: TestHelper.TestLogin.Token,
                                                            json: json);

            // Act
            var response = await TestHelper.Client.SendAsync(request);

            // Assert
            Assert.IsTrue(response.StatusCode == HttpStatusCode.BadRequest);
        }
Ejemplo n.º 5
0
        public void Bet_NotEnoughMoney_ThrowsBadRequestException()
        {
            var user = new UserDto()
            {
                Id    = 1,
                Money = 1234
            };

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockUserRepository.Setup(u => u.Get(user.Id)).Returns(user);

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act / Assert
            var betRequest = new BetRequest()
            {
                Bet   = 10,
                Stake = user.Money + 1000
            };

            Assert.Throws <BadRequestException>(() => controller.Bet(user.Id, betRequest));
        }
Ejemplo n.º 6
0
        public HttpResponseMessage PlaceBet(int id, [FromBody] BetRequest bet)
        {
            User user = _repository.Get(id);

            Bet userBet = new Bet
            {
                UserId    = bet.UserId,
                BetId     = Bet.IdCounter,
                Stake     = bet.Stake,
                DiceSum   = bet.Sum,
                TimeStamp = DateTime.Now
            };

            userBet.RollDice();

            if (user.BetHistory != null)
            {
                user.BetHistory.Add(userBet);
            }
            else
            {
                user.BetHistory = new List <Bet> {
                    userBet
                };
            }

            Bet.IdCounter++;

            _repository.Update(user);

            return(Request.CreateResponse(HttpStatusCode.OK, userBet));
        }
Ejemplo n.º 7
0
        public async Task <Response> AddBet(BetRequest bet)
        {
            Response response = new Response();

            try
            {
                var roulette = await RouletteAdapter.GetRoulette(bet.RouletteId.Value);

                if (roulette != null && roulette.Status)
                {
                    Random rnd = new Random();
                    bet.Id = rnd.Next();
                    await BetAdapter.SetBet(bet);

                    response.StatusCode = HttpStatusCode.OK.GetHashCode();
                    response.Data       = bet.GetBetResponse();
                }
                else
                {
                    response.StatusCode = HttpStatusCode.Forbidden.GetHashCode();
                    response.Errors.Add(new Entities.Utils.Error(response.StatusCode.ToString(), "RouletteId not is valid"));
                }
            }
            catch (Exception ex)
            {
                response.StatusCode = HttpStatusCode.InternalServerError.GetHashCode();
                response.Errors.Add(new Entities.Utils.Error(response.StatusCode.ToString(), ex.Message));
            }

            return(response);
        }
Ejemplo n.º 8
0
        public async Task Bet_EnoughMoney_CreatesBetAndReturnsBetInfoAndOKStatusCode()
        {
            var user = new UserDto()
            {
                Id    = 1,
                Money = 1234
            };

            int diceSumResult = 0;

            //Arrange
            Mock <IUserRepository>  mockUserRepository  = new Mock <IUserRepository>();
            Mock <ILoginRepository> mockLoginRepository = new Mock <ILoginRepository>();
            Mock <IBetRepository>   mockBetRepository   = new Mock <IBetRepository>();

            mockLoginRepository.Setup(l => l.HasUserAndToken(user.Id, It.IsAny <string>())).Returns(true);
            mockUserRepository.Setup(u => u.Get(user.Id)).Returns(user);
            mockBetRepository.Setup(b => b.Create(It.IsAny <BetDto>())).Returns <BetDto>(x =>
            {
                x.Id          = 1;               // set bet Id to 1
                diceSumResult = x.DiceSumResult; // save result of dice throw. Used in assertion of win amount
                return(x);
            });

            var controller     = new BetController(mockUserRepository.Object, mockLoginRepository.Object, mockBetRepository.Object);
            var requestMessage = new HttpRequestMessage();

            requestMessage.Headers.Add("DiceGaming-Token", "token");
            controller.Request       = requestMessage;
            controller.Configuration = new HttpConfiguration();

            //Act
            var betRequest = new BetRequest()
            {
                Bet   = 10,
                Stake = 200
            };
            var timeBeforeBet = DateTime.Now;
            var response      = await controller.Bet(user.Id, betRequest);

            var timeAfterBet = DateTime.Now;

            //Assert
            dynamic content = response.Content;
            var     win     = (decimal)content.Value.Win;

            mockUserRepository.Verify(u => u.UpdateMoney(user.Id, It.IsAny <decimal>()));
            Assert.IsTrue(content.Value.BetId == 1);
            Assert.IsTrue(content.Value.Bet == betRequest.Bet);
            Assert.IsTrue(content.Value.Stake == betRequest.Stake);
            Assert.IsTrue(betRequest.Bet == diceSumResult ? win > 0 : win == 0);
            var timestamp = (DateTime)content.Value.Timestamp;

            Assert.IsTrue(timeBeforeBet < timestamp);
            Assert.IsTrue(timestamp < timeAfterBet);

            Assert.IsTrue(response.StatusCode == HttpStatusCode.Created);
        }
Ejemplo n.º 9
0
        public async Task <ActionResult <BetRow> > MakeBet(BetRequest request)
        {
            IPHostEntry hostEntry        = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress   currentIpAddress = hostEntry.AddressList.FirstOrDefault(address => address.AddressFamily == AddressFamily.InterNetwork);
            int         user             = Convert.ToInt32(User.Identity.Name);
            var         result           = await _userService.MakeBet(request, user, currentIpAddress.ToString());

            return(Ok(result));
        }
Ejemplo n.º 10
0
        public Task <HttpResponseMessage> Bet(int userId, [FromBody] BetRequest betRequest)
        {
            string token = Request.Headers.GetValues("DiceGaming-Token").FirstOrDefault();

            if (!loginRepository.HasUserAndToken(userId, token))
            {
                throw new ForbiddenException();
            }

            int     userBet = betRequest.Bet;
            decimal stake   = betRequest.Stake;

            var user = userRepository.Get(userId);

            if (user.Money < stake)
            {
                throw new BadRequestException("Not enough money in balance!");
            }

            decimal win  = 0;
            int     roll = RollDices();

            if (roll == userBet)
            {
                decimal multiplier = StakeMultiplier(userBet);
                win  = stake * multiplier;
                win -= win / 10; // for the house
            }

            var bet = new BetDto()
            {
                UserId        = userId,
                DiceSumBet    = userBet,
                DiceSumResult = roll,
                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,
                Bet       = bet.DiceSumBet,
                Stake     = bet.Stake,
                Win       = bet.Win,
                Timestamp = bet.CreationDate
            };

            return(Task.FromResult(Request.CreateResponse(HttpStatusCode.Created, response)));
        }
Ejemplo n.º 11
0
 public static Selection[] ParseMultiRaceSelections(BetRequest betRequest, int[] selections)
 {
     return(selections.Select(s => new Selection()
     {
         MeetingNumber = (ushort)betRequest.MeetingNumber,
         RaceNumber = (ushort)(s / 100),
         HorseNumber = (ushort)(s % 100),
         IsBanker = 0
     }).ToArray());
 }
Ejemplo n.º 12
0
 public static Selection[] ParseSelections(BetRequest betRequest, int raceNumber, int[] selections, int raceOffset = 0)
 {
     return(selections.Select(s => new Selection()
     {
         MeetingNumber = (ushort)betRequest.MeetingNumber,
         RaceNumber = (ushort)(raceNumber + raceOffset),
         HorseNumber = (ushort)(s > 900 ? s - 900 : s),
         IsBanker = (byte)(s > 900 ? 1 : 0)
     }).ToArray());
 }
        public async Task PlayerBetTest()
        {
            var request = new BetRequest
            {
                PlayerId = 1,
                Bet      = 100
            };
            var result = await _httpClientHelper.PostAsync <BetRequest, Player>(BASE_URL + "bet", request).ConfigureAwait(false);

            Assert.NotNull(result);
        }
Ejemplo n.º 14
0
        public async Task <ActionResult <BaseResponse <BetResponse> > > Bet(BetRequest request)
        {
            BetAppRequest data = new BetAppRequest {
                bet    = request,
                idUser = Convert.ToInt32(HttpContext.User.FindFirst("idPerson").Value)
            };
            BaseResponse <BetResponse> response = await _rouletteService.Bet(data);

            if (!string.IsNullOrEmpty(response.message))
            {
                return(BadRequest(response));
            }
            return(Ok(response));
        }
Ejemplo n.º 15
0
        public void AcceptBet(BetRequest betRequest)
        {
            if (_balance - betRequest.Amount < 0)
            {
                SendMessage(new ErrorMessage("You don't have enough money"));
                return;
            }

            _balance   -= betRequest.Amount;
            _betRequest = betRequest;

            _rouletteSession.Broadcast(new UserMessage(Name, "bet " + betRequest.Amount + "$"));

            _logger.Info("New bet from " + Name + ": " + JsonConvert.SerializeObject(betRequest));
        }
Ejemplo n.º 16
0
        public bool SendBet(BetRequest betRequest, Bets bets)
        {
            var rouletteOpen = _rouletteService.GetFirstOpenedRoulette();

            if (rouletteOpen == null)
            {
                return(false);
            }
            bets.RouletteId = rouletteOpen.RouletteId;
            bets.Roulettes  = rouletteOpen;
            _context.Bets.Add(bets);
            _context.SaveChanges();

            return(true);
        }
Ejemplo n.º 17
0
        public void HandleScore(int score)
        {
            if (_betRequest != null)
            {
                if (_betRequest.IsWon(score))
                {
                    int prize = _betRequest.Amount * (_betRequest.Rate + 1);
                    _rouletteSession.Broadcast(new UserMessage(Name, "won " + prize + "$", "WON_MESSAGE"));
                    _balance += prize;
                }

                _betRequest = null;
            }

            SendMessage(new ScoreMessage(score, _balance));
        }
Ejemplo n.º 18
0
        public bool ValidBetRequest(BetRequest betRequest)
        {
            try
            {
                if (betRequest.RouletteId <= 0)
                {
                    return(false);
                }
                switch (betRequest.BetType)
                {
                case (int)BetTypeEnum.Number:
                    if (betRequest.BetNumber == null)
                    {
                        return(false);
                    }
                    if (betRequest.BetNumber < (int)RulesBetEnum.MinBetNumber || betRequest.BetNumber > (int)RulesBetEnum.MaxBetNumber)
                    {
                        return(false);
                    }
                    break;

                case (int)BetTypeEnum.Color:
                    if (betRequest.BetColor == null)
                    {
                        return(false);
                    }
                    if (betRequest.BetColor != (int)ColorBetEnum.Black && betRequest.BetColor != (int)ColorBetEnum.Red)
                    {
                        return(false);
                    }
                    break;

                default:
                    return(false);
                }
                if (betRequest.CreditsBet <= 0 || betRequest.CreditsBet > (decimal)RulesBetEnum.MaxCreditsBet)
                {
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 19
0
        public ActionResult Bet([FromHeader] string gamblerId, [FromBody] BetRequest betRequest)
        {
            try
            {
                BetResponse objBetResponse = gamblingService.Bet(gamblerId, betRequest);
                if (objBetResponse == null && !string.IsNullOrEmpty(gamblingService.ErrorMessage))
                {
                    return(BadRequest(gamblingService.ErrorMessage));
                }

                return(Ok(objBetResponse));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Ejemplo n.º 20
0
        public GenericResponse <bool> Bet([FromHeader] Guid userId, [FromBody] BetRequest betRequest)
        {
            var bet = new Bet
            {
                Id          = Guid.NewGuid(),
                UserId      = userId,
                BetDateTime = DateTime.UtcNow,
                NumberToBet = betRequest.NumberToBet,
                AmountToBet = betRequest.AmountToBet,
                RouletteId  = betRequest.RouletteId
            };

            Enum.TryParse(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(betRequest.ColourToBet), out Colour colourToBet);
            bet.ColourToBet = Enum.IsDefined(typeof(Colour), colourToBet) ? colourToBet : Colour.Undefined;

            return(BetApplication.SaveABet(bet));
        }
Ejemplo n.º 21
0
        private void RunButton_Click(object sender, EventArgs e)
        {
            progressBar1.Maximum = Convert.ToInt32(RunTimesValue.Text);
            progressBar1.Step    = 1;
            progressBar1.Update();

            var spinRequest = new SpinRequest(this);

            spinRequest.Method = Verbs.GET;
            var pdata = spinRequest.PostData;

            var betReq = new BetRequest();

            var config = new Configurations
            {
                Export     = export.Checked,
                gameName   = GameValue.Text,
                TokenKey   = KeyValue.Text,
                TimeStamp  = TsValue.Text,
                currency   = currency.Text,
                multiplier = "1",
                GameType   = comboBox1.SelectedIndex.ToString()
            };
            var betRes = betReq.GetBetsRequest(config);

            config.RunTimes = Int32.Parse(RunTimesValue.Text);

            foreach (var bet in betRes)
            {
                config.Bet = bet;
                Console.WriteLine(config.Bet);
                spinRequest.SRequest(config);
            }

            DialogResult dialog = new DialogResult();

            dialog = MessageBox.Show("Do you want to close?", "Alert!", MessageBoxButtons.YesNo);

            if (dialog == DialogResult.Yes)
            {
                System.Environment.Exit(1);
            }
        }
Ejemplo n.º 22
0
        public Message CreateBet(BetRequest request)
        {
            Message message = new Message();
            int     answer  = 0;
            string  remark  = "";
            int     bet     = 0;

            try
            {
                string tokenDecoded = System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(request.token));
                Open();
                command             = new SqlCommand("dbo.betTransacction", connection);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@tokenDecoded", tokenDecoded);
                command.Parameters.AddWithValue("@betNumber", request.number);
                command.Parameters.AddWithValue("@betColor", request.color.ToUpper());
                command.Parameters.AddWithValue("@mount", request.amount);
                command.Parameters.AddWithValue("@rouletteId", request.rouletteId);
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    answer = reader.GetFieldValue <int>(0);
                    remark = reader.GetFieldValue <string>(1);
                    bet    = reader.GetFieldValue <int>(2);
                }
                if (answer != 0)
                {
                    message = new Message("0000", "Transaccion exitosa, " + remark + ", su id de apuesta es: " + bet, null);
                }
                else
                {
                    message = new Message("0023", "Transaccion fallida. " + remark, null);
                }
                Close();
            }
            catch (Exception ex)
            {
                message = new Message("0022", "Transaccion fallida.", ex);
            }

            return(message);
        }
Ejemplo n.º 23
0
        public static Selection[] ParseSelections(BetRequest betRequest, int raceNumber, string selections)
        {
            var ret = new List <Selection>();

            switch (betRequest.BetCode)
            {
            // multi-race, multi-selection
            case Enums.BetCode.TRIO:
            case Enums.BetCode.DOUBLETRIO:
            case Enums.BetCode.TRIPLETRIO:
            case Enums.BetCode.SIXUP:
                var legs = selections.Split('/');
                for (var i = 0; i < legs.Length; ++i)
                {
                    ret.AddRange(ParseSelections(betRequest, raceNumber, Array.ConvertAll(legs[i].Split(','), int.Parse), i));
                }
                break;

            // multi-race:
            case Enums.BetCode.SCOOP6:
            case Enums.BetCode.SUPER7:
            case Enums.BetCode.JACKPOT:
            case Enums.BetCode.PLACEPOT:
            case Enums.BetCode.QUADPOT:
            case Enums.BetCode.QUADDIE:
            case Enums.BetCode.TOTEDOUBLE:
            case Enums.BetCode.TOTETREBLE:
            case Enums.BetCode.SUPERJACKPOT7:
            case Enums.BetCode.PLACEPOT7:
            case Enums.BetCode.SUPERJACKPOT8:
            case Enums.BetCode.PLACEPOT8:
                ret.AddRange(ParseMultiRaceSelections(betRequest, Array.ConvertAll(selections.Split(','), int.Parse)));
                break;

            default:
                ret.AddRange(ParseSelections(betRequest, raceNumber, Array.ConvertAll(selections.Split(','), int.Parse)));
                break;
            }
            return(ret.ToArray());
        }
Ejemplo n.º 24
0
        private void RunButton_Click(object sender, EventArgs e)
        {
            progressBar1.Maximum = Convert.ToInt32(RunTimesValue.Text);
            progressBar1.Step    = 1;
            progressBar1.Update();


            var config1     = new Configurations();
            var spinRequest = new SpinRequest(this);
            var authToken   = new AuthenticateToken();

            spinRequest.Method = Verbs.GET;
            var pdata = spinRequest.PostData;

            var betReq = new BetRequest();

            String keysValue = KeyValue.Text;

            config1.TokenNames = KeyValue.Text.Split(',');
            string gamesType = comboBox1.SelectedIndex.ToString();

            var configs = authToken.AuthTokens(config1).Select(t => {
                var result        = new Configurations();
                result.TokenKey   = t;
                result.gameName   = GameValue.Text;
                result.TimeStamp  = TsValue.Text;
                result.multiplier = multiplier.Text;
                result.Bet        = BetValue.Text;
                result.GameType   = gamesType;
                result.RunTimes   = Int32.Parse(RunTimesValue.Text);

                return(result);
            });

            Parallel.ForEach(configs, (conf, state) => {
                spinRequest.SRequest(conf);
                System.Threading.Thread.Sleep(3000);
            }
                             );
        }
Ejemplo n.º 25
0
        public IActionResult CreateBet([FromHeader(Name = "UserId")] String UserId, [FromBody] BetRequest bet)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Model is not valid"));
                }

                var jsonResponse = new
                {
                    bet.Color,
                    bet.Number,
                    created = _rouletteService.CreateBet(bet),
                };
                return(Ok(jsonResponse));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.Message));
            }
        }
Ejemplo n.º 26
0
 public void InsertGambling(BetEntity objBet, BetRequest betRequest, string gamblerId)
 {
     try
     {
         List <GamblingEntity> objGamblings = GetGamblings();
         objGamblings.Add(new GamblingEntity
         {
             BetId      = objBet.Id,
             GamblerId  = gamblerId,
             CreditsBet = betRequest.CreditsBet,
             BetType    = betRequest.BetType,
             BetNumber  = betRequest.BetNumber,
             BetColor   = betRequest.BetColor,
             WonBet     = null
         });
         redisCache.SetGamblingToRedis(objGamblings);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Ejemplo n.º 27
0
        public Message CreateBet(BetRequest request, [FromHeader] string token)
        {
            Message message = new Message();

            try
            {
                if (request != null)
                {
                    if (!String.IsNullOrEmpty(token))
                    {
                        request.token = token;
                        if (!String.IsNullOrEmpty(request.color) && request.amount != 0 && request.rouletteId != 0)
                        {
                            DB db = new DB();
                            message = db.CreateBet(request);
                        }
                        else
                        {
                            message = new Message("0021", "Ocurrio un error, los campos son requeridos", null);
                        }
                    }
                    else
                    {
                        message = new Message("0020", "Ocurrio un error, se requiere un token para completar la solicitud", null);
                    }
                }
                else
                {
                    message = new Message("0018", "Ocurrio un error, se requiere el cuerpo de la peticion.", null);
                }
            }
            catch (Exception ex)
            {
                message = new Message("0017", "Ocurrio un error.", ex);
            }

            return(message);
        }
Ejemplo n.º 28
0
        public async Task <IActionResult> Post(BetRequest request)
        {
            Response response = new Response();

            if (!ModelState.IsValid)
            {
                response.StatusCode = HttpStatusCode.BadRequest.GetHashCode();
            }
            else
            {
                try
                {
                    HttpContext.Request.Headers.TryGetValue("userId", out StringValues userId);
                    if (string.IsNullOrEmpty(userId))
                    {
                        response.StatusCode = HttpStatusCode.BadRequest.GetHashCode();
                        response.Errors.Add(new Error(response.StatusCode.ToString(), "Usuario nulo o invalido"));
                    }
                    else if ((request.Color == 0 && request.Number == null) || (request.Color != 0 && request.Number != null))
                    {
                        response.StatusCode = HttpStatusCode.BadRequest.GetHashCode();
                        response.Errors.Add(new Error(response.StatusCode.ToString(), "Apuesta invalida, debe apostar por numero o color, en cada apuesta"));
                    }
                    else
                    {
                        request.UserId = userId;
                        response       = await BetServices.AddBet(request);
                    }
                }
                catch (Exception ex)
                {
                    response.StatusCode = HttpStatusCode.InternalServerError.GetHashCode();
                    response.Errors.Add(new Error(response.StatusCode.ToString(), ex.Message));
                }
            }

            return(GenerateResult(response));
        }
Ejemplo n.º 29
0
        public IActionResult Bet([FromHeader(Name = "user-id")] string UserId, [FromRoute(Name = "id")] string id,
                                 [FromBody] BetRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new
                {
                    error = true,
                    msg = "Bad Request"
                }));
            }

            try
            {
                Roulette roulette = rouletteService.Bet(id, UserId, request.position, request.money);
                return(Ok(roulette));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(StatusCode(405));
            }
        }
Ejemplo n.º 30
0
        public int RegisterBet(string gamblerId, BetRequest betRequest)
        {
            try
            {
                BetEntity objBet;
                if (betValidation.ValidBetWithRouletteExist(betRequest.RouletteId))
                {
                    objBet = betModel.GetBets().Where(b => b.RouletteId == betRequest.RouletteId && b.Status == true).FirstOrDefault();
                }
                else
                {
                    int betId = 0;
                    List <BetEntity> objBets = betModel.GetBets();
                    if (objBets.Count > 0)
                    {
                        betId = objBets.Max(b => b.Id) + 1;
                    }
                    else
                    {
                        betId++;
                    }
                    objBet = betModel.CreateBet(betId, betRequest.RouletteId, status: true);
                }
                if (gamblingValidation.ValidGamblerAlreadyBetOnGambling(objBet.Id, gamblerId))
                {
                    return(0);
                }
                gamblingModel.InsertGambling(objBet, betRequest, gamblerId);
                gamblerModel.UpdateGamblerCredits(gamblerId, gamblerModel.GetOneGambler(gamblerId).Credits - betRequest.CreditsBet);

                return(objBet.Id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }