public static int AbrirComanda(ComandaResumida comanda)
        {
            String sqlInsert = @"INSERT INTO COMANDAVENDA(NUMEROVENDA,NUMEROCOMANDA,SITUACAO,DATAABERTURA,NOME,TELEFONE)
                                                    VALUES(:NUMEROVENDA,:NUMEROCOMANDA,:SITUACAO,:DATAABERTURA,:NOME,:TELEFONE)";

            comanda.NumeroVenda = PersistenciaOracle.ObterProximoMaximoValor("COMANDAVENDA", "NUMEROVENDA");

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

            comando.Parameters.Add("NUMEROVENDA", comanda.NumeroVenda);
            comando.Parameters.Add("NUMEROCOMANDA", comanda.Numero);
            comando.Parameters.Add("SITUACAO",Convert.ToInt32(comanda.Status));
            comando.Parameters.Add("DATAABERTURA", DateTime.Now);
            comando.Parameters.Add("NOME", comanda.Nome);
            comando.Parameters.Add("TELEFONE", comanda.Telefone);
            comando.Prepare();

            comando.ExecuteNonQuery();

            conexao.Close();

            return comanda.NumeroVenda;
        }
        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();
        }
        public static ComandaResumida ObterComandaAbertaSemAtendimento(decimal NumeroComanda)
        {
            String comandoSql = @"SELECT CV.NUMEROCOMANDA, CV.NUMEROVENDA, CV.SITUACAO, CV.NOME, CV.TELEFONE FROM COMANDAVENDA CV
                                          WHERE CV.NUMEROCOMANDA = :NUMEROCOMANDA
                                          AND CV.SITUACAO = 1
                                          AND NOT EXISTS (SELECT * FROM ATENDIMENTO ATD
                                                            WHERE ATD.NUMEROCOMANDA = CV.NUMEROCOMANDA
                                                            AND ATD.NUMEROVENDA = CV.NUMEROVENDA)";

            ComandaResumida comanda = null;

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

            comando.Parameters.Add("NUMEROCOMANDA", NumeroComanda);
            comando.Prepare();

            OracleDataReader leitor = comando.ExecuteReader();
            if(leitor.Read())
            {
                comanda = new ComandaResumida();
                comanda.Numero = UtilidadePersistencia.ObterValorTratado<decimal>(leitor["NUMEROCOMANDA"]);
                comanda.NumeroVenda = UtilidadePersistencia.ObterValorTratado<int>(leitor["NUMEROVENDA"]);
                comanda.Status = (StatusComanda)UtilidadePersistencia.ObterValorTratado<int>(leitor["SITUACAO"]);
                comanda.Nome = UtilidadePersistencia.ObterValorTratado<string>(leitor["NOME"]);
                comanda.Telefone = UtilidadePersistencia.ObterValorTratado<string>(leitor["TELEFONE"]);
            }

            conexao.Close();
            return comanda;
        }