public ActionResult GravarProduto(Produto produto, Guid IdCategoria) { ViewBag.IdCategoria = new SelectList( DbFactory.Instance.CategoriaRepository.FindAll(), "Id", "Nome", IdCategoria ); if (produto.Id.ToString() == "00000000-0000-0000-0000-000000000000") { var categoria = DbFactory.Instance.CategoriaRepository.FindById(IdCategoria); produto.Categoria = categoria; DbFactory.Instance.ProdutoRepository.SaveOrUpdate(produto); Estoque estoque = new Estoque() { Produto = produto, PrecoAtual = produto.Preco, Quantidade = produto.Estoque.Quantidade }; DbFactory.Instance.EstoqueRepository.SaveOrUpdate(estoque); } else { var categoria = DbFactory.Instance.CategoriaRepository.FindById(IdCategoria); produto.Categoria = categoria; Estoque estoque = new Estoque() { Produto = produto, PrecoAtual = produto.Preco, Quantidade = produto.Estoque.Quantidade }; var e = DbFactory.Instance.EstoqueRepository.buscarporIdProduto(produto.Id); var p = DbFactory.Instance.ProdutoRepository.FindById(produto.Id); var precoAtual = p.Preco; var PrecoEstoqueNovo = produto.Preco; var estoqueAtual = e.Quantidade; var estoqueNovo = produto.Estoque.Quantidade; var PrecoMinimo = calc.CalcPrecoMinimo(precoAtual, PrecoEstoqueNovo, estoqueAtual, estoqueNovo); estoque = e; estoque.Quantidade += produto.Estoque.Quantidade; estoque.PrecoAtual = Math.Round(produto.Preco, 2); produto.Estoque = estoque; produto.Preco = calc.CalcPrecoImpostos(PrecoMinimo); DbFactory.Instance.ProdutoRepository.SaveOrUpdate(produto); DbFactory.Instance.EstoqueRepository.SaveOrUpdate(produto.Estoque); } return(RedirectToAction("Index", "Home")); }