示例#1
0
        /// <summary>
        /// Realiza o cadastro direto de um produto sem verificar se é um novo produto ou uma alteração de um existente
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public static bool Cadastrar(Produto p)
        {
            ctx.Produtos.Add(p);
            ctx.SaveChanges();

            //Atualizando CapacidadeAtual LocalArmazenamento
            LocalArmazenamentoDao.AtualizarCapacidadeAtual(p.IdLocalArmazenamento, p.QuantEstoque, "Cadastrar");
            return(true);
        }
示例#2
0
        /// <summary>
        /// Realiza a exclusão de um produto pelo id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool ExcluirPeloId(int id)
        {
            int idLocalReservado = 0;
            var ret      = false;
            var existing = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == id);

            if (existing != null)
            {
                ctx.Entry(existing).State = EntityState.Detached;
            }

            try
            {
                existing = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == id);
                if (existing != null)
                {
                    ctx.Entry(existing).State   = EntityState.Detached;
                    existing.LocalArmazenamento = ctx.LocaisArmazenamentos.Find(existing.IdLocalArmazenamento);
                    existing.MarcaProduto       = ctx.MarcasProdutos.Find(existing.IdMarca);
                    existing.Fornecedor         = ctx.Fornecedores.Find(existing.IdFornecedor);
                    existing.GrupoProduto       = ctx.GruposProdutos.Find(existing.IdGrupo);
                    existing.UnidadeMedida      = ctx.UnidadesMedida.Find(existing.IdUnidadeMedida);
                }



                idLocalReservado = existing.IdLocalArmazenamento;
                ctx.Produtos.Attach(existing);
                ctx.Entry(existing).State = EntityState.Deleted;
                ctx.SaveChanges();

                ret = true;
            }
            catch (DbUpdateException)
            {
                ret = false;
            }
            catch (InvalidOperationException)
            {
                ret = false;
            }

            if (ret)
            {
                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalReservado, existing.QuantEstoque, "Remover");
            }

            //Limpando qualquer Exception que tenha ficado gravado no Object do Entity
            //Se não limpar, caso ocorra uma excessão na exclusão, ele sempre vai ficar persistindo
            //o erro, mesmo que o proximo objeto esteja sem nenhum problema.
            ctx.DetachAllEntities();
            return(ret);
        }
示例#3
0
        public static string SalvarPedido(DateTime data, Dictionary <int, int> produtos, string nomeTabela, bool entrada)
        {
            var ret = "";
            int idLocalArmazenamento = 0;

            try
            {
                var numPedido        = "";
                var numPedidoCalculo = 0;
                if (nomeTabela.Equals("entrada_produto"))
                {
                    EntradaProduto resultadoConsulta = null;

                    var quantidadeEntradas = ctx.EntradasProdutos.Count();
                    if (quantidadeEntradas > 0)
                    {
                        resultadoConsulta = ctx.EntradasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }
                else if (nomeTabela.Equals("saida_produto"))
                {
                    SaidaProduto resultadoConsulta = null;

                    var quantidadeSaidas = ctx.SaidasProdutos.Count();
                    if (quantidadeSaidas > 0)
                    {
                        resultadoConsulta = ctx.SaidasProdutos.OrderByDescending(x => x.Id).Take(1).Single();
                        numPedidoCalculo  = (Convert.ToInt32(resultadoConsulta.Numero) + 1);
                        numPedido         = numPedidoCalculo.ToString();
                    }
                    else
                    {
                        numPedido = Convert.ToString(1);
                    }
                }


                using (var transacao = ctx.Database.BeginTransaction())
                {
                    foreach (var produto in produtos)
                    {
                        if (nomeTabela.Equals("entrada_produto"))
                        {
                            EntradaProduto ep = new EntradaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.EntradasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                recuperado.QuantEstoque     = recuperado.QuantEstoque + produto.Value;
                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Cadastrar");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                        else if (nomeTabela.Equals("saida_produto"))
                        {
                            SaidaProduto ep = new SaidaProduto();
                            ep.Numero     = numPedido;
                            ep.Data       = data;
                            ep.IdProduto  = produto.Key;
                            ep.Quantidade = produto.Value;

                            ctx.SaidasProdutos.Add(ep);


                            Produto recuperado = ctx.Produtos.Find(produto.Key);

                            var existingProduto = ctx.Produtos.Include("LocalArmazenamento").FirstOrDefault(x => x.Id == produto.Key);
                            if (existingProduto != null)
                            {
                                ctx.Entry(existingProduto).State = EntityState.Detached;
                            }

                            idLocalArmazenamento = existingProduto.IdLocalArmazenamento;

                            try
                            {
                                ctx.Produtos.Attach(recuperado);
                                if ((recuperado.QuantEstoque - produto.Value) < 0)
                                {
                                    recuperado.QuantEstoque = 0;
                                }
                                else
                                {
                                    recuperado.QuantEstoque = recuperado.QuantEstoque - produto.Value;
                                }

                                ctx.Entry(recuperado).State = EntityState.Modified;
                                ctx.SaveChanges();
                                LocalArmazenamentoDao.AtualizarCapacidadeAtual(idLocalArmazenamento, produto.Value, "Remover");
                            }
                            catch (System.Exception ex)
                            {
                                throw;
                            }
                        }
                    }

                    transacao.Commit();

                    ret = numPedido;
                }
            }
            catch (Exception ex)
            {
            }

            return(ret);
        }