Example #1
0
        public List <int> surpresinha(int id_Produto)
        {
            try
            {
                List <int> retorno = null;

                Produto produto = new ProdutosController().getProduto(id_Produto);

                if (produto != null)
                {
                    retorno = new List <int>();
                    //TODO: se der tempo, aplicar HashSet
                    Random rnd = new Random();
                    //Foi convencionado que a primeira Regra associada ao Produto é sempre referente ao maior prêmio, ou seja, a principal.
                    //(ex. Sena - 6 números, da mega-sena)
                    //Além disso, que a SURPRESINHA contém a quantidade exata do maior prêmio.
                    for (int i = 0; i < (produto.lista_regras[0].qtd_vencer); i++)
                    {
                        //Retorna um número "aleatório" num intervalo de valores mínimo e máximo
                        int novo = rnd.Next(1, produto.qtd_max);

                        //Garantindo que não haja repetição entre os números de um mesmo jogo
                        while (retorno.Exists(x => x.Equals(novo)))
                        {
                            novo = rnd.Next(1, produto.qtd_max);
                        }

                        retorno.Add(novo);
                    }
                }

                return(retorno);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Example #2
0
        public List <Jogo> getResultado(int id)
        {
            try
            {
                List <Jogo> retorno = new List <Jogo>();

                Produto produto = new ProdutosController().getProduto(id);

                //O produto existe?
                if (produto != null && produto.id > 0)
                {
                    //Existem Regras associadas? (pelo menos uma)
                    if (produto.lista_regras != null && produto.lista_regras.Count > 0)
                    {
                        //Existe algum Jogo deste Produto?
                        List <Jogo> jogosDoProduto = getJogos().FindAll(x => x.produto.id.Equals(id));

                        if (jogosDoProduto != null && jogosDoProduto.Count > 0)
                        {
                            //Realiza o SORTEIO
                            List <int> sorteio = surpresinha(id);
                            //Foi convencionado que a primeira Regra associada ao Produto é sempre referente ao maior prêmio, ou seja, a principal.
                            //(ex. Sena - 6 números, da mega-sena)
                            //Além disso, que a SURPRESINHA contém a quantidade exata do maior prêmio.
                            if (sorteio != null && sorteio.Count == produto.lista_regras[0].qtd_vencer)
                            {
                                Jogo sena = new Jogo();
                                sena.id             = 0;
                                sena.produto        = new Produto();
                                sena.produto        = produto;
                                sena.apostador      = new Apostador();
                                sena.apostador.name = "SORTEIO";
                                sena.lista_numeros  = sorteio;
                                sena.dthr           = DateTime.Now.ToString("dd/MM/yyyy HH:mm");

                                //Adiciona no retorno
                                retorno.Add(sena);

                                //Faz a contagem de acertos de cada Jogo do Produto
                                foreach (var jogo in jogosDoProduto)
                                {
                                    int acertos = 0;
                                    foreach (var numero in sorteio)
                                    {
                                        if (jogo.lista_numeros.Exists(x => x.Equals(numero)))
                                        {
                                            acertos++;
                                        }
                                    }

                                    //Os VENCEDORES serão definidos a partir das Regras associadas ao Produto
                                    if (acertos > 0 && produto.lista_regras.Exists(x => x.qtd_vencer == acertos))
                                    {
                                        retorno.Add(jogo);
                                    }
                                }
                            }
                        }
                    }
                }

                if (retorno.Count == 1)
                {
                    retorno[0].name = "Não houve vencedores";
                }

                return(retorno);
            }
            catch (Exception)
            {
                return(null);
            }
        }