//#region Métodos
        //#region Validação de Campos
        ///// <summary>
        ///// Verificar se já existe um algum usuário com mesmo login que está sendo pesquisado
        ///// </summary>
        internal Resultado ValidarPedido(Pedido oPedido)
        {
            //UsuarioData usuarioData = new UsuarioData();
            Mensagem mensagem = new Mensagem();
            Resultado resultado = new Resultado();

            if (oPedido.Itens != null )
            {
                resultado.Sucesso = true;
            }
            else
            {
                 mensagem.Campo = "Pedido";
                mensagem.Descricoes.Add("Adicione um ao menos um item para fechar o Pedido!");
                resultado.Mensagens.Add(mensagem);
                resultado.Sucesso = false;
                resultado.Sucesso = false;
            }
            return resultado;
        }
        /// <summary>
        /// Incluir um novo Grupo
        /// </summary>
        /// <param name="Grupo">Grupo a ser incluído</param>
        /// <returns>Resultado</returns>
        public Resultado Incluir(Pedido oPedido)
        {
            PedidoData oPedidoData = new PedidoData();
            Resultado resultado = new PedidoValidation().ValidarPedido(oPedido);

            if (resultado.Sucesso)
            {
                resultado = oPedidoData.Incluir(oPedido);

                if (!resultado.Sucesso)
                {
                    Mensagem mensagem = new Mensagem();
                    mensagem.Campo = "Pedido";
                    mensagem.Descricoes.Insert(0, "Erro ao inserir Pedido!");

                    resultado.Mensagens.Add(mensagem);
                    resultado.Sucesso = false;
                }
            }
            return resultado;
        }
        /// <summary>
        /// Incluir um novo grupo
        /// </summary>
        /// <param name="grupo">Grupo a ser incluída</param>
        /// <returns>Resultado</returns>
        public Resultado Incluir(Pedido oPedido)
        {
            Resultado resultado = new Resultado();

            try
            {

                DbCommand dbCommand = this.m_db.GetStoredProcCommand("dbo.SP_PEDIDO_INSERE");
                this.m_db.AddInParameter(dbCommand, "@DATORCAMENTO", DbType.DateTime, oPedido.DataOrcamento);
                this.m_db.AddInParameter(dbCommand, "@DATAPEDIDO", DbType.DateTime, oPedido.DataPedido);
                this.m_db.AddInParameter(dbCommand, "@USUARIO_ID", DbType.Int32, oPedido.Usuario_ID);
                this.m_db.AddInParameter(dbCommand, "@STATUS", DbType.Int32, oPedido.Status);

                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 = "Pedido";
                mensagem.Descricoes.Add(ex.Message);
                resultado.Mensagens.Add(mensagem);
            }

            return resultado;
        }
        protected void btnSalvar_Click(object sender, ImageClickEventArgs e)
        {
            if (ListaGridPersistida == null)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "ResultadoConfirmação", "alert('Adicione ao menos um Item para fazer um pedido!');", true);
            }
            else
            {
                Resultado resultado = new Resultado();
                Pedido opedido = new Pedido();

                opedido.DataPedido = DateTime.Now;
                opedido.DataOrcamento = DateTime.Now;
                opedido.Status = Conversion.preencheCampoInt(StatusPedido.Em_Aberto);
                opedido.Itens = (List<Ped_Item>)ListaGridPersistida;
                opedido.Usuario_ID = ((Usuario)Session["USUARIO"]).UsuarioId;

                StringBuilder sb = new StringBuilder();
                string msgConfirmacao = string.Empty;

                //Incluir
                resultado = oPedidoFacade.Incluir(opedido);
                msgConfirmacao = "Pedido incluído com sucesso!";

                idPedido = resultado.Id;

                if (resultado.Sucesso)
                {
                    Response.Redirect("PedidoConfirmacao.aspx?ped=" + idPedido);
                }
                else
                {
                    lblMensagem.Visible = false;
                    for (int msg = 0; msg < resultado.Mensagens.Count; msg++)
                    {
                        switch (resultado.Mensagens[msg].Campo)
                        {
                            case "PedidoItem":
                                lblMensagem.Text = resultado.Mensagens[msg].Descricoes[0];
                                lblMensagem.Visible = true;
                                break;
                            default:
                                lblMensagem.Text = resultado.Mensagens[msg].Descricoes[0];
                                lblMensagem.Visible = true;
                                break;
                            //case "Operacao":
                            //    ScriptManager.RegisterStartupScript(this, this.GetType(), "ResultadoConfirmação", "alert('Erro ao confirmar a operação! Nenhuma alteração efetuada');", true);
                            //    break;
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Incluir um Grupo
        /// </summary>
        /// <param name="grupo">Grupo a ser incluída</param>
        /// <returns>Resultado</returns>
        public Resultado Incluir(Pedido oPedidos)
        {
            PedidoProcess oPedidoProcess = new PedidoProcess();
            Resultado resultado = new Resultado();
            int CodPed;

            //using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            //{
            resultado = oPedidoProcess.Incluir(oPedidos);
            if (resultado.Sucesso)
            {
                CodPed = resultado.Id;
                oPedidos.PedidoID = resultado.Id;
                resultado = oPedidoProcess.IncluirItens(oPedidos.Itens, oPedidos.PedidoID);
                resultado.Id = CodPed;
                //if (resultado.Sucesso)
                //{
                //    scope.Complete();
                //}
            }
            //}

            //List<String> oCategoria = new List<string>();
            //foreach (Ped_Item itm in oPedidos.Itens)
            //{
            //    oCategoria.Add(itm.Item.Categoria.Nome.ToString());
            //}

            //Dictionary<string, bool> Distinct = new Dictionary<string, bool>();
            //foreach (string value in oCategoria)
            //{
            //    Distinct[value] = true;
            //}

            //List<string> CategoriaDistinct = new List<string>();
            //CategoriaDistinct.AddRange(Distinct.Keys);

            //foreach (String itmDistinct in CategoriaDistinct)
            //{
            //    Pedido ped = new Pedido();
            //    List<Ped_Item> itens = new List<Ped_Item>();

            //    foreach (Ped_Item item in oPedidos.Itens)
            //    {
            //        if (itmDistinct.ToString() == item.Item.Categoria.Nome.ToString())
            //        {
            //            itens.Add(item);
            //        }
            //    }

            //    ped.Status = oPedidos.Status;
            //    ped.Usuario_ID = oPedidos.Usuario_ID;
            //    ped.DataPedido = oPedidos.DataPedido;
            //    ped.DataOrcamento = oPedidos.DataOrcamento;
            //    ped.Itens = itens;

            //    resultado = oPedidoProcess.Incluir(ped);
            //    if (resultado.Sucesso)
            //    {
            //        ped.PedidoID = resultado.Id;
            //        resultado = oPedidoProcess.IncluirItens(ped.Itens, ped.PedidoID);

            //    }
            //}

            return resultado;
        }