Exemplo n.º 1
0
        private Apostas AvaliarAcertos(Apostas aposta)
        {
            string[] numerosSorteio = aposta.Sorteios?.NumeroSorteioExibicao.Split('-');
            if (numerosSorteio == null)
            {
                return(aposta);
            }

            aposta.ApostaResultados = new ApostaResultados();

            string[] numerosAposta = aposta.NumeroApostaExibicao.Split('-');

            LinkedList <int> numerosAcertos = new LinkedList <int>();

            for (int i = 0; i < numerosSorteio.Length; i++)
            {
                if (numerosSorteio[i] == numerosAposta[i])
                {
                    aposta.ApostaResultados.Acertos++;
                    numerosAcertos.AddLast(Convert.ToInt32(numerosAposta[i]));
                }
            }

            aposta.ApostaResultados.NumerosAcertados = string.Join("-", numerosAcertos.ToArray());
            return(aposta);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,Quantia,Data,Estado,Descricao,Multiplicador,UserFK,JogoFK")] Apostas apostas)
        {
            if (id != apostas.ID)
            {
                //caso o id seja diferente do id da Aposta retorna-se à página Index das Apostas
                return(RedirectToAction("Index", "Apostas"));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(apostas);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ApostasExists(apostas.ID))
                    {
                        //caso a aposta não "exista" retorna-se à página Index das Apostas
                        return(RedirectToAction("Index", "Apostas"));
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            ViewData["JogoFK"] = new SelectList(_context.Set <Jogos>(), "Njogo", "Njogo", apostas.JogoFK);
            ViewData["UserFK"] = new SelectList(_context.Set <Utilizadores>(), "UserId", "Email", apostas.UserFK);
            return(View(apostas));
        }
Exemplo n.º 3
0
        public ActionResult DeleteConfirmed(int id)
        {
            Apostas apostas = db.Apostas.Find(id);

            db.Apostas.Remove(apostas);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Insere uma nova aposta aleatória para o usuario
        /// </summary>
        /// <param name="aposta">Modelo preenchido</param>
        /// <returns><see cref="Apostas"/></returns>
        public Apostas InserirAposta(Apostas aposta)
        {
            ValidarRegraNegocio(aposta);

            using (TransactionScope scope = new TransactionScope())
            {
                Repository.Inserir(aposta);
                scope.Complete();
            }
            return(aposta);
        }
Exemplo n.º 5
0
 public ActionResult Edit([Bind(Include = "ID,DataRegisto,ValorAposta,ValorPremio,ConcursoFK,SociedadeFK")] Apostas apostas)
 {
     if (ModelState.IsValid)
     {
         db.Entry(apostas).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ConcursoFK  = new SelectList(db.Concursos, "ID", "ID", apostas.ConcursoFK);
     ViewBag.SociedadeFK = new SelectList(db.Sociedades, "ID", "Nome", apostas.SociedadeFK);
     return(View(apostas));
 }
Exemplo n.º 6
0
        private bool PossuiNumerosForaIntervalo(Apostas aposta, int min, int max)
        {
            var numeros = aposta.NumeroApostaExibicao?.Split('-');

            foreach (var item in numeros)
            {
                if (Convert.ToInt32(item) > max || min > Convert.ToInt32(item))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 7
0
        private bool PossuiNumerosRepetidos(Apostas aposta)
        {
            var numeros = aposta.NumeroApostaExibicao?.Split('-');

            foreach (var item in numeros)
            {
                if (numeros.Count(x => x == item) > 1)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 8
0
        // GET: Apostas/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Apostas apostas = db.Apostas.Find(id);

            if (apostas == null)
            {
                return(HttpNotFound());
            }
            return(View(apostas));
        }
Exemplo n.º 9
0
        public Aposta GerarJogo(Aposta jogo)
        {
            if (!ValidarAposta(jogo))
            {
                throw new Exception("Jogo inválido.");
            }

            if (jogo.NumerosJogados.Count == 0)
            {
                GerarSurpresinha(jogo);
            }

            Apostas.Add(jogo);
            return(jogo);
        }
Exemplo n.º 10
0
        // GET: Apostas/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Apostas apostas = db.Apostas.Find(id);

            if (apostas == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ConcursoFK  = new SelectList(db.Concursos, "ID", "ID", apostas.ConcursoFK);
            ViewBag.SociedadeFK = new SelectList(db.Sociedades, "ID", "Nome", apostas.SociedadeFK);
            return(View(apostas));
        }
Exemplo n.º 11
0
        /// <summary>
        /// Insere uma nova aposta aleatória para o usuario
        /// </summary>
        /// <param name="usuario">Usario que irá fazer a aposta</param>
        /// <param name="numeros">Numeros sortiados ou escolidos pelo usuario.</param>
        /// <returns><see cref="Apostas"/></returns>
        public Apostas InserirAposta(Usuarios usuario, int[] numeros)
        {
            Apostas aposta = new Apostas
            {
                DataAposta           = DateTime.Now,
                NumeroAposta         = Convert.ToInt32(string.Join("", numeros)),
                NumeroApostaExibicao = string.Join("-", numeros),
                IdUsuario            = usuario.Id
            };

            ValidarRegraNegocio(aposta);
            using (TransactionScope scope = new TransactionScope())
            {
                Repository.Inserir(aposta);
                scope.Complete();
            }

            return(aposta);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Insere uma nova aposta aleatória para o usuario
        /// </summary>
        /// <param name="usuario">Usario que irá fazer a aposta</param>
        /// <returns><see cref="Apostas"/></returns>
        public Apostas InserirApostaAleatorio(Usuarios usuario)
        {
            int[] numeros = Helper.Helper.SortearValores(NumerosQuantidade, NumeroMinimo, NumeroMaximo);

            Apostas apostas = new Apostas
            {
                DataAposta           = DateTime.Now,
                NumeroAposta         = Convert.ToInt32(string.Join("", numeros)),
                NumeroApostaExibicao = string.Join("-", numeros),
                IdUsuario            = usuario.Id
            };

            using (TransactionScope scope = new TransactionScope())
            {
                Repository.Inserir(apostas);
                scope.Complete();
            }
            return(apostas);
        }
Exemplo n.º 13
0
        public async Task <IActionResult> Create([Bind("ID,Quantia,Estado,Descricao,Multiplicador,UserFK,JogoFK")] Apostas apostas)
        {
            //caso o modelo seja válido e se faça uma aposta, retira-se o valor da aposta ao Saldo do utilizador
            if (ModelState.IsValid)
            {
                apostas.Data = DateTime.Now; // a data das apostas é definida automaticamente
                var user = await _userManager.GetUserAsync(User);

                var util = await _context.Utilizadores.FirstOrDefaultAsync(a => a.UsernameID == user.Id);

                util.Saldo    -= apostas.Quantia; // é retirado o valor da aposta ao saldo do utilizador
                apostas.UserFK = util.UserId;
                _context.Update(util);            // o utilizador é atualizado na base de dados
                _context.Add(apostas);            // é adicionada uma aposta à base de dados
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["JogoFK"] = new SelectList(_context.Set <Jogos>(), "Njogo", "Njogo", apostas.JogoFK);
            ViewData["UserFK"] = new SelectList(_context.Set <Utilizadores>(), "UserId", "Email", apostas.UserFK);
            return(View(apostas));
        }
Exemplo n.º 14
0
        private void ValidarRegraNegocio(Apostas aposta)
        {
            if (aposta.NumeroApostaExibicao == null)
            {
                throw new Exception("É obrigatório preencher o numeros");
            }

            if (PossuiNumerosRepetidos(aposta))
            {
                throw new Exception("Não pode haver numeros repetidos");
            }

            if (PossuiNumerosForaIntervalo(aposta, NumeroMinimo, NumeroMaximo))
            {
                throw new Exception("Os valores deve ser entre 0 e 60");
            }

            if (!PossuiQuantidadeNumeros(aposta, NumerosQuantidade))
            {
                throw new Exception($"Deve ser preenchido somente {NumerosQuantidade} valores");
            }
        }
Exemplo n.º 15
0
        private bool PossuiQuantidadeNumeros(Apostas aposta, int qtdNumeros)
        {
            var numeros = aposta.NumeroApostaExibicao?.Split('-');

            return(numeros.Length == qtdNumeros);
        }
Exemplo n.º 16
0
        protected void grdApostas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            // limpa o label de mensagem
            lblMsgErro.Visible = false;

            // obtém o código da rodada a que se refere o jogo selecionado
            Int32 iRodada = Int32.Parse(cbRodada.SelectedValue);

            // obtém o código do apostador diretamente das variáveis de sessão
            Int32 iApostador = Int32.Parse(Session["codApostador"].ToString());

            try
            {
                // obtém o vetor de parâmetros da partida
                string[] parametros = ((string)e.CommandArgument).Split('|');

                // obtém o código da partida no banco
                int iJogo = Convert.ToInt32(parametros[0]);

                // obtém a linha do gridview
                GridViewRow row = grdApostas.Rows[Convert.ToInt32(parametros[1]) - 1];

                // o resultado das duas partidas foi informado com sucesso. Proceder com a gravação das informações
                if (((TextBox)row.Cells[2].FindControl("txtPlacar1")).Text != "" && ((TextBox)row.Cells[2].FindControl("txtPlacar2")).Text != "")
                {
                    // obtém a quantidade de gols das duas equipes
                    Int32 golsA = Int32.Parse(((TextBox)row.Cells[2].FindControl("txtPlacar1")).Text);
                    Int32 golsB = Int32.Parse(((TextBox)row.Cells[4].FindControl("txtPlacar2")).Text);

                    // instancia a classe de aposta para persistência das informações no banco
                    Apostas aposta = new Apostas();

                    // seta os parâmetros necessários da classe
                    aposta.setApostador(iApostador);
                    aposta.setGols_A(golsA);
                    aposta.setGols_B(golsB);
                    aposta.setJogo(iJogo);

                    // persiste as informações no banco
                    if (aposta.Salvar() == 0)
                    {
                        lblMsgErro.Text = "Erro ao salvar as informações :  " + aposta.getErro();
                    }
                    else
                    {
                        lblMsgErro.Text = "Aposta cadastrada com sucesso !!!";
                    }

                    // exibe a mensagem selecionada
                    lblMsgErro.Visible = true;
                }

                // algum resultado de equipe não foi informado. O label com a mensagem correta deve ser apresentada ao usuário.
                else
                {
                    lblMsgErro.Text    = "Os dois placares devem ser informados!";
                    lblMsgErro.Visible = true;
                }
            }
            catch (Exception ex)
            {
                // ocorreu algum erro não tratado pela aplicação. Exibir a mensagem da execeção
                lblMsgErro.Text    = "O seguinte erro ocorreu :  " + ex.ToString();
                lblMsgErro.Visible = true;
            }
        }