public static void AtualizarCliente(Cliente Cliente)
        {
            String comandoSql =
                @"UPDATE CLIENTE SET NOME = :NOME, TELEFONE = :TELEFONE, OBSERVACAO = :OBSERVACAO, EMAIL = :EMAIL, RUA = :RUA,
                                    NUMERO = :NUMERO, BAIRRO = :BAIRRO, COMPLEMENTO = :COMPLEMENTO, CIDADE = :CIDADE,
                                    ESTADO = :ESTADO, CEP = :CEP, IDENTIFICACAO = :IDENTIFICACAO, DTNASCIMENTO = :DTNASCIMENTO WHERE CODIGO = :CODIGO";

            OracleConnection conexao = PersistenciaOracle.ObterConexao();

            conexao.Open();
            OracleCommand comando =
                new OracleCommand(comandoSql);

            comando.Connection = conexao;

            comando.Parameters.Add("NOME", Cliente.Nome);
            comando.Parameters.Add("TELEFONE", Cliente.Telefone);
            comando.Parameters.Add("OBSERVACAO", Cliente.Observacao);
            comando.Parameters.Add("EMAIL", Cliente.Email);
            comando.Parameters.Add("RUA", Cliente.Rua);
            comando.Parameters.Add("NUMERO", Cliente.Numero);
            comando.Parameters.Add("BAIRRO", Cliente.Bairro);
            comando.Parameters.Add("COMPLEMENTO", Cliente.Complemento);
            comando.Parameters.Add("CIDADE", Cliente.Cidade);
            comando.Parameters.Add("ESTADO", Cliente.Estado);
            comando.Parameters.Add("CEP", Cliente.CEP);
            comando.Parameters.Add("IDENTIFICACAO", Cliente.Identificacao);
            comando.Parameters.Add("DTNASCIMENTO", Cliente.DtNascimento);

            comando.Parameters.Add("CODIGO", Cliente.Codigo);

            comando.Prepare();
            comando.ExecuteNonQuery();
            conexao.Close();
        }
        public static List<Cliente> ConsultarCliente(Cliente Cliente)
        {
            String comandoSql = @"SELECT CODIGO,TELEFONE,NOME,OBSERVACAO,EMAIL,RUA,NUMERO,BAIRRO,COMPLEMENTO,CIDADE,ESTADO,CEP,DTINCLUSAO,IDENTIFICACAO, DTNASCIMENTO
                                                FROM CLIENTE WHERE 1 = 1 ";

            if (!string.IsNullOrEmpty(Cliente.Telefone) && !Cliente.Telefone.Equals("(__) _____-____"))
            {
                comandoSql += string.Format(" AND TELEFONE LIKE '{0}%'", TratarTelefone(Cliente.Telefone));
            }

            if (Cliente.Codigo != default(int))
            {
                comandoSql += string.Format(" AND CODIGO = {0}", Cliente.Codigo);
            }

            if(!string.IsNullOrEmpty(Cliente.Nome))
            {
                comandoSql += string.Format(" AND UPPER(NOME) LIKE '{0}%'", Cliente.Nome.ToUpper());
            }

            List<Cliente> clientes = new List<Cliente>();

            OracleConnection conexao = PersistenciaOracle.ObterConexao();
            conexao.Open();
            OracleCommand comando = new OracleCommand(comandoSql);
            comando.Connection = conexao;

            OracleDataReader leitor = comando.ExecuteReader();
            while (leitor.Read())
            {
                Cliente c = new Cliente();
                c.Codigo = UtilidadePersistencia.ObterValorTratado<int>(leitor[0]);
                c.Telefone = UtilidadePersistencia.ObterValorTratado<String>(leitor[1]);
                c.Nome = UtilidadePersistencia.ObterValorTratado<String>(leitor[2]);
                c.Observacao = UtilidadePersistencia.ObterValorTratado<String>(leitor[3]);
                c.Email = UtilidadePersistencia.ObterValorTratado<String>(leitor[4]);
                c.Rua = UtilidadePersistencia.ObterValorTratado<String>(leitor[5]);
                c.Numero = UtilidadePersistencia.ObterValorTratado<String>(leitor[6]);
                c.Bairro = UtilidadePersistencia.ObterValorTratado<String>(leitor[7]);
                c.Complemento = UtilidadePersistencia.ObterValorTratado<String>(leitor[8]);
                c.Cidade = UtilidadePersistencia.ObterValorTratado<String>(leitor[9]);
                c.Estado = UtilidadePersistencia.ObterValorTratado<String>(leitor[10]);
                c.CEP = UtilidadePersistencia.ObterValorTratado<String>(leitor[11]);
                c.DtInclusao = UtilidadePersistencia.ObterValorDateTimeTratado<DateTime?>(leitor[12]);
                c.Identificacao = UtilidadePersistencia.ObterValorTratado<String>(leitor[13]);
                c.DtNascimento = UtilidadePersistencia.ObterValorDateTimeTratado<DateTime?>(leitor[14]);

                clientes.Add(c);
            }

            conexao.Close();

            return clientes;
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(this.txtComanda.Text))
            {
                Utilidades.Mensagens.ExibirMensagemAlerta(this, "É necessário informar o número da comanda!", txtComanda);
                return;
            }

            if (Persistencia.PersistenciaComanda.ComandaEmUso(Convert.ToDecimal(this.txtComanda.Text)))
            {
                Utilidades.Mensagens.ExibirMensagemAlerta(this, "Este número de comanda está em uso!");
                this.txtComanda.Text = string.Empty;
                return;
            }

            if (!this.mskTelefone.IsMaskCompleted)
            {
                Utilidades.Mensagens.ExibirMensagemAlerta(this, "O telefone do cliente deve ser preenchido!");
                this.mskTelefone.Focus();
                return;
            }

            if (string.IsNullOrEmpty(this.txtNome.Text))
            {
                Utilidades.Mensagens.ExibirMensagemAlerta(this, "É necessário informar o nome do cliente!", txtNome);
                return;
            }

            ComandaResumida Cmd = new ComandaResumida();
            Cmd.Nome = this.txtNome.Text;
            Cmd.Telefone = this.mskTelefone.Text;
            Cmd.Numero = Convert.ToDecimal(this.txtComanda.Text);
            Cmd.Status = StatusComanda.EmUso;
            int NumeroVenda = Persistencia.PersistenciaComanda.AbrirComanda(Cmd);

            if (this.AtendimentoSelecionado != null && this.AtendimentoSelecionado != default(Atendimento))
            {
                this.AtendimentoSelecionado.NumeroVenda = Cmd.NumeroVenda;
                this.AtendimentoSelecionado.NumeroComanda = Cmd.Numero;
                Persistencia.PersistenciaComanda.AtribuirComandaAoAtendimento(this.AtendimentoSelecionado);
            }

            if (this.ClienteExistente != null)
            {
                if (string.IsNullOrEmpty(this.ClienteExistente.Identificacao) &&
                     !string.IsNullOrEmpty(this.txtDocumentoID.Text))
                {
                    this.ClienteExistente.Identificacao = this.txtDocumentoID.Text;
                }

                if (string.IsNullOrEmpty(this.ClienteExistente.Email) &&
                     !string.IsNullOrEmpty(this.txtEmail.Text))
                {
                    this.ClienteExistente.Email = this.txtEmail.Text;
                }
                Persistencia.PersistenciaCliente.AtualizarCliente(this.ClienteExistente);
            }
            else
            {
                Cliente cli = new Cliente();
                cli.Nome = this.txtNome.Text;
                cli.Telefone = this.mskTelefone.Text;
                cli.Email = this.txtEmail.Text;
                cli.Identificacao = this.txtDocumentoID.Text;
                Persistencia.PersistenciaCliente.GravarCliente(cli);
            }

            Mensagens.ExibirMensagemAlerta(this, "Comanda aberta com sucesso!");
            this.ComandaFoiAberta = true;
            this.Close();
        }
        private void ExibirDadosClienteTela(Cliente cli)
        {
            this.txtNome.Text = cli.Nome;
            this.mskTelefone.Text = cli.Telefone;
            this.txtEmail.Text = cli.Email;
            this.txtDocumentoID.Text = cli.Identificacao;

            this.ClienteExistente = cli;
        }
        private void DefinirDadosComplementaresNaSessao(Cliente Cliente)
        {
            if (InfoCliente == null)
            {
                InfoCliente = new DadosComplementaresCliente();
            }

            InfoCliente.Email = Cliente.Email;
            InfoCliente.Rua = Cliente.Rua;
            InfoCliente.Numero = Cliente.Numero;
            InfoCliente.Complemento = Cliente.Complemento;
            InfoCliente.Bairro = Cliente.Bairro;
            InfoCliente.Cidade = Cliente.Cidade;
            InfoCliente.Estado = Cliente.Estado;
            InfoCliente.CEP = Cliente.CEP;
            InfoCliente.DtNascimento = Cliente.DtNascimento;
        }
        public static int GravarCliente(Cliente Cliente)
        {
            int codigo = PersistenciaOracle.ObterProximoCodigo("CLIENTE");

            OracleConnection conexao = PersistenciaOracle.ObterConexao();

            conexao.Open();
            OracleCommand comando =
                new OracleCommand(@"INSERT INTO CLIENTE(CODIGO,TELEFONE,NOME,OBSERVACAO,EMAIL,RUA,NUMERO,BAIRRO,COMPLEMENTO,CIDADE,ESTADO,CEP,DTINCLUSAO,IDENTIFICACAO,DTNASCIMENTO)
                                        VALUES (:CODIGO,:TELEFONE,:NOME,:OBSERVACAO,:EMAIL,:RUA,:NUMERO,:BAIRRO,:COMPLEMENTO,:CIDADE,:ESTADO,:CEP,:DTINCLUSAO,:IDENTIFICACAO,:DTNASCIMENTO)");
            comando.Connection = conexao;
            comando.Parameters.Add("CODIGO", codigo);
            comando.Parameters.Add("TELEFONE", Cliente.Telefone);
            comando.Parameters.Add("NOME", Cliente.Nome);
            comando.Parameters.Add("OBSERVACAO", Cliente.Observacao);
            comando.Parameters.Add("EMAIL", Cliente.Email);
            comando.Parameters.Add("RUA", Cliente.Rua);
            comando.Parameters.Add("NUMERO", Cliente.Numero);
            comando.Parameters.Add("BAIRRO", Cliente.Bairro);
            comando.Parameters.Add("COMPLEMENTO", Cliente.Complemento);
            comando.Parameters.Add("CIDADE", Cliente.Cidade);
            comando.Parameters.Add("ESTADO", Cliente.Estado);
            comando.Parameters.Add("CEP", Cliente.CEP);
            comando.Parameters.Add("DTINCLUSAO", Cliente.DtInclusao);
            comando.Parameters.Add("IDENTIFICACAO", Cliente.Identificacao);
            comando.Parameters.Add("DTNASCIMENTO", Cliente.DtNascimento);

            comando.Prepare();
            comando.ExecuteNonQuery();
            conexao.Close();

            return codigo;
        }
 private void GravarDadosDoCliente(Cliente Cliente)
 {
     if (Cliente.Codigo != 0 && Cliente.Codigo != default(int))
     {
         Persistencia.PersistenciaCliente.AtualizarCliente(Cliente);
     }
     else
     {
         Cliente.Codigo = Persistencia.PersistenciaCliente.GravarCliente(Cliente);
     }
 }
        private void ExibirDadosDoClienteNaTela(Cliente Cliente)
        {

            this.maskedTextBox.Text = Cliente.Telefone;
            this.txtObservacao.Text = Cliente.Observacao;

            this.ClienteAtendimento = Cliente;
            this.DefinirDadosComplementaresNaSessao(Cliente);
            this.txtNome.Text = Cliente.Nome;

            this.txtDocumentoID.Text = Cliente.Identificacao;
        }
        private Cliente ObterClienteDaTela()
        {
            Cliente cliente = new Cliente();
            cliente.Nome = this.txtNome.Text;
            cliente.Telefone = this.maskedTextBox.Text;
            cliente.Observacao = this.txtObservacao.Text;
            cliente.Identificacao = this.txtDocumentoID.Text;            

            if (this.ClienteAtendimento != null && this.ClienteAtendimento != default(Cliente))
            {
                cliente.Codigo = this.ClienteAtendimento.Codigo;
            }

            if (this.InfoCliente != null)
            {
                cliente.DtNascimento = InfoCliente.DtNascimento;
                cliente.Email = InfoCliente.Email;
                cliente.Rua = InfoCliente.Rua;
                cliente.Numero = InfoCliente.Numero;
                cliente.Complemento = InfoCliente.Complemento;
                cliente.Bairro = InfoCliente.Bairro;
                cliente.Cidade = InfoCliente.Cidade;
                cliente.Estado = InfoCliente.Estado;
                cliente.CEP = InfoCliente.CEP;                
            }

            return cliente;
        }
        private void btnPesquisa_Click(object sender, RoutedEventArgs e)
        {
            Cliente cliente = new Cliente() { Nome = this.txtNomePesquisa.Text, Telefone = this.mskTelefonePesquisa.Text };
            List<Cliente> clientes =
                Persistencia.PersistenciaCliente.ConsultarCliente(cliente);

            this.dataGrid.DataContext = clientes;

            this.dataGridAtendimentos.DataContext = null;
        }
        private Cliente ObterClienteDaTela()
        {
            Cliente cliente = new Cliente();
            cliente.Nome = this.txtNome.Text;
            cliente.Telefone = this.mskTelefone.Text;
            cliente.Observacao = this.txtObservacao.Text;

            if (this.ClienteSelecionado != null && this.ClienteSelecionado != default(Cliente))
            {
                cliente.Codigo = this.ClienteSelecionado.Codigo;
            }

            cliente.Email = this.txtEmail.Text;
            cliente.Rua = this.txtRua.Text;
            cliente.Numero = this.txtNumero.Text;
            cliente.Complemento = this.txtComplemento.Text;
            cliente.Bairro = this.txtBairro.Text;
            cliente.Cidade = this.txtCidade.Text;
            cliente.Estado = this.txtEstado.Text;
            cliente.CEP = this.txtCEP.Text;
            cliente.Identificacao = this.txtDocumentoID.Text;
            if (this.dtpkDataNascimento.SelectedDate != null && this.dtpkDataNascimento.SelectedDate != default(DateTime))
            {
                cliente.DtNascimento = this.dtpkDataNascimento.SelectedDate.GetValueOrDefault();
            }

            return cliente;
        }
        private void LimparTela()
        {
            this.txtNome.Text = String.Empty;
            this.mskTelefone.Text = String.Empty;
            this.txtObservacao.Text = String.Empty;

            this.txtEmail.Text = String.Empty;
            this.txtRua.Text = String.Empty;
            this.txtNumero.Text = String.Empty;
            this.txtComplemento.Text = String.Empty;
            this.txtBairro.Text = String.Empty;
            this.txtCidade.Text = String.Empty;
            this.txtEstado.Text = String.Empty;
            this.txtCEP.Text = String.Empty;

            this.txtDocumentoID.Text = string.Empty;
            this.dtpkDataNascimento.Text = string.Empty;

            this.dtpkDataNascimento.SelectedDate = null;

            this.ClienteSelecionado = null;

            this.txtNome.Focus();
        }
        private void ColocarTelaEmEstadoAlteracao(Cliente Cliente)
        {
            this.txtNome.Text = Cliente.Nome;
            this.mskTelefone.Text = Cliente.Telefone;
            this.txtObservacao.Text = Cliente.Observacao;

            this.txtEmail.Text = Cliente.Email;
            this.txtRua.Text = Cliente.Rua;
            this.txtNumero.Text = Cliente.Numero;
            this.txtComplemento.Text = Cliente.Complemento;
            this.txtBairro.Text = Cliente.Bairro;
            this.txtCidade.Text = Cliente.Cidade;
            this.txtEstado.Text = Cliente.Estado;
            this.txtCEP.Text = Cliente.CEP;

            this.txtDocumentoID.Text = Cliente.Identificacao;
            this.dtpkDataNascimento.SelectedDate = Cliente.DtNascimento;
            ClienteSelecionado = Cliente;

            tabControl.SelectedIndex = 1;
        }