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); }
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)); }
public ActionResult DeleteConfirmed(int id) { Apostas apostas = db.Apostas.Find(id); db.Apostas.Remove(apostas); db.SaveChanges(); return(RedirectToAction("Index")); }
/// <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); }
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)); }
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); }
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); }
// 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)); }
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); }
// 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)); }
/// <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); }
/// <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); }
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)); }
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"); } }
private bool PossuiQuantidadeNumeros(Apostas aposta, int qtdNumeros) { var numeros = aposta.NumeroApostaExibicao?.Split('-'); return(numeros.Length == qtdNumeros); }
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; } }