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); } }
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); } }