コード例 #1
0
        public bool ChangeStateRoulette(RouletteModel roulette)
        {
            string sql = $"UPDATE ROULETTE SET ISOPEN = '{ roulette.IsOpen }'" +
                         $"WHERE ROULETTEID =  ({ roulette.RouletteId })";
            SqlCommand cmd = new SqlCommand(sql, _db.connection)
            {
                CommandType = CommandType.Text
            };

            _db.connection.Open();
            try
            {
                int rouletteId = cmd.ExecuteNonQuery();
                return(rouletteId != 0);
            }
            catch (Exception ex)
            {
                //todo: implementar logs;
                return(false);
            }
            finally
            {
                _db.connection.Close();
            }
        }
コード例 #2
0
ファイル: ResponseMapper.cs プロジェクト: kevinfcc26/Roulette
 public static CreateRouletteModel Map(RouletteModel roulette)
 {
     return(new CreateRouletteModel()
     {
         id = roulette.id
     });
 }
コード例 #3
0
ファイル: ResponseMapper.cs プロジェクト: kevinfcc26/Roulette
 public static OpenRouletteModel MapOp(RouletteModel roulette)
 {
     return(new OpenRouletteModel()
     {
         status = roulette.open
     });
 }
コード例 #4
0
        /// <summary>
        /// Method to create roulette
        /// </summary>
        /// <returns> Object with the transaction information </returns>
        public TransactionDTO <long> CreateRoulette()
        {
            TransactionDTO <long> transaction = new TransactionDTO <long>();

            transaction.Data = 0;
            try
            {
                RouletteModel rouletteModel = new RouletteModel();
                string        name          = RouletteNameGenerator();
                rouletteModel.Name = name;
                rouletteModel.Code = name;

                long createRouletteId = _rouletteRepository.CreateRoulette(rouletteModel);
                if (createRouletteId < 0)
                {
                    transaction.Status  = Common.Status.Failure;
                    transaction.Message = "No fue posible crear la nueva ruleta de juego.";

                    return(transaction);
                }
                transaction.Data = createRouletteId;
            }
            catch (ArgumentException ex)
            {
                transaction.Status  = Common.Status.Failure;
                transaction.Message = ex.Message;
            }

            return(transaction);
        }
コード例 #5
0
        public IEnumerable <RouletteModel> Get()
        {
            List <RouletteModel> lstRoulette = new List <RouletteModel>();;

            try
            {
                var command = CrearComando("spGetRoulettes");
                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)
                        {
                            RouletteModel objRoulette = SetRoulette(item);
                            lstRoulette.Add(objRoulette);
                        }
                    }

                    return(lstRoulette);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #6
0
        private RouletteModel SetRoulette(DataRow row)
        {
            RouletteModel objResponse = new RouletteModel();

            try
            {
                objResponse.iRouletteId       = Convert.ToInt32(row["ROULETTE_ID"].ToString());
                objResponse.strRouletteCode   = row["ROULETTE_CODE"].ToString();
                objResponse.strRouletteStatus = row["ROULETTE_STATUS"].ToString();
                if (row["OPENING_DATE"].ToString() != string.Empty)
                {
                    objResponse.dttOpeningDate = DateTime.Parse(row["OPENING_DATE"].ToString());
                }
                if (row["CLOSING_DATE"].ToString() != string.Empty)
                {
                    objResponse.dttClosingDate = DateTime.Parse(row["CLOSING_DATE"].ToString());
                }

                return(objResponse);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #7
0
        public RouletteModel GetById(int Id)
        {
            RouletteModel objRoulette = new RouletteModel();;

            try
            {
                var command = CrearComando("spGetRouletteById");
                command.CommandType = System.Data.CommandType.StoredProcedure;
                command.Parameters.Add("@ROULETTE_ID", SqlDbType.Int).Value = Id;
                using (var reader = command.ExecuteReader())
                {
                    DataTable dt = new DataTable();
                    dt.Load(reader);
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt.Rows)
                        {
                            objRoulette = SetRoulette(item);
                        }
                    }

                    return(objRoulette);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #8
0
        public async Task <GeneralResponse> CloseBets(CloseBetsRequest request)
        {
            try
            {
                RouletteModel rouletteModel = await GetRuletteModel();

                if (rouletteModel == null)
                {
                    return(new GeneralResponse(false, Constants.CIERRE_APUESTA_FALLIDA));
                }

                RouletteClosedDTO rouletteClosed = new RouletteClosedDTO();
                rouletteClosed.NumberWinner = new Random().Next(0, 1);
                rouletteClosed.WinnerUsers  = GetWinnerUsers(rouletteClosed.NumberWinner, rouletteModel);
                rouletteModel = ChangeRuletteEnabled(request.RouletteId, false, rouletteModel);
                await cacheService.SetUsingCache("Roulette", rouletteModel);

                GeneralResponse generalResponse = new GeneralResponse(Constants.CERRADO_RULETA_EXITOSA, rouletteClosed.WinnerUsers);

                return(generalResponse);
            }
            catch (Exception)
            {
                return(new GeneralResponse(false, Constants.CIERRE_APUESTA_FALLIDA));
            }
        }
コード例 #9
0
        public long CreateRoulette(RouletteModel roulette)
        {
            long id = 0;

            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                using (SqlCommand sqlCommand = new SqlCommand("develop.CreateRoulette", connection))
                {
                    sqlCommand.CommandType = CommandType.StoredProcedure;
                    sqlCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar, 50));
                    sqlCommand.Parameters["@Name"].Value = roulette.Name;
                    sqlCommand.Parameters.Add(new SqlParameter("@Code", SqlDbType.NVarChar, 10));
                    sqlCommand.Parameters["@Code"].Value = roulette.Code;
                    sqlCommand.Parameters.Add(new SqlParameter("@Id", SqlDbType.BigInt));
                    sqlCommand.Parameters["@Id"].Direction = ParameterDirection.Output;

                    try
                    {
                        connection.Open();
                        sqlCommand.ExecuteNonQuery();
                        id = (long)sqlCommand.Parameters["@Id"].Value;
                    }
                    catch (Exception ex)
                    {
                        throw new ArgumentException("Error 06: Ocurrió un error consultando la base de datos.");
                    }
                    finally
                    {
                        connection.Close();
                    }

                    return(id);
                }
            }
        }
コード例 #10
0
        public List <RouletteModel> GetAllRoulette()
        {
            QueryBuilder         queryBuilder = new QueryBuilder();
            List <RouletteModel> listRoulette = new List <RouletteModel>();
            string queryString = queryBuilder.ConstructorSelectAll(_context);

            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                try
                {
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        RouletteModel roulette = new RouletteModel();
                        roulette.Id           = (long)reader[0];
                        roulette.Name         = reader[1].ToString();
                        roulette.Code         = reader[2].ToString();
                        roulette.AllowBets    = (bool)reader[3];
                        roulette.State        = (bool)reader[4];
                        roulette.CreationDate = (DateTime)reader[5];
                        listRoulette.Add(roulette);
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    throw new ArgumentException("Error 05: Ocurrió un error consultando la base de datos.");
                }

                return(listRoulette);
            }
        }
コード例 #11
0
        public IEnumerable <string> Get(int rouletteId)
        {
            RouletteRepositorySQL rouletteRepository = new RouletteRepositorySQL();
            RouletteModel         roulette           = rouletteRepository.GetRouletteById(rouletteId: rouletteId);

            if (roulette.IsValidToClose())
            {
                roulette.IsOpen = false;
                rouletteRepository.ChangeStateRoulette(roulette: roulette);
            }
            else
            {
                return(new string[] { $"La ruleta {rouletteId} no se puede cerrar." });
            }
            BetRepositorySQL betRepository = new BetRepositorySQL();
            List <BetModel>  bets          = betRepository.GetActiveBets(rouletteId: rouletteId);

            if (!bets.Any())
            {
                return new string[] { $"La ruleta {rouletteId} se cerró, pero no tenia apuestas." }
            }
            ;
            betRepository.CloseBets(rouletteId: rouletteId);

            return(GetBetsResults(bets: bets));
        }
コード例 #12
0
        public RouletteModel GetRouletteById(long rouletteId)
        {
            RouletteModel roulette    = new RouletteModel();
            string        queryString = "SELECT * FROM develop.Roulette WHERE Id = " + rouletteId + " AND State = 1;";

            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                try
                {
                    connection.Open();
                    SqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        roulette.Id           = (long)reader[0];
                        roulette.Name         = reader[1].ToString();
                        roulette.Code         = reader[2].ToString();
                        roulette.AllowBets    = (bool)reader[3];
                        roulette.State        = (bool)reader[4];
                        roulette.CreationDate = (DateTime)reader[5];
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    throw new ArgumentException("Error 06: Ocurrió un error consultando la base de datos.");
                }

                return(roulette);
            }
        }
コード例 #13
0
ファイル: RouletteController.cs プロジェクト: hsbetohs/Casino
        public string Bet([FromBody] RouletteModel roulette)
        {
            roulette.Bet.Bettor = Request.Headers["UserId"];

            return(new RouletteBL(configuration["DBServer"]).Bet(bet: roulette.Bet, maxAmount: Double.Parse(configuration["BetMaxAmount"]),
                                                                 id: roulette.Id, allowedColors: configuration["ColorsForBet"].Split(","), rangeNumbersBet: configuration["RangeNumberForBet"].Split(",")));
        }
コード例 #14
0
        public int AddRoulette(RouletteModel roulette)
        {
            string sql = $"INSERT INTO ROULETTE (ISOPEN)" +
                         $"VALUES ('{ roulette.IsOpen }');" +
                         "SELECT SCOPE_IDENTITY()";
            SqlCommand cmd = new SqlCommand(sql, _db.connection)
            {
                CommandType = CommandType.Text
            };

            _db.connection.Open();
            try
            {
                int rouletteId = Convert.ToInt32(cmd.ExecuteScalar());
                return(rouletteId);
            }
            catch (Exception ex)
            {
                //todo: implementar logs;
                return(0);
            }
            finally
            {
                _db.connection.Close();
            }
        }
コード例 #15
0
        public async Task <GeneralResponse> MakeBet(MakeBetRequest request)
        {
            try
            {
                RouletteModel rouletteModel = await GetRuletteModel();

                if (rouletteModel == null)
                {
                    return(new GeneralResponse(false, Constants.CREACION_APUESTA_FALLIDA));
                }

                var elementIndex = rouletteModel.Roulette.FindIndex(t => t.RouletteId == request.RouletteId && t.Enabled);
                var newItem      = rouletteModel.Roulette[elementIndex];
                newItem.Bets.Add(new BetDTO()
                {
                    UserId    = request.UserId,
                    BetNumber = request.BetNumber,
                    BetCash   = request.BetCash,
                    BetColor  = request.BetColor
                }
                                 );
                rouletteModel.Roulette[elementIndex] = newItem;
                await cacheService.SetUsingCache("Roulette", rouletteModel);

                GeneralResponse generalResponse = new GeneralResponse(Constants.CREACION_APUESTA_EXITOSA);
                return(generalResponse);
            }
            catch (Exception)
            {
                return(new GeneralResponse(false, Constants.CREACION_APUESTA_FALLIDA));
            }
        }
コード例 #16
0
 public BetValidation(IDistributedCache distributedCache)
 {
     betModel           = new BetModel(distributedCache);
     gamblerValidation  = new GamblerValidation(distributedCache);
     rouletteValidation = new RouletteValidation(distributedCache);
     gamblerModel       = new GamblerModel(distributedCache);
     rouletteModel      = new RouletteModel(distributedCache);
 }
コード例 #17
0
ファイル: ResponseMapper.cs プロジェクト: kevinfcc26/Roulette
 public static CloseRouletteModel MapClose(RouletteModel roulette)
 {
     return(new CloseRouletteModel()
     {
         id = roulette.id,
         open = roulette.open
     });
 }
コード例 #18
0
        private RouletteModel ChangeRuletteEnabled(int rouletteId, bool enabled, RouletteModel roulette)
        {
            var elementIndex = roulette.Roulette.FindIndex(t => t.RouletteId == rouletteId);
            var newItem      = roulette.Roulette[elementIndex];

            newItem.Enabled = enabled;
            roulette.Roulette[elementIndex] = newItem;

            return(roulette);
        }
コード例 #19
0
        public int Post()
        {
            RouletteModel roulette = new RouletteModel {
                IsOpen = false
            };
            RouletteRepositorySQL rouletteRepository = new RouletteRepositorySQL();
            int rouletteId = rouletteRepository.AddRoulette(roulette: roulette);

            return(rouletteId);
        }
コード例 #20
0
ファイル: CBet.cs プロジェクト: GARO99/rouletteGambling
 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);
 }
コード例 #21
0
        private IEnumerable <WinnerUserDto> GetWinnerUsers(int numberWinner, RouletteModel roulette)
        {
            var winnerUsers = roulette.Roulette.SelectMany(t => t.Bets)
                              .Where(t => t.BetNumber == numberWinner)
                              .Select(t => new WinnerUserDto()
            {
                UserId = t.UserId,
                Value  = String.IsNullOrEmpty(t.BetColor) ? t.BetCash * 5 : t.BetCash * 1.8
            });

            return(winnerUsers);
        }
コード例 #22
0
        /// <summary>
        /// Create Roulete
        /// </summary>
        /// <returns>Data of roulette created</returns>
        public async Task <RouletteModel> PostRouletteModel()
        {
            RouletteModel rouletteModel = new RouletteModel
            {
                Id           = Guid.NewGuid(),
                RouletteOpen = false,
                Open         = null,
                Close        = null
            };

            _context.Roulettes.Add(rouletteModel);
            await _context.SaveChangesAsync();

            return(rouletteModel);
        }
コード例 #23
0
        public string Put(int rouletteId)
        {
            RouletteRepositorySQL rouletteRepository = new RouletteRepositorySQL();
            RouletteModel         roulette           = rouletteRepository.GetRouletteById(rouletteId: rouletteId);

            if (roulette.IsValidToOpen())
            {
                roulette.IsOpen = true;
                rouletteRepository.ChangeStateRoulette(roulette: roulette);
                return($"La apertura de la ruleta {rouletteId} fue exitosa");
            }
            else
            {
                return($"La ruleta {rouletteId} ya está abierta o no existe");
            }
        }
コード例 #24
0
        public async Task <GeneralResponse> GetRouletteList()
        {
            try
            {
                RouletteModel response = await GetRuletteModel();

                if (response == null)
                {
                    throw new Exception();
                }
                GeneralResponse generalResponse = new GeneralResponse(Constants.LISTAR_RULESTAS_EXITOSO, response);
                return(generalResponse);
            }
            catch (Exception)
            {
                return(new GeneralResponse(false, Constants.LISTAR_RULETAS_FALLIDA));
            }
        }
コード例 #25
0
        public RouletteModel OpenRoulette(int Id)
        {
            RouletteModel objResponse = new RouletteModel();

            try
            {
                using (var context = _unitOfWork.Create())
                {
                    objResponse = context.Repositories.RouletteRepository.OpenRoulette(Id);
                    context.SaveChanges();

                    return(objResponse);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #26
0
        public async Task <GeneralResponse> CreateRoulette()
        {
            try
            {
                RouletteModel rouletteModel = await GetRuletteModel() != null ? await GetRuletteModel() : new RouletteModel();

                RouletteDTO rouletteDto = new RouletteDTO();
                rouletteDto.RouletteId = new Random().Next(0, 999999999);
                rouletteModel.Roulette.Add(rouletteDto);
                await cacheService.SetUsingCache("Roulette", rouletteModel);

                GeneralResponse generalResponse = new GeneralResponse(Constants.CREACION_RULETA_EXITOSA, rouletteDto.RouletteId);

                return(generalResponse);
            }
            catch (Exception)
            {
                return(new GeneralResponse(false, Constants.CREACION_RULETA_FALLIDA));
            }
        }
コード例 #27
0
        public ActionResult <IEnumerable <string> > CreateRoulette()
        {
            try
            {
                RouletteModel objRoulette            = new RouletteModel();
                ResponseAPI <RouletteModel> response = new ResponseAPI <RouletteModel>(Parameters.OK_REQUEST, "Success", _RouletteService.Create(objRoulette));

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

                return(Ok(
                           response
                           ));
            }
        }
コード例 #28
0
        public async Task <RouletteModel> CreateNewRoulette()
        {
            var roulettes = await _redisRepository.Read("Roulettes");

            if (roulettes == null)
            {
                roulettes = emptyRoulettes();
            }
            else
            {
                int           countRoulettes = roulettes.Count() + 1;
                RouletteModel roulette       = new RouletteModel {
                    id   = countRoulettes,
                    open = false
                };
                roulettes.Add(roulette);
            }
            await _redisRepository.Add("Roulettes", roulettes);

            return(roulettes.FirstOrDefault(x => x.id == roulettes.Count()));
        }
コード例 #29
0
        public async Task <RouletteModel> CloseRoulette(int id)
        {
            var roulettes = await _redisRepository.Read("Roulettes");

            RouletteModel roulette = roulettes.FirstOrDefault(x => x.id == id);

            if (roulette == null)
            {
                return(new RouletteModel {
                    id = 0,
                    open = false
                });
            }
            else
            {
                roulette.open = false;
                await _redisRepository.Add("Roulettes", roulettes);

                return(roulettes.Find(x => x.id == id));
            }
        }
コード例 #30
0
        public async Task <GeneralResponse> OpeningRoulette(RouletteOpeningRequest request)
        {
            try
            {
                RouletteModel rouletteModel = await GetRuletteModel();

                if (rouletteModel == null)
                {
                    return(new GeneralResponse(false, Constants.APERTURA_RULETA_FALLIDA));
                }

                rouletteModel = ChangeRuletteEnabled(request.RouletteId, true, rouletteModel);
                await cacheService.SetUsingCache("Roulette", rouletteModel);

                GeneralResponse generalResponse = new GeneralResponse(Constants.APERTURA_RULETA_EXITOSA);

                return(generalResponse);
            }
            catch (Exception)
            {
                return(new GeneralResponse(false, Constants.APERTURA_RULETA_FALLIDA));
            }
        }