예제 #1
0
        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"));
        }