public Resultado Atualiza(Grupo oGrupo)
        {
            Resultado resultado = new Resultado();
            try
            {
                DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SP_GRUPO_UPDATE");

                this.m_db.AddInParameter(dbc, "@COD_ITEM", DbType.Int32, oGrupo.ID);
                if (oGrupo.Nome != "")
                    this.m_db.AddInParameter(dbc, "@DESC_ITEM", DbType.String, oGrupo.Nome);

                resultado.Id = Convert.ToInt32(this.m_db.ExecuteNonQuery(dbc));
                resultado.Sucesso = (resultado.Id > 0);

            }
            catch (Exception ex)
            {
                resultado.Sucesso = false;
                Mensagem mensagem = new Mensagem();
                mensagem.Campo = "UPDATE";
                mensagem.Descricoes.Add(ex.Message);
                resultado.Mensagens.Add(mensagem);
            }

            return resultado;
        }
        public Resultado Incluir(Grupo oGrupo)
        {
            Resultado resultado = new Resultado();

            try
            {
                DbCommand dbCommand = this.m_db.GetStoredProcCommand("dbo.SPR_GRUPO_INSERE");
                this.m_db.AddInParameter(dbCommand, "@NOME", DbType.String, oGrupo.Nome);

                resultado.Id = Convert.ToInt32(this.m_db.ExecuteScalar(dbCommand));
                resultado.Sucesso = (resultado.Id > 0);

            }
            catch (Exception ex)
            {
                resultado.Sucesso = false;
                Mensagem mensagem = new Mensagem();
                mensagem.Campo = "INSERIR";
                mensagem.Descricoes.Add(ex.Message);
                resultado.Mensagens.Add(mensagem);
            }

            return resultado;
        }
        public List<Ped_Item> ListarByNumPed(int CodPedido)
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SP_PEDIDO_PESQUISA_COD");
            this.m_db.AddInParameter(dbc, "@COD_PED", DbType.Int32, CodPedido);

            List<Ped_Item> listaPedido = new List<Ped_Item>();

            using (IDataReader readerPedItem = this.m_db.ExecuteReader(dbc))
            {
                while (readerPedItem.Read())
                {
                    Ped_Item oPed_Item = new Ped_Item();
                    oPed_Item.PedidoItensID = Conversion.preencheCampoInt(readerPedItem["COD_PEDITENS"]);
                    oPed_Item.Quantidade = Conversion.preencheCampoInt(readerPedItem["NUM_QUANTIDADE"]);
                    oPed_Item.QuantidadeComprada = Conversion.preencheCampoInt(readerPedItem["NUM_QTDCOMPRADA"]);
                    oPed_Item.Outros = Conversion.preencheCampoString(readerPedItem["DSC_OUTROS"]);
                    oPed_Item.Data_Pedido = readerPedItem["DAT_PEDIDO_ITEM"].ToString() == "" ? DateTime.MinValue : Conversion.preencheCampoDateTime(readerPedItem["DAT_PEDIDO_ITEM"]);
                    oPed_Item.Data_EntradaFornecedor = readerPedItem["DAT_PEDIDO_FORN"].ToString() == "" ? DateTime.MinValue : Conversion.preencheCampoDateTime(readerPedItem["DAT_PEDIDO_FORN"]);
                    oPed_Item.Data_PrevisaoEntrega = readerPedItem["DAT_PEDIDO_PREVISAO"].ToString() == "" ? DateTime.MinValue : Conversion.preencheCampoDateTime(readerPedItem["DAT_PEDIDO_PREVISAO"]);
                    oPed_Item.Data_Entrega = readerPedItem["DAT_PEDIDO_ENTREGA"].ToString() == "" ? DateTime.MinValue : Conversion.preencheCampoDateTime(readerPedItem["DAT_PEDIDO_ENTREGA"]);
                    oPed_Item.Status = Conversion.preencheCampoInt(readerPedItem["NUM_STATUS_ITEM"]);

                    Item oItm = new Item();
                    oItm.Nome = Conversion.preencheCampoString(readerPedItem["NOM_ITEM"]);
                    oItm.Requer_Aprovação = Conversion.preencheCampoBoolean(readerPedItem["FLG_APROVACAO"]);

                    Categoria oCategoria = new Categoria();
                    oCategoria.Nome = Conversion.preencheCampoString(readerPedItem["NOM_CATEGORIA"]);

                    Grupo oArea = new Grupo();
                    oArea.ID = Conversion.preencheCampoInt(readerPedItem["GRUPO_ID"]);
                    oArea.Nome = Conversion.preencheCampoString(readerPedItem["NOM_GRUPO"]);

                    oItm.Categoria = oCategoria;

                    oPed_Item.Item = oItm;
                    oPed_Item.Area = oArea;

                    Projetos oProjeto = new Projetos();

                    oProjeto.Nome = Conversion.preencheCampoString(readerPedItem["NOM_PROJETO"]);
                    oPed_Item.Projeto = oProjeto;

                    listaPedido.Add(oPed_Item);
                }
                readerPedItem.Dispose();
            }
            return listaPedido;
        }
        public List<ProcessoCompraItem> ListaItensPCompra(int CodPCompra)
        {
            DbCommand dbCommand = this.m_db.GetStoredProcCommand("dbo.SP_PROCESSOCOMPRAITENS_LISTA");
            this.m_db.AddInParameter(dbCommand, "@CDP", DbType.Int32, CodPCompra);

            List<ProcessoCompraItem> listaCompras = new List<ProcessoCompraItem>();

            using (IDataReader readerlistaCompras = this.m_db.ExecuteReader(dbCommand))
            {
                while (readerlistaCompras.Read())
                {
                    ProcessoCompraItem oPedListaItem = new ProcessoCompraItem();
                    Item oItem = new Item();
                    oItem.Nome = Conversion.preencheCampoString(readerlistaCompras["NOM_ITEM"]);

                    oPedListaItem.Item = oItem;
                    oPedListaItem.CodProcesso = Conversion.preencheCampoInt(readerlistaCompras["COD_PROCESSOCOMPRA"]);
                    oPedListaItem.CodPedido = Conversion.preencheCampoInt(readerlistaCompras["COD_PEDIDO"]);
                    oPedListaItem.CodItem = Conversion.preencheCampoInt(readerlistaCompras["COD_PEDITENS"]);
                    oPedListaItem.NomeProjeto = Conversion.preencheCampoString(readerlistaCompras["NOM_PROJETO"]);
                    oPedListaItem.NomeUsuario = Conversion.preencheCampoString(readerlistaCompras["NOME"]);
                    oPedListaItem.Outros = Conversion.preencheCampoString(readerlistaCompras["DSC_OUTROS"]);
                    oPedListaItem.Quantidade = Conversion.preencheCampoInt(readerlistaCompras["QUANTIDADE"]) < 0 ? 0 : Conversion.preencheCampoInt(readerlistaCompras["QUANTIDADE"]);
                    oPedListaItem.QuantidadeComprada = Conversion.preencheCampoInt(readerlistaCompras["NUM_QTDCOMPRADA"]) < 0 ? 0 : Conversion.preencheCampoInt(readerlistaCompras["NUM_QTDCOMPRADA"]);
                    oPedListaItem.NomeItem = Conversion.preencheCampoString(readerlistaCompras["NOM_ITEM"]);
                    oPedListaItem.Empresa = Conversion.preencheCampoString(readerlistaCompras["NOM_CENTRODECUSTO"]);
                    oPedListaItem.ValorUnitario = Conversion.preencheCampoDecimal(readerlistaCompras["VAL_UNITARIO"]) < 0 ? 0 : Conversion.preencheCampoDecimal(readerlistaCompras["VAL_UNITARIO"]);
                    oPedListaItem.DataCompra = Conversion.preencheCampoDateTime(readerlistaCompras["DAT_PEDIDO_COMPRA"]);
                    oPedListaItem.DataPrevisaoEntrega = Conversion.preencheCampoDateTime(readerlistaCompras["DAT_PEDIDO_PREVISAO"]);
                    oPedListaItem.DataEntrega = Conversion.preencheCampoDateTime(readerlistaCompras["DAT_PEDIDO_ENTREGA"]);
                    oPedListaItem.Status = Conversion.preencheCampoInt(readerlistaCompras["NUM_STATUS_ITEM"]);

                    oPedListaItem.TpDocumentoFiscal = Conversion.preencheCampoInt(readerlistaCompras["TP_DOCUMENTO"]) < 0 ? 0 : Conversion.preencheCampoInt(readerlistaCompras["TP_DOCUMENTO"]);
                    oPedListaItem.NotaSerie = Conversion.preencheCampoString(readerlistaCompras["NUM_SERIE_NOTA"]);
                    oPedListaItem.NotaFiscal = Conversion.preencheCampoInt(readerlistaCompras["NUM_NOTAFISCAL"]) < 0 ? 0 : Conversion.preencheCampoInt(readerlistaCompras["NUM_NOTAFISCAL"]);
                    oPedListaItem.DataEmissaoNota = Conversion.preencheCampoDateTime(readerlistaCompras["DAT_EMISSAO_NOTA"]);

                    Fornecedor oFornecedor = new Fornecedor();
                    oFornecedor.FornecedorID = Conversion.preencheCampoInt(readerlistaCompras["FORNECEDOR_ID"]);
                    oPedListaItem.Fornecedor = oFornecedor;

                    Grupo oGrupo = new Grupo();
                    oGrupo.ID = Conversion.preencheCampoInt(readerlistaCompras["GRUPO_ID"]);
                    oGrupo.Nome = Conversion.preencheCampoString(readerlistaCompras["NOM_GRUPO"]);
                    oPedListaItem.Area = oGrupo;

                    oPedListaItem.NomeArea = Conversion.preencheCampoString(readerlistaCompras["NOM_GRUPO"]);

                    listaCompras.Add(oPedListaItem);
                }
                readerlistaCompras.Dispose();
            }
            return listaCompras;
        }
        public List<Grupo> Listar()
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SPR_GRUPO_LISTA");
            List<Grupo> listaGrupo = new List<Grupo>();

            using (IDataReader readerCategoria = this.m_db.ExecuteReader(dbc))
            {
                while (readerCategoria.Read())
                {
                    Grupo oGrupo = new Grupo();
                    oGrupo.ID = Conversion.preencheCampoInt(readerCategoria["GRUPO_ID"]);
                    oGrupo.Nome = Conversion.preencheCampoString(readerCategoria["NOM_GRUPO"]);

                    listaGrupo.Add(oGrupo);
                }
                readerCategoria.Dispose();
            }
            return listaGrupo;
        }
        public Grupo Obter(int ID)
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SPR_GRUPO_LISTA");
            this.m_db.AddInParameter(dbc, "@ID", DbType.Int32, ID);
            Grupo oGrupo = new Grupo();
            using (IDataReader readerCategoria = this.m_db.ExecuteReader(dbc))
            {
                if (readerCategoria.Read())
                {

                    oGrupo.ID = Conversion.preencheCampoInt(readerCategoria["GRUPO_ID"]);
                    oGrupo.Nome = Conversion.preencheCampoString(readerCategoria["NOM_GRUPO"]);

                }
            }
            return oGrupo;
        }
        protected void btnAddItem_Click(object sender, ImageClickEventArgs e)
        {
            if (Page.IsValid)
            {
                if (ddlItem.SelectedIndex > 0)
                {
                    Resultado resultado = new Resultado();
                    List<Ped_Item> listaPedItem = null;

                    Ped_Item ItemPedido = new Ped_Item();

                    if (ListaGridPersistida != null)
                    {
                        listaPedItem = (List<Ped_Item>)ListaGridPersistida;
                    }
                    else
                    {
                        listaPedItem = new List<Ped_Item>();
                    }

                    Projetos oProd = new Projetos();
                    oProd.ProjetoID = Convert.ToInt32(ddlProjeto.SelectedValue);
                    oProd.Nome = ddlProjeto.SelectedItem.ToString();

                    Categoria oCat = new Categoria();
                    oCat.CategoriaID = Convert.ToInt32(ddlCategoria.SelectedValue);
                    oCat.Nome = ddlCategoria.SelectedItem.ToString();

                    Grupo oArea = new Grupo();
                    if (((Usuario)Session["USUARIO"]).Perfil.PerfilId != 3)
                    {
                        oArea.ID = Convert.ToInt32(ddlArea.SelectedValue);
                        oArea.Nome = ddlArea.SelectedItem.ToString();
                    }
                    else
                    {
                        oArea = ((Usuario)Session["USUARIO"]).Area;
                    }

                    Item oItem = new Item();
                    oItem.ItemID = Convert.ToInt32(ddlItem.SelectedValue);
                    oItem.Nome = ddlItem.SelectedItem.ToString();
                    oItem.Categoria = oCat;

                    ItemPedido.PedidoItensID = listaPedItem.Count + 1;
                    ItemPedido.Item = oItem;
                    ItemPedido.Projeto = oProd;
                    ItemPedido.Area = oArea;
                    ItemPedido.Quantidade = Convert.ToInt32(txtQuantidade.Text);
                    ItemPedido.Data_Pedido = DateTime.Now;
                    ItemPedido.Status = Convert.ToInt32(StatusItemPedido.Em_Aberto);

                    if (txtOutros.Text.ToString() != string.Empty)
                    {
                        ItemPedido.Outros = txtOutros.Text.ToString();
                    }
                    if (txtDesc.Text.ToString() != string.Empty)
                    {
                        ItemPedido.Descrição = txtDesc.Text.ToString();
                    }

                    string msgConfirmacao = string.Empty;

                    resultado = oPedItemFacade.Validar(ItemPedido);

                    if (resultado.Sucesso)
                    {
                        ListaGridPersistida = listaPedItem;
                        listaPedItem.Add(ItemPedido);
                        gvPedItens.DataSource = (List<Ped_Item>)ListaGridPersistida;
                        gvPedItens.DataBind();
                        btnSalvar.Visible = true;
                        btnCancelar.Visible = true;
                    }
                }

                else
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "ResultadoConfirmação", "alert('Selecione um Item para adicionar a lista!');", true);
                }

                ddlCategoria_SelectedIndexChanged(null, null);
                txtDesc.Text = "";
                txtOutros.Text = "";
                txtQuantidade.Text = "";
            }
        }
        public List<Usuario> Listar(string pNome)
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SP_USUARIO_PESQUISA");
            this.m_db.AddInParameter(dbc, "@NOME", DbType.String, pNome);

            List<Usuario> listaCategoria = new List<Usuario>();

            using (IDataReader readerUsuario = this.m_db.ExecuteReader(dbc))
            {
                while (readerUsuario.Read())
                {
                    Usuario oUsuario = new Usuario();
                    oUsuario.UsuarioId = Conversion.preencheCampoInt(readerUsuario["USUARIO_ID"]);
                    oUsuario.Nome = Conversion.preencheCampoString(readerUsuario["NOME"]);
                    oUsuario.Login = Conversion.preencheCampoString(readerUsuario["LOGIN"]);
                    oUsuario.Email = Conversion.preencheCampoString(readerUsuario["SENHA"]);
                    oUsuario.Status = Conversion.preencheCampoString(readerUsuario["STATUS"].ToString().Trim());
                    oUsuario.Perfil = new PerfilData().GetPerfilByID(Conversion.preencheCampoInt(readerUsuario["PERFIL_ID"]));

                    Grupo _Area = new Grupo();
                    _Area.ID = Conversion.preencheCampoInt(readerUsuario["Grupo_ID"]);
                    _Area.Nome = Conversion.preencheCampoString(readerUsuario["nom_Grupo"]);

                    oUsuario.Area = _Area;

                    listaCategoria.Add(oUsuario);
                }
                readerUsuario.Dispose();
            }
            return listaCategoria;
        }
        public Usuario GetByID(int UsuarioID)
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.SP_USUARIO_GET_USUARIO");
            this.m_db.AddInParameter(dbc, "@USUARIO_ID", DbType.String, UsuarioID);

            Usuario oUsuario = new Usuario();
            using (IDataReader readerUsuario = this.m_db.ExecuteReader(dbc))
            {
                if (readerUsuario.Read())
                {
                    //usuarioRetorno = new Usuario();
                    oUsuario.UsuarioId = Conversion.preencheCampoInt(readerUsuario["USUARIO_ID"]);
                    oUsuario.Login = Conversion.preencheCampoString(readerUsuario["LOGIN"]);
                    oUsuario.SenhaCript = readerUsuario["SENHA"];
                    oUsuario.Nome = Conversion.preencheCampoString(readerUsuario["NOME"]);
                    oUsuario.Email = Conversion.preencheCampoString(readerUsuario["EMAIL"]);
                    oUsuario.Status = Conversion.preencheCampoString(readerUsuario["STATUS"]);

                    Perfil _Perfil = new Perfil();
                    _Perfil.PerfilId = Conversion.preencheCampoInt(readerUsuario["Perfil_ID"]);
                    _Perfil.Descricao = Conversion.preencheCampoString(readerUsuario["DSC_Perfil"]);

                    Grupo _Area = new Grupo();
                    _Area.ID = Conversion.preencheCampoInt(readerUsuario["Grupo_ID"]);
                    _Area.Nome= Conversion.preencheCampoString(readerUsuario["nom_Grupo"]);

                    oUsuario.Area = _Area;

                    _Perfil.Modulos = new ModuloData().Listar(_Perfil.PerfilId);

                    oUsuario.Perfil = _Perfil;
                }
                else

                    readerUsuario.Close();
            }
            return oUsuario;
        }
        /// <summary>
        /// Selecionar um usuário especifico
        /// </summary>
        /// <param name="idPerfil">Identificador do Usuario</param>
        /// <returns>Objeto usuário preenchido</returns>
        public Usuario Autenticar(Usuario login, ref Resultado resultado)
        {
            DbCommand dbc = this.m_db.GetStoredProcCommand("dbo.sp_login");
            this.m_db.AddInParameter(dbc, "@LOGIN", DbType.String, login.Login);

            using (IDataReader readerUsuario = this.m_db.ExecuteReader(dbc))
            {
                if (readerUsuario.Read())
                {
                    resultado.Sucesso = true;
                    login.UsuarioId = Conversion.preencheCampoInt(readerUsuario["USUARIO_ID"]);
                    login.Login = Conversion.preencheCampoString(readerUsuario["LOGIN"]);
                    login.SenhaCript = readerUsuario["SENHA"];
                    login.Nome = Conversion.preencheCampoString(readerUsuario["NOME"]);
                    login.Email = Conversion.preencheCampoString(readerUsuario["EMAIL"]);
                    login.Status = Conversion.preencheCampoString(readerUsuario["STATUS"]);

                    Perfil _Perfil = new Perfil();
                    _Perfil.PerfilId = Conversion.preencheCampoInt(readerUsuario["Perfil_ID"]);
                    _Perfil.Descricao = Conversion.preencheCampoString(readerUsuario["DSC_Perfil"]);

                    Grupo _Area = new Grupo();
                    _Area.ID = Conversion.preencheCampoInt(readerUsuario["Grupo_ID"]);
                    _Area.Nome = Conversion.preencheCampoString(readerUsuario["nom_Grupo"]);

                    login.Area = _Area;

                    _Perfil.Modulos = new ModuloData().Listar(_Perfil.PerfilId);
                    login.ItensMenu = new ModuloData().ListarMenu(_Perfil.PerfilId);

                    login.Perfil = _Perfil;
                }
                else
                {
                    resultado.Sucesso = false;
                }

                readerUsuario.Close();
            }
            return login;
        }