public Aposta Apostar(Aposta aposta) { if (Sorteio != null) { throw new ArgumentNullException("Nao foi dessa vez. Reinicie o aplicativo para realizar apostas."); } if (aposta == null) { throw new ArgumentNullException(nameof(aposta)); } if (aposta.Numeros.Any(x => x < NumeroMinimo || x > NumeroMaximo)) { throw new ArgumentOutOfRangeException($"Aposta Invalida. Informar somente numeros entre {NumeroMinimo} e {NumeroMaximo}.", nameof(aposta)); } if (aposta.Numeros.Count() < QuantidadeNumerosApostaMinimo || aposta.Numeros.Count() > QuantidadeNumerosApostaMaximo) { throw new ArgumentOutOfRangeException($"Aposta Invalida. A posta deve conter entre {QuantidadeNumerosApostaMinimo} e {QuantidadeNumerosApostaMaximo} numeros.", nameof(aposta)); } if (aposta.Numeros.GroupBy(x => x).Where(y => y.Count() > 1).Any()) { throw new ArgumentNullException("Aposta invalida. A aposta nao deve possuir numeros repetidos.", nameof(aposta)); } aposta.Id = Jogos.Count + 1; aposta.Data = DateTime.Now; Jogos.Add(aposta); return(aposta); }
public Aposta Sortear() { if (Sorteio != null) { throw new ArgumentNullException("Os numeros ja foram sorteados!"); } if (!Jogos.Any()) { throw new ArgumentNullException("Nao existem jogos cadastrados"); } Sorteio = new Aposta { Numeros = Enumerable.Range(NumeroMinimo, NumeroMaximo).OrderBy(x => random.Next()).Take(QuantidadeNumerosApostaMinimo).OrderBy(x => x).ToList() }; return(Sorteio); }
public Aposta ApostarSurpresinha(int qtdeNumeros) { if (Sorteio != null) { throw new ArgumentNullException("Nao foi dessa vez. Reinicie o aplicativo para realizar apostas."); } if (qtdeNumeros < QuantidadeNumerosApostaMinimo || qtdeNumeros > QuantidadeNumerosApostaMaximo) { throw new ArgumentException($"A quantidade de numeros da aposta deve ser entre {QuantidadeNumerosApostaMinimo} e {QuantidadeNumerosApostaMaximo}.", nameof(qtdeNumeros)); } var aposta = new Aposta { Numeros = Enumerable.Range(NumeroMinimo, NumeroMaximo).OrderBy(x => random.Next()).Take(qtdeNumeros).OrderBy(x => x).ToList() }; aposta.Id = Jogos.Count + 1; aposta.Data = DateTime.Now; Jogos.Add(aposta); return(aposta); }