Exemple #1
0
        /// <summary>
        /// Exclui fisica/logicamente um produto no Banco de Dados
        /// </summary>
        /// <param name="produto">Obj categoria com Descricao</param>
        /// <returns>verdadeiro em caso de sucesso</returns>
        public bool Excluir(Produto produto)
        {
            _bd = new Persistencia();
            try
            {

                _bd.Cmd.CommandText = @"delete from produtos where id = @id";
                _bd.Cmd.Parameters.AddWithValue("@id", produto.Id);
                _bd.ExecuteNonQuery();// se o produto estiver em uso ela é desativada

            }
            catch (Exception)
            {   //se nao excluir faz exclusao logica
                try
                {
                    _bd.Cmd.Parameters.Clear();
                    _bd.Cmd.CommandText = @"UPDATE produtos SET excluido = @value WHERE id = @id";
                    _bd.Cmd.Parameters.AddWithValue("@value", 1);//1 == excluido
                    _bd.ExecuteNonQuery();
                }
                catch (Exception)
                {
                    return false;
                }
            }
            //se excluiu ou desativou =sucesso
            return true;
        }
        /// <summary>
        /// Exclui um Produto
        /// </summary>
        /// <param name="produto">obj Produto com id valida</param>
        /// <param name="notificacao">notificacoes de erro ou sucesso</param>
        /// <returns>verdadeiro se não houver erros</returns>
        public bool Excluir(Produto produto, out Notificacao notificacao)
        {
            if (produto.Id <= 0)
            {
                notificacao = new Notificacao("Não foi possivel identificar o codigo do Produto a ser excluido", 'e');
                return false;
            }
            if (new ProdutoBD().Excluir(produto))
            {
                notificacao = new Notificacao("Produto excluido com Sucesso", 's');
                return true;
            }

            notificacao = new Notificacao("Não foi possivel excluir o produto informado, tente novamente, se o erro persistir contate o adminsitrador", 'e');
            return false;
        }
Exemple #3
0
 /// <summary>
 /// Atualiza um produto no Banco de Dados
 /// </summary>
 /// <param name="produto">Obj produto com Descricao</param>
 /// <returns>verdadeiro em caso de sucesso</returns>
 public bool Atualizar(Produto produto)
 {
     _bd = new Persistencia();
     try
     {
         _bd.Cmd.CommandText =
             @"UPDATE produtos SET descricao = @descricao, categoria_id = @categoria_id  WHERE id = @id";
         _bd.Cmd.Parameters.AddWithValue("@descricao", produto.Descricao);
         _bd.Cmd.Parameters.AddWithValue("@categoria_id", produto.Categoria.Id);
         _bd.Cmd.Parameters.AddWithValue("@id", produto.Id);
         if (!(_bd.ExecuteNonQuery() > 0))
         {
             return false;
         }
     }
     catch (Exception)
     {
         return false;
     }
     return true;
 }
        /// <summary>
        /// Grava um produto
        /// </summary>
        /// <param name="produto">obj produto com descricao valida</param>
        /// <param name="notificacao">notificacoes de erro ou sucesso</param>
        /// <returns>verdadeiro se não houver erros</returns>
        public bool Gravar(Produto produto, out Notificacao notificacao)
        {
            bool cadastro = produto.Id == 0;
            produto.Descricao = produto.Descricao.ToUpper().Trim();//maiuscula sem espacos padrao!

            if (string.IsNullOrEmpty(produto.Descricao))
            {
                notificacao = new Notificacao("Descrição inválida, informe uma descrição valida para gravar", 'e');
                return false;
            }

            if (produto.Descricao.Length < 3)
            {
                notificacao = new Notificacao("Descrição inválida, a descrição deve conter pelo menos 3 caracteres", 'e');
                return false;
            }

            if (!new CategoriaProdutoCtrl().Recuperar(produto.Categoria, out notificacao))
            {
                notificacao = new Notificacao("Categoria informada é invalida", 'e');
                return false;
            }

            if (!(cadastro ? new ProdutoBD().Inserir(produto) : new ProdutoBD().Atualizar(produto)))
            {
                if (cadastro && produto.Id > 0)
                    notificacao = new Notificacao("Produto já está cadastrado", 'a');
                else
                {
                    notificacao = new Notificacao("Erro de banco de dados, notifique o administrador", 'e');
                }
                return false;
            }

            notificacao = cadastro
                              ? new Notificacao("Produto cadastrado com Sucesso", 's')
                              : new Notificacao("Produto atualizado com Sucesso", 's');
            return true;
        }
        /// <summary>
        /// Recupera um Produto
        /// </summary>
        /// <param name="produto">obj produto com id valida</param>
        /// <param name="notificacao">notificacoes de erro ou sucesso</param>
        /// <returns>verdadeiro se não houver erros</returns>
        public bool Recuperar(Produto produto, out Notificacao notificacao)
        {
            if (produto.Id <= 0)
            {
                notificacao = new Notificacao("Não foi possivel identificar o codigo do produto a ser recuperado", 'e');
                return false;
            }

            if (!new ProdutoBD().Recuperar(produto))
            {
                notificacao = new Notificacao("Não foi possivel recuperar o Produto - Erro no Banco de Dados", 'e');
                return false;
            }

            notificacao = new Notificacao("Categoria recuperada com sucesso", 's');
            return true;
        }
Exemple #6
0
        /// <summary>
        /// Recupera um produto no Banco de Dados
        /// </summary>
        /// <param name="produto">Obj produto com Descricao</param>
        /// <returns>verdadeiro em caso de sucesso</returns>
        public bool Recuperar(Produto produto)
        {
            _bd = new Persistencia();

            try
            {
                _bd.Cmd.CommandText = @"select p.descricao, c.id as c_id, c.descricao as c_descricao from produtos p left join categoriasProduto c on p.categoria_id = c.id where p.id = @id";
                _bd.Cmd.Parameters.AddWithValue("@id", produto.Id);
                DataTable dado = _bd.ExecuteReader();

                produto.Descricao = dado.Rows[0]["descricao"].ToString();
                produto.Categoria = new Categoria(Convert.ToInt32(dado.Rows[0]["c_id"].ToString()),dado.Rows[0]["c_descricao"].ToString());
            }
            catch
            {
                return false;
            }
            return true;
        }
Exemple #7
0
        /// <summary>
        /// Insere um produto no Banco de dados
        /// </summary>
        /// <param name="produto">Obj categoria com Descricao</param>
        /// <returns>verdadeiro em caso de sucesso</returns>
        public bool Inserir(Produto produto)
        {
            _bd = new Persistencia();
            try
            {
                _bd.Cmd.CommandText =
                    @"INSERT INTO `produtos` (`descricao`, `categoria_id`) VALUES (@descricao, @categoria_id);";
                _bd.Cmd.Parameters.AddWithValue("@descricao", produto.Descricao);
                _bd.Cmd.Parameters.AddWithValue("@categoria_id", produto.Categoria.Id);
                if (_bd.ExecuteNonQuery() <= 0)//descricao repetidas causam erros de UNIQUEKEY, zero linhas, ninguem foi inserido!
                    return false;
                return true;

            }
            catch (Exception)
            {
                //faz ativacao logica
                try
                {
                    _bd.Cmd.CommandText = @"select excluido from produtos where descricao = @descricao";
                    //se o produto existir e estiver desativado, reativa e informa inserido com sucesso
                    if (Convert.ToInt32(_bd.ExecuteScalar()) == 1)//1 == desativo
                    {
                        _bd.Cmd.CommandText = @"UPDATE produtos SET excluido = @value, categoria_id = @categoria_id WHERE descricao = @descricao; select id from produtos where descricao = @descricao";
                        _bd.Cmd.Parameters.AddWithValue("@value", 0);//0 == ativo
                        _bd.Cmd.Parameters.AddWithValue("@categoria_id", produto.Categoria.Id);
                        produto.Id = Convert.ToInt32(_bd.ExecuteScalar());//recupera id
                        return true;
                    }
                    _bd.Cmd.CommandText = @"select id from produtos where descricao = @descricao";
                    produto.Id = Convert.ToInt32(_bd.ExecuteScalar());//recupera id

                    return false;//se ja estiver ativo retorna falso!
                }
                catch (Exception)
                {
                    return false;//erro de banco de dados!
                }
            }
        }
        protected List<Notificacao> notificacoes = new List<Notificacao>(); //notificações

        #endregion Fields

        #region Methods

        public void BtnOpcoes(object sender, CommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "gravar":
                    {
                        Notificacao notificacao;
                        var produto = new Produto(Convert.ToInt32(produtoId.Value), ttbDescricao.Text,new Categoria(Convert.ToInt32(categoriaId.Value)));

                        bool gravou = new ProdutoCtrl().Gravar(produto, out notificacao);
                        notificacoes.Add(notificacao);
                        if (gravou)
                        {
                            LimparCampos();
                            ListarProdutos();
                        }
                        else
                        {
                           ListarNotificacoes();
                        }

                    } break;
                case "cancelar":
                    {
                        LimparCampos();
                        ListarProdutos();
                    } break;
                case "remover":
                    {
                        Notificacao notificacao;

                        bool excluiu = new ProdutoCtrl().Excluir(new Produto(Convert.ToInt32(produtoId.Value)),
                                                                 out notificacao);
                        notificacoes.Add(notificacao);

                        if (excluiu)
                        {
                            LimparCampos();//zera id e limpa caso o amado usuário tenha solicitado edicao antes de excluir a categoria...
                            ListarProdutos();
                        }

                        else
                            ListarNotificacoes();

                    } break;
                case "editar":
                    {
                        Notificacao notificacao;
                        var produto = new Produto(Convert.ToInt32(e.CommandArgument));

                        bool recuperou = new ProdutoCtrl().Recuperar(produto, out notificacao);

                        if (recuperou)
                        {
                            btnCancelar.Visible = true;

                            produtoId.Value = produto.Id.ToString();//salva a id em edicao
                            ttbDescricao.Text = produto.Descricao;//exibe descricao selecionada

                            categoriaId.Value = produto.Categoria.Id.ToString();
                            ttbCategoria.Text = produto.Categoria.Descricao;
                            ListarProdutos();
                        }
                        else
                        {//informa o erro
                            notificacoes.Add(notificacao);
                            ListarNotificacoes();
                        }

                    } break;
            }
        }