private void CarregaLista() { List <Produto> listaProdutos = _context.Produto.ToList(); List <Produto> lista = new List <Produto>(); Produto item; int id_estoque = 0; Estoque estoque; Fornecedor fornecedor; foreach (var ls in listaProdutos) { id_estoque = _daoProdutoEstoque.RetornarIdEstoque(ls.Id); estoque = _context.Estoque.Find(id_estoque); fornecedor = _context.Fornecedor.Find(ls.FornecedorId); item = new Produto { Id = ls.Id, Nome = ls.Nome, Descricao = ls.Descricao, PrecoUnitario = ls.PrecoUnitario, Quantidade = estoque.Quantidade, UnidadeMedida = ls.UnidadeMedida, LinkFoto = ls.LinkFoto, Fornecedor = fornecedor }; lista.Add(item); } ViewBag.ListaProdutos = lista; }
public async Task <IActionResult> Create([Bind("Id,Data,Total,VendedorId,ClienteId,ListaProdutos")] Venda venda) { if (ModelState.IsValid) { try { venda.Data = DateTime.Now; var tam = venda.Total.ToString().Count() - 2; var total = venda.Total.ToString().Insert(tam, "."); venda.Total = Convert.ToDouble(total); //inserir na tabela venda _context.Add(venda); await _context.SaveChangesAsync(); //recuperar id da venda var id_venda = _context.Venda.OrderByDescending(o => o.Id).First().Id; //Serializar o JSON da lista de produtos selecionados e gravar na tabela itens_venda List <ItemVenda> lista_produtos = JsonConvert.DeserializeObject <List <ItemVenda> >(venda.ListaProdutos); for (var i = 0; i < lista_produtos.Count; i++) { //inserir na tabela ItensVenda var itemVenda = new ItemVenda() { VendaId = id_venda, ProdutoId = lista_produtos[i].ProdutoId, QuantidadeProduto = lista_produtos[i].QuantidadeProduto, PrecoProduco = lista_produtos[i].PrecoProduco }; _context.ItensVenda.Add(itemVenda); //recuperar id do estoque var id_estoque = _daoProdutoEstoque.RetornarIdEstoque(itemVenda.ProdutoId); //Baixar quantidade do estoque var estoque = _context.Estoque.Find(id_estoque); estoque.Quantidade = estoque.Quantidade - itemVenda.QuantidadeProduto; _context.Estoque.Update(estoque); await _context.SaveChangesAsync(); } TempData["MSG_S"] = Mensagem.MSG_S001; } catch (Exception e) { return(RedirectToAction(nameof(Error), new { message = "Erro ao registar venda. Tente novamente mais tarde. \n\n" + e.Message })); } } else if (venda.ListaProdutos == null) { TempData["MSG"] = "Lista de produtos vazia. Adicione algum item para registrar a venda."; ViewData["ClienteId"] = new SelectList(_context.Cliente, "Id", "Nome", venda.ClienteId); ViewData["VendedorId"] = new SelectList(_context.Vendedor, "Id", "Email", venda.VendedorId); CarregarDados(); return(View()); } ViewData["ClienteId"] = new SelectList(_context.Cliente, "Id", "Nome", venda.ClienteId); ViewData["VendedorId"] = new SelectList(_context.Vendedor, "Id", "Email", venda.VendedorId); CarregarDados(); return(RedirectToAction(nameof(Index))); }