public void RecebeLance(Cliente cliente, double valor) { if (Estado.Equals(EstadoLeilao.LeilaoEmAndamento)) { Lances.Add(new Lance(cliente, valor)); } }
public void TerminarPregao() { Ganhador = Lances .DefaultIfEmpty(new Lance(null, 0)) .OrderBy(l => l.Valor) .LastOrDefault(); }
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; }
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)); }
/// <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); } } }
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)); }
public ActionResult Create([Bind(Include = "Id")] Lances lances) { if (ModelState.IsValid) { db.Lances.Add(lances); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(lances)); }
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; }
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; }
// 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)); }
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; }
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!"); } }
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; }
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 }); } }
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(); }
private bool OfertaFoiAceita(Lance lance) { return ((Lances.UltimoLanceNaoEhDoCliente(lance)) && (Lances.ClienteNuncaDeuLanceMaior(lance))); }
public void TerminaPregao() { Ganhador = Lances.Last(); }