private void btnPesquisar_Click(object sender, RoutedEventArgs e)
        {
            Servico servico = new Servico() { Nome = this.txtNomePesquisa.Text };
            List<Servico> servicos =
                Persistencia.PersistenciaServico.ConsultarServicos(servico, false);

            this.dataGrid.DataContext = servicos;
        }
        public static int GravarServico(Servico Servico)
        {
            int codigo = PersistenciaOracle.ObterProximoCodigo("SERVICO");

            OracleConnection conexao = PersistenciaOracle.ObterConexao();
            conexao.Open();
            OracleCommand comando = new OracleCommand("INSERT INTO SERVICO(CODIGO,NOME,DESCRICAO,DTINCLUSAO,VALORFORMATADO) VALUES(:CODIGO,:NOME,:DESCRICAO,:DTINCLUSAO,:VALORFORMATADO)");
            comando.Connection = conexao;
            comando.Parameters.Add("CODIGO", codigo);
            comando.Parameters.Add("NOME", Servico.Nome);
            comando.Parameters.Add("DESCRICAO", Servico.Descricao);
            comando.Parameters.Add("DTINCLUSAO", DateTime.Now);
            comando.Parameters.Add("VALORFORMATADO", Servico.ValorFormatado);

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

            return codigo;
        }
        public static void AtualizarServico(Servico Servico)
        {
            String comandoSql =
                @"UPDATE SERVICO SET NOME = :NOME, DESCRICAO = :DESCRICAO, DTINATIVACAO = :DTINATIVACAO, VALORFORMATADO = :VALORFORMATADO WHERE CODIGO = :CODIGO";

            OracleConnection conexao = PersistenciaOracle.ObterConexao();
            conexao.Open();

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

            comando.Parameters.Add("NOME", Servico.Nome);
            comando.Parameters.Add("DESCRICAO", Servico.Descricao);
            comando.Parameters.Add("DTINATIVACAO", Servico.DtInativacao);
            comando.Parameters.Add("VALORFORMATADO", Servico.ValorFormatado);

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

            comando.Prepare();
            comando.ExecuteNonQuery();
            conexao.Close();
        }
        public static List<Servico> ConsultarServicos(Servico Servico, bool ApenasAtivos)
        {
            String comandoSql = "SELECT NOME,CODIGO,DTINATIVACAO,DTINCLUSAO,DESCRICAO,VALORFORMATADO FROM SERVICO WHERE 1 = 1 ";

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

            if (ApenasAtivos)
            {
                comandoSql += " AND DTINATIVACAO IS NULL ";
            }

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

            List<Servico> atendentes = new List<Servico>();
            OracleDataReader leitor = comando.ExecuteReader();
            while (leitor.Read())
            {
                Servico srv = new Servico();
                srv.Nome = UtilidadePersistencia.ObterValorTratado<String>(leitor[0]);
                srv.Codigo = UtilidadePersistencia.ObterValorTratado<int>(leitor[1]);
                srv.DtInativacao = UtilidadePersistencia.ObterValorDateTimeTratado<DateTime?>(leitor[2]);
                srv.DtInclusao = UtilidadePersistencia.ObterValorDateTimeTratado<DateTime?>(leitor[3]);
                srv.Descricao = UtilidadePersistencia.ObterValorTratado<String>(leitor[4]);
                srv.ValorFormatado = UtilidadePersistencia.ObterValorTratado<String>(leitor[5]);

                atendentes.Add(srv);
            }
            conexao.Close();
            return atendentes;
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(this.txtNome.Text))
            {
                Mensagens.ExibirMensagemAlerta(this, "É obrigatório preencher o nome.", this.txtNome);
                return;
            }

            if (string.IsNullOrEmpty(txtValor.Text))
            {
                Mensagens.ExibirMensagemAlerta(this, "É obrigatório preencher o valor.", this.txtValor);
                return;
            }

            Servico srv = new Servico();
            srv.Nome = this.txtNome.Text;
            srv.Descricao = this.txtDescricao.Text;
            srv.ValorFormatado = txtValor.Text;

            if (this.checkBox.IsChecked.GetValueOrDefault())
            {
                srv.DtInativacao = DateTime.Now;
            }

            if (!this.EstadoDeAlteracao)
            {
                if(PersistenciaServico.ConsultarServicos(new Servico { Nome = srv.Nome },false).Count() > 0)
                {
                    Mensagens.ExibirMensagemAlerta(this, "Já existe um serviço cadastrado com este nome!");
                    return;
                }
                Persistencia.PersistenciaServico.GravarServico(srv);
                Log.RegistrarMensagemLog("Serviço " + srv.Nome + " foi cadastrado!");
            }
            else
            {
                srv.Codigo = this.CodigoEmAlteracao;
                Persistencia.PersistenciaServico.AtualizarServico(srv);
                Log.RegistrarMensagemLog("Serviço " + srv.Nome + " foi alterado!");
            }

            Mensagens.ExibirMensagemAlerta(this, "Ação realizada com sucesso.");

            this.LimparTela();
        }
        private void PreencherDadosNaTela(Servico srv)
        {
            this.txtNome.Text = srv.Nome;
            this.txtDescricao.Text = srv.Descricao;
            //this.maskedTextBox.Text = srv.ValorFormatado;
            this.txtValor.Text = srv.ValorFormatado;

            if (srv.DtInativacao != null && srv.DtInativacao != default(DateTime?))
            {
                this.checkBox.IsChecked = true;
            }
        }
        private void ColocarTelaEmEstadoAlteracao(Servico srv)
        {
            this.CodigoEmAlteracao = srv.Codigo;
            PreencherDadosNaTela(srv);

            this.EstadoDeAlteracao = true;
            this.checkBox.IsEnabled = true;
            tabControl.SelectedIndex = 1;
        }