Exemple #1
0
 public void RecebeLance(Cliente cliente, double valor)
 {
     if (Estado.Equals(EstadoLeilao.LeilaoEmAndamento))
     {
         Lances.Add(new Lance(cliente, valor));
     }
 }
Exemple #2
0
 public void TerminarPregao()
 {
     Ganhador = Lances
                .DefaultIfEmpty(new Lance(null, 0))
                .OrderBy(l => l.Valor)
                .LastOrDefault();
 }
Exemple #3
0
 public void TerminaPregao()
 {
     Ganhador = Lances
                .OrderBy(maiorValor => maiorValor.Valor)
                .Last();
     //Ganhador = Lances.Last();
 }
 public void TerminaPregao()
 {
     Ganhador = Lances
                .DefaultIfEmpty(new Lance(null, 0))
                .OrderBy(l => l.Valor).LastOrDefault();
     Estado = EstadoLeilao.LeilaoFinalizado;
 }
Exemple #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            Lances lances = db.Lances.Find(id);

            db.Lances.Remove(lances);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public void RecebeLance(Interessada cliente, double valor)
 {
     if (NovoLanceEhAceito(cliente, valor))
     {
         Lances.Add(new Lance(cliente, valor));
         _ultimoCliente = cliente;
     }
 }
        public async Task <IActionResult> Edit(int id, [Bind("LancesID,PessoasID,ProdutosID,Valor")] Lances lances)
        {
            if (id != lances.LancesID)
            {
                return(NotFound());
            }

            decimal?valorMax = db.Lances.Where(x => x.ProdutosID == lances.ProdutosID && x.Valor >= lances.Valor).Select(x => x.Valor).FirstOrDefault();


            //Caso exista um lance maior que essa tentativa ou o valor for abaixo do valor de lance inicial retornar um erro.
            if (valorMax != null)
            {
                ModelState.AddModelError("Valor", $"O valor precisa ser maior ao último lance já feito [{string.Format("{0:C}", valorMax)}].");
            }
            else
            {
                //Procuro o valor inicial do produto (quando não houver lance anterior).
                decimal?valorInicial = db.Produtos.FindAsync(lances.ProdutosID).Result.Valor;
                if (lances.Valor < valorInicial)
                {
                    ModelState.AddModelError("Valor", $"O valor precisa ser igual ou maior que o valor inicial [{string.Format("{0:C}", valorInicial)}].");
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    db.Update(lances);
                    await db.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!LancesExists(lances.LancesID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            ViewBag.Pessoas = await db.Pessoas.Select(p => new SelectListItem()
            {
                Text = p.Nome, Value = p.PessoasID.ToString()
            }).ToListAsync();

            ViewBag.Produtos = await db.Produtos.Select(p => new SelectListItem()
            {
                Text = p.Nome, Value = p.ProdutosID.ToString()
            }).ToListAsync();

            return(View(lances));
        }
Exemple #8
0
 /// <summary>
 /// Quando ocorre uma oferta de <see cref="Lance"/>.
 /// </summary>
 /// <param name="lance"> Lance sendo dado.</param>
 public void RecebeOferta(Lance lance)
 {
     if (Status == StatusLeilao.LeilaoEmAndamento)
     {
         if (OfertaFoiAceita(lance))
         {
             Lances.Add(lance);
         }
     }
 }
Exemple #9
0
 public ActionResult Edit([Bind(Include = "Id")] Lances lances)
 {
     if (ModelState.IsValid)
     {
         db.Entry(lances).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(lances));
 }
Exemple #10
0
        public ActionResult Create([Bind(Include = "Id")] Lances lances)
        {
            if (ModelState.IsValid)
            {
                db.Lances.Add(lances);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(lances));
        }
Exemple #11
0
        public void TerminaPregao()
        {
            if (Estado != EstadoLeilao.LeilaoEmAndamento)
            {
                throw new InvalidOperationException("Não é possível terminar o pregão sem que tenha começado. Para isso utilize o método inicia pregão.");
            }

            Ganhador = Lances
                       .DefaultIfEmpty(new Lance(null, 0))
                       .OrderBy(l => l.Valor).LastOrDefault();
            Estado = EstadoLeilao.LeilaoFinalizado;
        }
Exemple #12
0
 public void TerminaPregao()
 {
     if (Estado != EstadoLeilao.LeilaoEmAndamento)
     {
         throw new InvalidOperationException();
     }
     if (Lances.Any())
     {
         Ganhador = Lances.OrderBy(x => x.Valor).Last();
     }
     Estado = EstadoLeilao.LeilaoFechado;
 }
        public void TerminaPregao()
        {
            if (Estado != EstadoLeilao.LeilaoEmAndamento)
            {
                throw new InvalidOperationException("Não é possível terminar sem que ele tenha começado.");
            }

            Ganhador = Lances
                       .DefaultIfEmpty(new Lance(null, 0))
                       .OrderBy(x => x.Valor)
                       .LastOrDefault();

            Estado = EstadoLeilao.LeilaoFinalizado;
        }
Exemple #14
0
        // GET: Lances/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Lances lances = db.Lances.Find(id);

            if (lances == null)
            {
                return(HttpNotFound());
            }
            return(View(lances));
        }
        public async Task <IActionResult> Create(Lances lances)
        {
            //Procuro algum lance pertencente a esse produto que seja maior ao valor informado.
            decimal?valorMax = db.Lances.Where(x => x.ProdutosID == lances.ProdutosID && x.Valor >= lances.Valor).Select(x => x.Valor).FirstOrDefault();


            //Caso exista um lance maior que essa tentativa ou o valor for abaixo do valor de lance inicial retornar um erro.
            if (valorMax != null)
            {
                ModelState.AddModelError("Valor", $"O valor precisa ser maior ao último lance já feito [{string.Format("{0:C}", valorMax)}].");
            }
            else
            {
                //Procuro o valor inicial do produto (quando não houver lance anterior).
                var produto = await db.Produtos.FindAsync(lances.ProdutosID);

                decimal?valorInicial = (produto != null) ? produto.Valor : null;
                if (lances.Valor < valorInicial)
                {
                    ModelState.AddModelError("Valor", $"O valor precisa ser igual ou maior que o valor inicial [{string.Format("{0:C}", valorInicial)}].");
                }
            }

            if (ModelState.IsValid)
            {
                db.Add(lances);
                await db.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            ViewBag.Pessoas = await db.Pessoas.Select(p => new SelectListItem()
            {
                Text = p.Nome, Value = p.PessoasID.ToString()
            }).ToListAsync();

            ViewBag.Produtos = await db.Produtos.Select(p => new SelectListItem()
            {
                Text = p.Nome, Value = p.ProdutosID.ToString()
            }).ToListAsync();

            return(View(lances));
        }
Exemple #16
0
 public void TerminaPregao()
 {
     if (Estado != EstadoLeilao.LeilaoEmAndamento)
     {
         throw new System.InvalidOperationException();
     }
     if (ValorDestino > 0)
     {
         //modelidade oferta superior mais proxima
     }
     else
     {
         Ganhador = Lances
                    .DefaultIfEmpty(new Lance(null, 0))
                    .OrderBy(l => l.Valor)
                    .LastOrDefault();
     }
     Estado = EstadoLeilao.LeilaoFinalizado;
 }
Exemple #17
0
        public void ChecarSeLancePodeSerAdicionado(Lance lance)
        {
            bool leilaoNaoPermiteAceitarLances = EstadoLeilao != EstadoLeilao.EmAndamento;

            bool eOClienteDoUltimoLance = Lances
                                          .DefaultIfEmpty(new Lance(null, 0))
                                          .LastOrDefault()
                                          .Cliente == lance.Cliente;

            if (leilaoNaoPermiteAceitarLances)
            {
                throw GetLeilaoExceptionFactory().CriarLeilaoExceptionParaRecebeLance(EstadoLeilao);
            }

            if (eOClienteDoUltimoLance)
            {
                throw GetLeilaoExceptionFactory().CriarLeilaoException("Cliente deu o último lance! Ação negada!");
            }
        }
Exemple #18
0
        public void TerminarPregao()
        {
            if (this.Estado != EstadoLeilao.LeilaoEmAndamento)
            {
                throw new InvalidOperationException();
            }

            if (ValorBase > 0)
            {
                Vencedor = Lances.DefaultIfEmpty(new Lance(new Cliente("", new Leilao("", 0, new Bem("", ""))), 0))
                           .Where(x => x.Valor >= ValorBase)
                           .OrderBy(x => x.Valor).FirstOrDefault();
            }
            else
            {
                Vencedor = Lances.DefaultIfEmpty(new Lance(new Cliente("", new Leilao("", 0, new Bem("", ""))), 0))
                           .OrderBy(x => x.Valor).LastOrDefault();
            }

            this.Estado = EstadoLeilao.LeilaoFinalizado;
        }
Exemple #19
0
        public async Task OnGetAsync(long?id)
        {
            ProdutoId = id;

            var lances = await _context.Lances.Where(l => l.ProdutoId == id)
                         .OrderByDescending(l => l.Valor)
                         .ThenByDescending(l => l.Id)
                         .ToListAsync();

            foreach (var item in lances)
            {
                var usuario = await _context.Usuarios.FirstOrDefaultAsync(u => u.UserName == item.Usuario);

                Lances.Add(new LanceView()
                {
                    Cpf      = item.Usuario,
                    Nome     = usuario.Nome,
                    Valor    = item.Valor,
                    DataHora = item.DataHora
                });
            }
        }
Exemple #20
0
        public bool FazerLAnce(int user, ProdutosViewModel produtosViewModel)
        {
            var produto           = produtosViewModel.Id;
            var valor             = Convert.ToDecimal(produtosViewModel.ValorInicial);
            var ultimoLance       = new ProdutoDAO();
            var buscaDadosUser    = new UsuarioDAO();
            var usuario           = buscaDadosUser.BuscaUsuarioPorId(user);
            var ultimoLanceResult = ultimoLance.BuscaLances(produto).Where(x => x.IdProduto == produto).OrderByDescending(x => x.Id).FirstOrDefault();

            if (ultimoLanceResult.Valor >= valor || usuario.Idade < 18)
            {
                return(false);
            }
            var lance = new Lances()
            {
                IdProduto = produto,
                IdUsuario = user,
                Valor     = valor
            };
            var novoLanceProduto = new ProdutoDAO();

            novoLanceProduto.NovoLanceProduto(lance);
            return(true);
        }
 public void TerminaPregao()
 {
     Ganhador = Lances
                .OrderBy(l => l.Valor)
                .Last();
 }
Exemple #22
0
 private bool OfertaFoiAceita(Lance lance)
 {
     return
         ((Lances.UltimoLanceNaoEhDoCliente(lance)) &&
          (Lances.ClienteNuncaDeuLanceMaior(lance)));
 }
Exemple #23
0
 public void TerminaPregao()
 {
     Ganhador = Lances.Last();
 }