Exemple #1
0
        public async Task <ActionResult> PlaceBet(BetViewModel model)
        {
            if (ModelState.IsValid)
            {
                var betModel = new BetModel
                {
                    LotId   = model.LotId,
                    UserId  = User.Identity.GetUserId(),
                    Sum     = model.Sum,
                    BetDate = DateTime.UtcNow
                };

                var result = await _betService.AddAsync(betModel);

                if (result.Succedeed)
                {
                    TempData["BetAccepted"] = "Your bet has been accepted";
                    return(RedirectToAction("Details", "Lots", new { id = model.LotId }));
                }

                foreach (var error in result.ValidationResults)
                {
                    ModelState.AddModelError(error.MemberNames.First(), error.ErrorMessage);
                }
            }

            return(PartialView("PlaceBetPartial"));
        }
Exemple #2
0
        public void CreateUserInput([FromBody] BetModel betModel)
        {
            var userSession = _userSessionRepository.Find(us => us.AuthToken == Authorisation.AuthToken).Single();

            if (userSession == null)
            {
                throw new Exception("Invalid User");
            }
            var supervisor    = _userRepository.FindSingleOrNull(u => u.UserName.Equals(betModel.supervisor));
            var number        = _numberRepository.FindSingleOrNull(n => n.Number == betModel.value);
            var rouletteEvent = _rouletteEventsRepository.Find(r => r.EventName == betModel.rouletteEventName).Single();
            var log           = new Logs()
            {
                NumberId        = number.Id,
                RouletteEventId = rouletteEvent.Id,
                UserId          = userSession.User.Id,
                SupervisorId    = supervisor?.Id,
                //BetPlaced = betModel.betPlaced,
                UserSessionLogId = Authorisation.UserSessionLogId,
                UpdateFlag       = false,
            };

            _logRepository.Insert(log);
            _unitofWork.SaveChanges();
        }
        public string PlaceBet(BetModel betModel)
        {
            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <BetModel, BetDTO>()).CreateMapper();
            var bet    = Mapper.Map <BetModel, BetDTO>(betModel);

            return(service.PlaceBet(bet));
        }
Exemple #4
0
        public BetModel GetById(int Id)
        {
            BetModel objBet = new BetModel();;

            try
            {
                var command = CrearComando("spGetBetById");
                command.CommandType = System.Data.CommandType.StoredProcedure;
                using (var reader = command.ExecuteReader())
                {
                    DataTable dt = new DataTable();
                    dt.Load(reader);
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt.Rows)
                        {
                            objBet = SetBet(item);
                        }
                    }

                    return(objBet);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #5
0
        public string Post([FromBody] BetModel bet)
        {
            var userId = Request.Headers["UserId"];

            bet.UserId = Convert.ToInt32(userId);
            if (bet.IsValidToBet())
            {
                BetRepositorySQL betRepository = new BetRepositorySQL();

                bet.IsActive = true;
                bet.BetId    = betRepository.AddBet(bet: bet);
                if (bet.BetId != 0)
                {
                    return($"La apuesta se ha recibido correctamente en la ruleta {bet.RouletteId}");
                }
                else
                {
                    return($"La apuesta en la ruleta {bet.RouletteId} no se ha podido realizar");
                }
            }
            else
            {
                return("La apuesta no se ha podido realizar, por favor verifícala");
            }
        }
        public ActionResult <IEnumerable <string> > CreateBet(BetModel objBet)
        {
            try
            {
                ResponseAPI <BetModel> response = null;
                var user = Request.Headers["user_autenticated"].ToString();

                if (user != string.Empty)
                {
                    BetModel objOk = BetUtilities.ValidateBet(objBet);
                    response = new ResponseAPI <BetModel>(Parameters.OK_REQUEST, "OK", _BetService.CreateBet(objOk));
                }
                else
                {
                    response = new ResponseAPI <BetModel>(Parameters.BAD_REQUEST, "Missig user_autenticated", false);
                }


                return(Ok(
                           response
                           ));
            }
            catch (Exception ex)
            {
                ResponseAPI <BetModel> response = new ResponseAPI <BetModel>(Parameters.INTERNAL_SERVER_ERROR, ex.Message, false);

                return(Ok(
                           response
                           ));
            }
        }
Exemple #7
0
        public static BetModel ValidateBet(BetModel objBet)
        {
            BetModel objResponse = new BetModel();

            try
            {
                if (objBet.iBetNumber != 0)
                {
                    objResponse.strBetColor = ValidateNumberBet(objBet.iBetNumber);
                    objResponse.strBetKey   = Parameters.KEY_COLOR_AND_NUMBER_BET;
                }
                else
                {
                    objResponse.strBetColor = ValidateColorBet(objBet.strBetColor);
                    objResponse.strBetKey   = Parameters.KEY_COLOR_BET;
                }

                string ValueValid = ValidateValueBet(objBet.lgBetValue);
                if (ValueValid == Parameters.INVALID_VALUE)
                {
                    return(objResponse = new BetModel());
                }
                objResponse.lgBetValue    = objBet.lgBetValue;
                objResponse.iFkRouletteId = objBet.iFkRouletteId;
                objResponse.iFkClientId   = objBet.iFkClientId;
                objResponse.iBetNumber    = objBet.iBetNumber;

                return(objResponse);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <BetEntity> Bet(string idRoulette, string userId, BetModel betRquest)
        {
            string         message  = string.Empty;
            RouletteEntity roulette = await _rouletteRepository.GetById(idRoulette);

            message = _utilities.ValidateRoulette(roulette, isbetting: true);
            if (message != "")
            {
                throw new Exception(message);
            }
            message = _utilities.ValidateBetRequest(betRquest);
            if (message != "")
            {
                throw new Exception(message);
            }
            BetEntity bet = new BetEntity()
            {
                BetDate     = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"),
                UserId      = userId,
                BetModel    = betRquest,
                Winner      = false,
                EarnedMoney = 0,
                Roulette    = roulette
            };
            await _betRepository.InsertDocument(bet);

            return(bet);
        }
Exemple #9
0
        public int AddBet(BetModel bet)
        {
            string sql = $"INSERT INTO BET (ROULETTEID, USERID, ISACTIVE, NUMBER, COLOR, MONEY)" +
                         $"VALUES ({bet.RouletteId},{bet.UserId}, '{bet.IsActive}', {bet.Number},'{bet.Color}',{bet.Money});" +
                         "SELECT SCOPE_IDENTITY()";
            SqlCommand cmd = new SqlCommand(sql, _db.connection)
            {
                CommandType = CommandType.Text
            };

            _db.connection.Open();
            try
            {
                int betId = Convert.ToInt32(cmd.ExecuteScalar());
                return(betId);
            }
            catch (Exception ex)
            {
                //todo: implementar logs;
                return(0);
            }
            finally
            {
                _db.connection.Close();
            }
        }
        public IHttpActionResult PlaceBet(BetModel betModel)
        {
            var mapper = new MapperConfiguration(cfg => cfg.CreateMap <BetModel, BetDTO>()).CreateMapper();
            var bet    = mapper.Map <BetModel, BetDTO>(betModel);

            service.PlaceBet(bet);
            return(Ok());
        }
Exemple #11
0
        public async Task <User> ConfigureUser(BetModel model, string userId)
        {
            User user = await _userRepository.GetUserById(userId);

            UserHelper.CheckUser(user, userId, model.Money);
            user.Money = user.Money - model.Money;
            return(user);
        }
 public BetValidation(IDistributedCache distributedCache)
 {
     betModel           = new BetModel(distributedCache);
     gamblerValidation  = new GamblerValidation(distributedCache);
     rouletteValidation = new RouletteValidation(distributedCache);
     gamblerModel       = new GamblerModel(distributedCache);
     rouletteModel      = new RouletteModel(distributedCache);
 }
Exemple #13
0
 public BetRoulette(BetModel model, User user)
 {
     Color      = model.Color;
     Number     = model.Number;
     RouletteId = model.RouletteId;
     UserId     = user.Id;
     UserName   = user.UserName;
     Date       = DateTime.Now;
 }
Exemple #14
0
        public async Task <Roulette> ConfigureRoulette(BetModel model, User user)
        {
            Roulette roulette = await _rouletteRepository.GetRouletteById(model.RouletteId);

            RouletteHelper.CheckBetRoulette(roulette, model.RouletteId);
            BetRoulette bet = new BetRoulette(model, user);

            roulette.AddBet(bet);
            return(roulette);
        }
Exemple #15
0
        /// <summary>
        /// 根据模式判断
        /// 判断逻辑,有且只有一个对子,不能有3个的,4 个的,5个的。就是中奖
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        public bool IsWinByModeKillNo(DB_PredictRecord record, BetModel model, string killNo)
        {
            bool win = false;

            if (OnlyPairModelBet(record.GoodNo) && !record.GoodNo.Contains(killNo))
            {
                win = true;
            }

            return(win);
        }
Exemple #16
0
 public CBet(IDistributedCache distributedCache)
 {
     betModel           = new BetModel(distributedCache);
     betResultModel     = new BetResultModel(distributedCache);
     gamblerModel       = new GamblerModel(distributedCache);
     rouletteModel      = new RouletteModel(distributedCache);
     gamblingModel      = new GamblingModel(distributedCache);
     betValidation      = new BetValidation(distributedCache);
     gamblingValidation = new GamblingValidation(distributedCache);
     cGambling          = new CGambling(distributedCache);
 }
        public IActionResult Create(BetModel model)
        {
            if (!ModelState.IsValid)
            {
                return(new JsonResult("Not Ok"));
            }

            //context.BetModels.Add(model);

            return(new JsonResult("Ok"));
        }
Exemple #18
0
 /// <summary>
 /// Create bet for roulette
 /// </summary>
 /// <param name="id">Id of roulette</param>
 /// <param name="UserId">Id of user</param>
 /// <param name="betModel">Bet</param>
 /// <returns>Success or False</returns>
 public async Task <string> BetRouletteModel(Guid id, string userId, BetModel betModel)
 {
     if (await roulleteDAL.BetRouletteModel(id, userId, betModel))
     {
         return("Bet created successfully.");
     }
     else
     {
         return("Bet not created.");
     }
 }
Exemple #19
0
        public IHttpActionResult CreateBet(BetModel bet)
        {
            var mappedBet = BetMapping.Map(bet);

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

            return(Ok(_betService.CreateBet(mappedBet)));
        }
Exemple #20
0
        /// <summary>
        /// 根据模式判断
        /// 判断逻辑,有且只有一个对子,不能有3个的,4 个的,5个的。就是中奖
        /// </summary>
        /// <param name="record"></param>
        /// <returns></returns>
        public bool IsWinByMode(DB_PredictRecord record, BetModel model)
        {
            bool win = false;

            if (OnlyPairModelBet(record.GoodNo))
            {
                win = true;
            }


            return(win);
        }
Exemple #21
0
        public IEnumerable <BetModel> CloseRoulette(ResponseBetModel objBetResponse)
        {
            List <BetModel> lstResponse = new List <BetModel>();

            try
            {
                var command = CrearComando("spCloseRoulette");
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.Parameters.Add("@ROULETTE_ID", SqlDbType.Int).Value       = objBetResponse.iIdRoulette;
                command.Parameters.Add("@WINNING_NUMBER", SqlDbType.Int).Value    = objBetResponse.iWinningNumber;
                command.Parameters.Add("@WINNING_COLOR", SqlDbType.VarChar).Value = objBetResponse.strWinningColor;
                using (var reader = command.ExecuteReader())
                {
                    DataTable dt = new DataTable();
                    dt.Load(reader);
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt.Rows)
                        {
                            BetModel objBet = new BetModel();
                            objBet.iFkClientId = int.Parse(item["FK_CLIENT_ID"].ToString());
                            objBet.lgBetValue  = double.Parse(item["BET_VALUE"].ToString());
                            objBet.strBetColor = item["BET_COLOR"].ToString();
                            objBet.iBetNumber  = int.Parse(item["BET_NUMBER"].ToString());
                            objBet.objResponseBetModel.iWinningNumber  = objBetResponse.iWinningNumber;
                            objBet.objResponseBetModel.strWinningColor = objBetResponse.strWinningColor;
                            lstResponse.Add(objBet);
                        }
                    }
                    else
                    {
                        BetModel objBet = new BetModel();
                        objBet.objResponseBetModel.iWinningNumber  = objBetResponse.iWinningNumber;
                        objBet.objResponseBetModel.strWinningColor = objBetResponse.strWinningColor;
                        objBet.objResponseBetModel.iIdRoulette     = -999;
                        lstResponse.Add(objBet);
                    }
                }

                var Winners = lstResponse.Find(a => a.objResponseBetModel.iIdRoulette == -999);
                if (Winners == null)
                {
                    BetWinners(lstResponse);
                }


                return(lstResponse);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #22
0
        public async Task <MakeBetMessageModel> MakeBet(BetModel model, string token)
        {
            var userId = JwtHelper.ParseToken(token);
            var user   = await this.ConfigureUser(model, userId);

            var roulette = await this.ConfigureRoulette(model, user);

            await this.UpdateUserRoulette(user, roulette);

            return(new MakeBetMessageModel(
                       $"You bet ${model.Money} on {model.Color} {model.Number}. Good luck!"
                       ));
        }
        public async Task <IActionResult> Bet([FromBody] BetModel betModel)
        {
            var steamId = User.GetSteamId();

            var itemsToBet = betModel.Items.Select(item => new AssetAndDescriptionId
            {
                AssetId       = item.AssetId,
                DescriptionId = item.DescriptionId,
            }).ToList();

            _jackpotMatchManager.PlaceBetOnMatch(itemsToBet, betModel.RoundId, steamId);

            return(new OkResult());
        }
Exemple #24
0
 /// <summary>
 /// 生成 中奖结果
 /// </summary>
 /// <param name="model">下注模式</param>
 /// <param name="records">历史开奖记录</param>
 /// <returns></returns>
 public List <DB_PredictRecord> GenerateBetResult(BetModel model, List <DB_PredictRecord> records)
 {
     return(records);
     //return null;
     //foreach (var item in records) {
     //    if (IsWinByMode(item, model))
     //    {
     //        item.Status = "中奖";
     //    }
     //    else
     //    {
     //        item.Status = "未中奖";
     //    }
     //}
     //return records;
 }
Exemple #25
0
        public GenericAnswer OpenBet(RuletteModel dataRulette, BetModel dataBet, GamblerModel dataGambler)
        {
            GenericAnswer response = new GenericAnswer();
            string        colorBet = string.Empty;

            if (dataBet.cashBet > Convert.ToInt32(Enum.Cash.MaxCash))
            {
                response.error = "Supera el monto máximo de apuesta = " + Enum.Cash.MaxCash;

                return(response);
            }

            SqlParameter[] parameters =
            {
                new SqlParameter {
                    Value = dataRulette.idRulette, ParameterName = RuletteMapping.idRulette
                },
                new SqlParameter {
                    Value = dataGambler.idGambler, ParameterName = GamblerMapping.idGambler
                },
                new SqlParameter {
                    Value = dataBet.cashBet, ParameterName = BetMapping.cashBet
                },
                new SqlParameter {
                    Value = dataBet.numberBet, ParameterName = BetMapping.numberBet
                },
                new SqlParameter {
                    Value = dataBet.colorBet, ParameterName = BetMapping.colorBet
                },
            };
            string messageError = string.Empty;

            connectionManager.AcctionRun(updateRulette, ref messageError, parameters);
            if (!string.IsNullOrEmpty(messageError))
            {
                response.error      = messageError;
                response.successful = false;

                return(response);
            }
            response.error      = "Apertura Exitosa";
            response.entity     = dataRulette;
            response.successful = true;

            return(response);
        }
Exemple #26
0
        public string ValidateBetRequest(BetModel betRquest)
        {
            decimal value; string message = string.Empty;
            if (betRquest.BetMoney > 10000 || betRquest.BetMoney < 1)
            {
                message = "Tipo de apuesta inválida. El BetMoney debe estar entre 1 y 10000.";
            }
            if ((betRquest.BetType.ToLower() != "color") && (betRquest.BetType.ToLower() != "number"))
            {
                message = "Tipo de apuesta inválida. El BetType debe ser number o color.";
            }
            else
            {
                if (betRquest.BetType.ToLower() == "color")
                {
                    if (decimal.TryParse(betRquest.BetValue, out value))
                    {
                        message = "Tipo de apuesta inválida. Si el BetType es color el BetValue debe ser negro o rojo.";
                    }
                    else
                    {
                        if (betRquest.BetValue.ToLower() != "negro" && betRquest.BetValue.ToLower() != "rojo")
                        {
                            message = "Tipo de apuesta inválida. Si el BetType es color el BetValue debe ser negro o rojo.";
                        }
                    }
                }
                else
                {
                    if (decimal.TryParse(betRquest.BetValue, out value))
                    {
                        if (value > 36 || value < 0)
                        {
                            message = "Tipo de apuesta inválida. Si el BetType es number el BetValue debe estar en el rango de 0 a 36.";
                        }
                    }
                    else
                    {
                        message = "Tipo de apuesta inválida. Si el BetType es number el BetValue debe estar en el rango de 0 a 36.";
                    }
                }
            }

            return message;
        }
        public BetModel CreateBet(BetModel obBjet)
        {
            BetModel objResponse = new BetModel();

            try
            {
                using (var context = _unitOfWork.Create())
                {
                    objResponse = context.Repositories.BetRepository.CreateBet(obBjet);
                    context.SaveChanges();

                    return(objResponse);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult EditBet(BetModel betModel)
        {
            using (var db = new BettingSystemDbContext())
            {
                var userId = db.Users.Single(u => u.Username == User.Identity.Name).Id;

                var dbBet = db.Bets.First(b => b.UserId == userId && b.GameId == betModel.GameId);
                dbBet.GameId        = betModel.GameId;
                dbBet.UserId        = userId;
                dbBet.CompetitionId = betModel.CompetitionId;
                dbBet.HomeGoals     = betModel.HomeGoals;
                dbBet.AwayGoals     = betModel.AwayGoals;
                dbBet.Date          = DateTime.Now;

                db.SaveChanges();

                return(RedirectToAction("UserBets", "Bet"));
            }
        }
Exemple #29
0
        public async Task BetService_UpdateAsync_WithInvalidModelReturnsErrors()
        {
            var mockUnitOfWork = new Mock <IUnitOfWork>();

            mockUnitOfWork.Setup(m => m.BetRepository.Update(It.IsAny <Bet>()));
            mockUnitOfWork
            .Setup(m => m.LotRepository.GetByIdAsync(It.IsAny <int>()))
            .ReturnsAsync(
                new Lot
            {
                Id   = 1,
                Bets = new List <Bet>()
                {
                    new Bet {
                        Id = 1, Sum = 100
                    }
                },
            });
            var betService = new BetService(mockUnitOfWork.Object, UnitTestHelper.CreateMapperProfile());
            var bet        = new BetModel
            {
                Id      = 1,
                LotId   = 1,
                UserId  = "3",
                BetDate = DateTime.UtcNow.AddDays(4),
                Sum     = 50
            };

            var result = await betService.UpdateAsync(bet);

            Assert.IsTrue(result.Succedeed);
            mockUnitOfWork.Verify(
                m => m.BetRepository.Update(It.Is <Bet>(
                                                b => b.LotId == bet.LotId &&
                                                b.UserId == bet.UserId &&
                                                b.BetDate == bet.BetDate &&
                                                b.Sum == bet.Sum)),
                Times.Once);
            mockUnitOfWork.Verify(
                m => m.SaveAsync(),
                Times.Once);
        }
Exemple #30
0
        public static Bet Map(BetModel bet)
        {
            var config = new DefaultMapConfig();
            var result = config.ConvertUsing((BetModel source) =>
                                             new Bet {
                Coefficient = source.Coefficient,
                BetItemType = source.BetType
            });

            var bet1 = ObjectMapperManager
                       .DefaultInstance
                       .GetMapper <BetModel, Bet>(result)
                       .Map(new BetModel()
            {
                Coefficient = bet.Coefficient,
                BetType     = bet.BetType
            });

            return(bet1);
        }