public async Task <ActionResult> Venda(VendaViewModel viewModel) { var keys = ModelState.Keys.Where(a => a.Contains("Acao.") || a.Contains("UsuarioAcao.")).ToList(); foreach (var key in keys) { ModelState.Remove(key); } if (ModelState.IsValid) { var rd = new Random((int)DateTime.Now.Ticks); var usuarioAcao = await db.UsuariosAcoes.Include(a => a.OrdensUsuariosAcoes) .Include(a => a.UsuariosAcoesHistoricos) .FirstOrDefaultAsync(a => a.UsuarioAcaoId == viewModel.UsuarioAcao.UsuarioAcaoId); var ordemUsuarioAcao = new OrdemUsuarioAcao { OrdemUsuarioAcaoId = Guid.NewGuid(), Ordem = new Ordem { OrdemId = Guid.NewGuid(), AcaoId = viewModel.Acao.AcaoId, Chance = Infraestrura.OrdensChances.Venda(viewModel.Acao.Preco, viewModel.Preco), DataHora = DateTime.Now, Preco = viewModel.Preco, Quantidade = viewModel.Quantidade, Tipo = OrdemTipo.Venda, UsuarioId = Guid.Parse(User.Identity.GetUserId()), } }; var percentual = (decimal)rd.NextDouble() * 100; if (ordemUsuarioAcao.Ordem.Chance >= percentual) { var historico = new UsuarioAcaoHistorico() { UsuarioAcaoHistoricoId = Guid.NewGuid(), Preco = viewModel.Preco, PercentualVariacao = viewModel.Preco * 100 / viewModel.Acao.Preco - 100, ValorVariacao = viewModel.Preco - viewModel.Acao.Preco, Rentabilidade = (viewModel.Preco - viewModel.Acao.Preco) * viewModel.Quantidade }; usuarioAcao.Quantidade -= viewModel.Quantidade; usuarioAcao.Ativo = usuarioAcao.Quantidade > 0; usuarioAcao.UsuariosAcoesHistoricos.Add(historico); ordemUsuarioAcao.Ordem.Rentabilidade = historico.Rentabilidade; usuarioAcao.OrdensUsuariosAcoes.Add(ordemUsuarioAcao); await db.SaveChangesAsync(); } return(RedirectToAction("Index")); } return(View(viewModel)); }
public async Task <ActionResult> DeleteConfirmed(Guid id) { UsuarioAcaoHistorico usuarioAcaoHistorico = await db.UsuariosAcoesHistoricos.FindAsync(id); db.UsuariosAcoesHistoricos.Remove(usuarioAcaoHistorico); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit([Bind(Include = "UsuarioAcaoHistoricoId,UsuarioAcaoId")] UsuarioAcaoHistorico usuarioAcaoHistorico) { if (ModelState.IsValid) { db.Entry(usuarioAcaoHistorico).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.UsuarioAcaoId = new SelectList(db.UsuariosAcoes, "UsuarioAcaoId", "UsuarioAcaoId", usuarioAcaoHistorico.UsuarioAcaoId); return(View(usuarioAcaoHistorico)); }
public async Task <ActionResult> Create([Bind(Include = "UsuarioAcaoHistoricoId,UsuarioAcaoId")] UsuarioAcaoHistorico usuarioAcaoHistorico) { if (ModelState.IsValid) { usuarioAcaoHistorico.UsuarioAcaoHistoricoId = Guid.NewGuid(); db.UsuariosAcoesHistoricos.Add(usuarioAcaoHistorico); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.UsuarioAcaoId = new SelectList(db.UsuariosAcoes, "UsuarioAcaoId", "UsuarioAcaoId", usuarioAcaoHistorico.UsuarioAcaoId); return(View(usuarioAcaoHistorico)); }
// GET: UsuariosAcoesHistoricos/Details/5 public async Task <ActionResult> Details(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UsuarioAcaoHistorico usuarioAcaoHistorico = await db.UsuariosAcoesHistoricos.FindAsync(id); if (usuarioAcaoHistorico == null) { return(HttpNotFound()); } return(View(usuarioAcaoHistorico)); }
// GET: UsuariosAcoesHistoricos/Edit/5 public async Task <ActionResult> Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UsuarioAcaoHistorico usuarioAcaoHistorico = await db.UsuariosAcoesHistoricos.FindAsync(id); if (usuarioAcaoHistorico == null) { return(HttpNotFound()); } ViewBag.UsuarioAcaoId = new SelectList(db.UsuariosAcoes, "UsuarioAcaoId", "UsuarioAcaoId", usuarioAcaoHistorico.UsuarioAcaoId); return(View(usuarioAcaoHistorico)); }