/// <summary>
        /// Pesquisa artigo pelos atributos do artigo usado para trazer apenas artigos
        /// para visualizacao no container de Saude e Treinamento.
        /// </summary>
        /// <param name="artigo">Filtro para pesquisa</param>
        /// <param name="qtde">Quantidade de registros de retorno ("0" para todos)</param>
        public IList <Dominio.Artigo> PesquisarArtigoSaude(Dominio.Artigo artigo, short qtde = 3)
        {
            try
            {
                if (artigo == null)
                {
                    artigo = new Artigo();
                }

                artigo.ObjCategoria = new Categoria()
                {
                    Codigo = 3
                };

                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                if (qtde > 0)
                {
                    return(artigoDAO.Pesquisar(artigo, qtde));
                }

                return(artigoDAO.Pesquisar(artigo));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Salva o artigo
        /// </summary>
        /// <param name="artigo">Objeto para salvar</param>
        public Dominio.Artigo SalvarArtigo(Dominio.Artigo artigo)
        {
            try
            {
                if (artigo == null)
                {
                    throw new NotImplementedException("artigo");
                }

                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                if (artigo.UsuarioCadastro == null)
                {
                    artigo.UsuarioCadastro = Utilitario.Sessao.UsuarioLogado;
                }

                if (artigo.Codigo <= 0)
                {
                    return(artigoDAO.Cadastrar(artigo));
                }

                artigoDAO.Alterar(artigo);
                return(artigo);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Pesquisa artigo pelo código
        /// </summary>
        /// <param name="codigo">Código para filtro</param>
        public Dominio.Artigo PesquisarArtigo(int codigo)
        {
            try
            {
                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                return(artigoDAO.Pesquisar(codigo));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Exclui o artigo pelo código
        /// </summary>
        /// <param name="codigo">código para exclusão</param>
        public bool ExcluirArtigo(int codigo)
        {
            try
            {
                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                return(artigoDAO.Excluir(codigo));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Pesquisa artigo pelos atributos do artigo usado para trazer apenas artigos
        /// para visualizacao no container de artigos.
        /// </summary>
        /// <param name="artigo">Filtro para pesquisa</param>
        /// <param name="qtde">Quantidade de registros de retorno ("0" para todos)</param>
        public IList <Dominio.Artigo> PesquisarArtigoArtigoTecnico(Dominio.Artigo artigo, short qtde = 4)
        {
            try
            {
                IFactoryDAO    fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO     artigoDAO = fabrica.GetArtigoDAO();
                IList <Artigo> lista     = artigoDAO.Pesquisar(artigo);

                // Remove os Itens de Historia do montanhismo.
                ((List <Artigo>)lista).RemoveAll(p => p.ObjCategoria.Codigo == 2);

                return((IList <Artigo>)((List <Artigo>)lista).GetRange(0, qtde));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Pesquisa artigo pelos atributos do artigo
        /// </summary>
        /// <param name="artigo">Filtro para pesquisa</param>
        /// <param name="qtde">Quantidade de registros de retorno ("0" para todos)</param>
        public IList <Dominio.Artigo> PesquisarArtigo(Dominio.Artigo artigo, int qtde, int pagina, int[] CodigosCategorias)
        {
            try
            {
                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                if (qtde > 0)
                {
                    return(artigoDAO.Pesquisar(artigo, qtde, pagina, CodigosCategorias));
                }

                return(artigoDAO.Pesquisar(artigo));
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// Pesquisa artigo pelos atributos do artigo
        /// </summary>
        /// <param name="artigo">Filtro para pesquisa</param>
        /// <param name="qtde">Quantidade de registros de retorno ("0" para todos)</param>
        public IList <Dominio.Artigo> PesquisarArtigo(Dominio.Artigo artigo, int qtde = 0)
        {
            try
            {
                IFactoryDAO fabrica   = FactoryFactoryDAO.GetFabrica();
                IArtigoDAO  artigoDAO = fabrica.GetArtigoDAO();

                if (qtde > 0)
                {
                    return(artigoDAO.Pesquisar(artigo, qtde));
                }

                return(artigoDAO.Pesquisar(artigo));
            }
            catch (Exception e)
            {
                throw e;
            }
        }