예제 #1
0
        static void Main()
        {
            string nomeProcesso = Process.GetCurrentProcess().ProcessName;

            Process[] processos = Process.GetProcessesByName(nomeProcesso);

            if (processos.Length > 1)
            {
                MessageBox.Show(
                    "Este programa já está em execução.",
                    "Programa em execução",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Information);

                Application.Exit();
            }
            else
            {
                LogSistema.AdicionarEvento("Sistema iniciado");

                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                VerificarPrimeiraExecucao();

                Application.Run(new FrmInicial());
            }
        }
예제 #2
0
        public Funcionario Buscar(ulong codigo)
        {
            Funcionario res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
select codigo, nome, usuario, senha, comissionado, funcao, salario, ultimo_pagamento
  from funcionario
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    com.Parameters["@Codigo"].Value = codigo;

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            reader.Read();

                            res = new Funcionario
                            {
                                Codigo          = Convert.ToUInt64(reader["codigo"].ToString()),
                                Nome            = reader["nome"].ToString(),
                                Usuario         = reader["usuario"].ToString(),
                                Senha           = reader["senha"].ToString(),
                                Comissionado    = Convert.ToBoolean(reader["comissionado"].ToString()),
                                Funcao          = reader["funcao"].ToString(),
                                Salario         = Convert.ToSingle(reader["salario"].ToString()),
                                UltimoPagamento = Convert.ToDateTime(reader["ultimo_pagamento"].ToString())
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao pesquisar por Funcionario: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #3
0
        public Caixa Inserir(Caixa entidade, ulong usuario = Util.Usuario.SISTEMA)
        {
            Caixa res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
insert into caixa (valor_em_caixa, data)
values (@ValorEmCaixa, @Data) returning codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@ValorEmCaixa", NpgsqlDbType.Real));
                    com.Parameters.Add(new NpgsqlParameter("@Data", NpgsqlDbType.Date));

                    com.Parameters["@ValorEmCaixa"].Value = entidade.ValorEmCaixa;
                    com.Parameters["@Data"].Value         = entidade.Data;

                    Object retorno = com.ExecuteScalar();

                    if (retorno == null)
                    {
                        res = null;
                    }
                    else
                    {
                        UInt64 codigo = Convert.ToUInt64(retorno.ToString());

                        res = entidade;

                        res.Codigo = codigo;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Caixa, Util.Acao.INSERT, com);

                        LogSistema.AdicionarEvento($"Caixa de código '{codigo}' inserida com sucesso");
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao inserir novo Caixa: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #4
0
        public List <Funcionario> ListarTodos()
        {
            List <Funcionario> res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
select codigo, nome, usuario, senha, comissionado, funcao, salario, ultimo_pagamento
  from funcionario;";

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            res = new List <Funcionario>();

                            while (reader.Read())
                            {
                                Funcionario linha = new Funcionario
                                {
                                    Codigo          = Convert.ToUInt64(reader["codigo"].ToString()),
                                    Nome            = reader["nome"].ToString(),
                                    Usuario         = reader["usuario"].ToString(),
                                    Senha           = reader["senha"].ToString(),
                                    Comissionado    = Convert.ToBoolean(reader["comissionado"].ToString()),
                                    Funcao          = reader["funcao"].ToString(),
                                    Salario         = Convert.ToSingle(reader["salario"].ToString()),
                                    UltimoPagamento = Convert.ToDateTime(reader["ultimo_pagamento"].ToString())
                                };

                                res.Add(linha);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao listar Funcionarios: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #5
0
        public List <Caixa> BuscarPorData(DateTime data)
        {
            List <Caixa> res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
select codigo, valor_em_caixa, data
  from caixa
 where data = @Data;";

                    com.Parameters.Add(new NpgsqlParameter("@Data", NpgsqlDbType.Date));

                    com.Parameters["@Data"].Value = data;

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            res = new List <Caixa>();

                            while (reader.Read())
                            {
                                Caixa linha = new Caixa
                                {
                                    Codigo       = Convert.ToUInt64(reader["codigo"].ToString()),
                                    ValorEmCaixa = Convert.ToSingle(reader["valor_em_caixa"].ToString()),
                                    Data         = Convert.ToDateTime(reader["data"].ToString())
                                };
                                res.Add(linha);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao pesquisar por Caixas: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #6
0
        public bool Atualizar(Caixa entidade, ulong usuario = Util.Usuario.SISTEMA)
        {
            bool res = false;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
update caixa
   set valor_em_caixa = @ValorEmCaixa
     , data           = @Data
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@ValorEmCaixa", NpgsqlDbType.Real));
                    com.Parameters.Add(new NpgsqlParameter("@Data", NpgsqlDbType.Date));
                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    com.Parameters["@ValorEmCaixa"].Value = entidade.ValorEmCaixa;
                    com.Parameters["@Data"].Value         = entidade.Data;
                    com.Parameters["@Codigo"].Value       = entidade.Codigo;

                    if (com.ExecuteNonQuery() > 0)
                    {
                        res = true;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Caixa, Util.Acao.UPDATE, com);

                        LogSistema.AdicionarEvento($"Caixa de código '{entidade.Codigo}' atualizada com sucesso");
                    }
                    else
                    {
                        res = false;
                    }
                }
            }
            catch (Exception ex)
            {
                res = false;

                LogSistema.AdicionarEvento($"Erro ao atualizar Caixa: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #7
0
        public bool AtualizarSenha(ulong codigo, string senha, ulong usuario)
        {
            bool res = false;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
update funcionario
   set senha = @Senha
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Senha", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    senha = MPCConfigManager.GerarSenha(senha);

                    com.Parameters["@Senha"].Value  = senha;
                    com.Parameters["@Codigo"].Value = codigo;

                    if (com.ExecuteNonQuery() > 0)
                    {
                        res = true;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Funcionario, Util.Acao.UPDATE, com);

                        LogSistema.AdicionarEvento($"Senha de Funcionario de código '{codigo}' atualizada com sucesso");
                    }
                    else
                    {
                        res = false;
                    }
                }
            }
            catch (Exception ex)
            {
                res = false;

                LogSistema.AdicionarEvento($"Erro ao atualizar senha de Funcionario: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #8
0
        public static int VerificarFuncaoBD(string nome)
        {
            int res = 0;

            VerificarConexao();

            if (con.State != ConnectionState.Open)
            {
                res = -1;

                return(res);
            }

            try
            {
                using (NpgsqlCommand comando = con.CreateCommand())
                {
                    comando.CommandType = CommandType.Text;
                    comando.CommandText = $"select '{nome}'::regproc;";

                    using (NpgsqlDataReader reader = comando.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            res = 0;
                        }
                        else
                        {
                            res = -2;
                        }
                    }
                }
            }
            catch (NpgsqlException ex)
            {
                res = -3;

                LogSistema.AdicionarEvento($"Erro ao verificar a existência de função: {ex.Message}");
            }
            catch (DbException ex)
            {
                res = -4;

                LogSistema.AdicionarEvento($"Erro ao verificar a existência de função: {ex.Message}");
            }
            catch (Exception ex)
            {
                res = -5;

                LogSistema.AdicionarEvento($"Erro genérico ao verificar a existência de função: {ex.Message}");
            }
            return(res);
        }
예제 #9
0
        public bool Remover(ulong codigo, ulong usuario)
        {
            bool res = false;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
delete from funcionario
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    com.Parameters["@Codigo"].Value = codigo;

                    if (com.ExecuteNonQuery() > 0)
                    {
                        res = true;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Funcionario, Util.Acao.DELETE, com);

                        LogSistema.AdicionarEvento($"Funcionario de código '{codigo}' removido com sucesso");
                    }
                    else
                    {
                        res = false;
                    }
                }
            }
            catch (Exception ex)
            {
                res = false;

                LogSistema.AdicionarEvento($"Erro ao remover Funcionario: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #10
0
        public static bool Inserir(ulong usuario, string tabela, string acao, DbCommand codigoExecutado)
        {
            bool res = true;

            try
            {
                NpgsqlConnection conexao = ConexaoBanco.GetConnection();
                ConexaoBanco.AbrirConexao();

                if (ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
insert into log (usuario, tabela, acao, codigo_executado)
values (@Usuario, @Tabela, @Acao, @CodigoExecutado);";

                    com.Parameters.Add(new NpgsqlParameter("@Usuario", NpgsqlDbType.Bigint));
                    com.Parameters.Add(new NpgsqlParameter("@Tabela", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Acao", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@CodigoExecutado", NpgsqlDbType.Varchar));

                    com.Parameters["@Usuario"].Value         = usuario;
                    com.Parameters["@Tabela"].Value          = tabela;
                    com.Parameters["@Acao"].Value            = acao;
                    com.Parameters["@CodigoExecutado"].Value = GetGeneratedQuery(codigoExecutado);

                    int retorno = com.ExecuteNonQuery();

                    if (retorno == 0)
                    {
                        throw new Exception("Não foi possível fazer a inclusão");
                    }
                }
            }
            catch (Exception ex)
            {
                res = false;

                LogSistema.AdicionarEvento($"Erro ao adicionar ao log: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #11
0
        public static string Buscar()
        {
            string res = null;

            try
            {
                NpgsqlConnection conexao = ConexaoBanco.GetConnection();
                ConexaoBanco.AbrirConexao();

                if (ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
select senha
  from super_usuario
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    com.Parameters["@Codigo"].Value = codigo;

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            reader.Read();

                            res = reader["senha"].ToString();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao pesquisar por Funcionario: {ex.Message}");
            }
            finally
            {
                ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #12
0
        public static int SetDefaultSchema()
        {
            int res = 0;

            try
            {
                res = SetSchema(MPCConfigManager.GetEsquemaPadrao());
            }
            catch (Exception ex)
            {
                res = -5;

                LogSistema.AdicionarEvento($"Erro genérico na definição do esquema do banco de dados: {ex.Message}");
            }
            return(res);
        }
예제 #13
0
        public static void FecharConexao()
        {
            VerificarConexao();

            if (con.State == ConnectionState.Open)
            {
                try
                {
                    con.Close();
                }
                catch (Exception ex)
                {
                    LogSistema.AdicionarEvento($"Erro no fechamento da conexão com o banco de dados: {ex.Message}");
                }
            }
        }
예제 #14
0
        public static void AbrirConexao()
        {
            VerificarConexao();

            if (con.State == ConnectionState.Closed)
            {
                try
                {
                    con.Open();
                }
                catch (Exception ex)
                {
                    LogSistema.AdicionarEvento($"Erro na abertura da conexão com o banco de dados: {ex.Message}");
                }
            }
        }
예제 #15
0
        private static void VerificarConexao()
        {
            if (con == null)
            {
                try
                {
                    con = new NpgsqlConnection(MPCConfigManager.GetDBOpcaoMPC());

                    LogSistema.AdicionarEvento("Banco de dados conectado");
                }
                catch (Exception ex)
                {
                    LogSistema.AdicionarEvento($"Erro no acesso ao banco de dados: {ex.Message}");
                }
            }
        }
예제 #16
0
        public static int SetSchema(string schema)
        {
            int res = 0;

            VerificarConexao();

            if (con.State != ConnectionState.Open)
            {
                res = -1;

                return(res);
            }

            try
            {
                using (NpgsqlCommand comando = con.CreateCommand())
                {
                    comando.CommandType = CommandType.Text;
                    comando.CommandText = $"set search_path to {schema};";
                    comando.ExecuteNonQuery();
                }
            }
            catch (NpgsqlException ex)
            {
                res = -2;

                LogSistema.AdicionarEvento($"Erro na definição do esquema do banco de dados: {ex.Message}");
            }
            catch (DbException ex)
            {
                res = -3;

                LogSistema.AdicionarEvento($"Erro na definição do esquema do banco de dados: {ex.Message}");
            }
            catch (Exception ex)
            {
                res = -4;

                LogSistema.AdicionarEvento($"Erro genérico na definição do esquema do banco de dados: {ex.Message}");
            }
            return(res);
        }
예제 #17
0
        public FrmGerencia()
        {
            InitializeComponent();

            BtnPlusMinus pmButton = new BtnPlusMinus(indice)
            {
                Location = new Point(PosXBotao, PosYInicial + MetadeLinha)
            };
            UCtrlItemVenda itVenda = new UCtrlItemVenda(indice)
            {
                Location = new Point(PosXItVenda, PosYInicial)
            };

            pmButton.Click += new EventHandler(NumLinhasAlterado);
            itVenda.AdcionarEventoPreco(new EventHandler(ParcialAlterado));

            pnlVenda.Controls.Add(pmButton);
            pnlVenda.Controls.Add(itVenda);

            listItVenda.Add(new TuplaItemVenda(pmButton, itVenda));

            LogSistema.AdicionarEvento("Sistema de gerência aberto");
        }
예제 #18
0
        public List <Caixa> BuscarEntreDatas(DateTime inicio, DateTime fim)
        {
            List <Caixa> res = null;

            if (inicio > fim)
            {
                DateTime aux;
                aux    = fim;
                fim    = inicio;
                inicio = aux;
            }
            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = $@"
select codigo, valor_em_caixa, data
  from caixa
 where data <@ daterange('[{inicio.ToString("yyyy-MM-dd")}, { fim.ToString("yyyy-MM-dd")}]')
 order by data asc;";

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            res = new List <Caixa>();

                            while (reader.Read())
                            {
                                Caixa linha = new Caixa
                                {
                                    Codigo       = Convert.ToUInt64(reader["codigo"].ToString()),
                                    ValorEmCaixa = Convert.ToSingle(reader["valor_em_caixa"].ToString()),
                                    Data         = Convert.ToDateTime(reader["data"].ToString())
                                };
                                res.Add(linha);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao pesquisar por Caixas: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #19
0
        public bool Atualizar(Funcionario entidade, ulong usuario)
        {
            bool res = false;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
update funcionario
   set nome             = @Nome
     , usuario          = @Usuario
     , comissionado     = @Comissionado
     , funcao           = @Funcao
     , salario          = @Salario
     , ultimo_pagamento = @UltimoPagamento
 where codigo = @Codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Nome", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Usuario", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Comissionado", NpgsqlDbType.Boolean));
                    com.Parameters.Add(new NpgsqlParameter("@Funcao", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Salario", NpgsqlDbType.Real));
                    com.Parameters.Add(new NpgsqlParameter("@UltimoPagamento", NpgsqlDbType.Date));
                    com.Parameters.Add(new NpgsqlParameter("@Codigo", NpgsqlDbType.Bigint));

                    com.Parameters["@Nome"].Value            = entidade.Nome;
                    com.Parameters["@Usuario"].Value         = entidade.Usuario;
                    com.Parameters["@Comissionado"].Value    = entidade.Comissionado;
                    com.Parameters["@Funcao"].Value          = entidade.Funcao;
                    com.Parameters["@Salario"].Value         = entidade.Salario;
                    com.Parameters["@UltimoPagamento"].Value = entidade.UltimoPagamento;
                    com.Parameters["@Codigo"].Value          = entidade.Codigo;

                    if (com.ExecuteNonQuery() > 0)
                    {
                        res = true;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Funcionario, Util.Acao.UPDATE, com);

                        LogSistema.AdicionarEvento($"Funcionario de código '{entidade.Codigo}' atualizado com sucesso");
                    }
                    else
                    {
                        res = false;
                    }
                }
            }
            catch (Exception ex)
            {
                res = false;

                LogSistema.AdicionarEvento($"Erro ao atualizar Funcionario: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #20
0
        public List <Funcionario> BuscarPorNome(string nome)
        {
            List <Funcionario> res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                if (Util.ConexaoBanco.VerificarFuncaoBD("limpa_string") != 0)
                {
                    throw new Exception("A função limpa_string é necessária, mas não foi definida no banco");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
select codigo, nome, usuario, senha, comissionado, funcao, salario, ultimo_pagamento
  from funcionario
 where limpa_string(nome) ilike limpa_string(@Nome)
 order by nome asc;";

                    com.Parameters.Add(new NpgsqlParameter("@Nome", NpgsqlDbType.Varchar));

                    com.Parameters["@Nome"].Value = $"%{nome}%";

                    using (NpgsqlDataReader reader = com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            res = new List <Funcionario>();

                            while (reader.Read())
                            {
                                Funcionario linha = new Funcionario
                                {
                                    Codigo          = Convert.ToUInt64(reader["codigo"].ToString()),
                                    Nome            = reader["nome"].ToString(),
                                    Usuario         = reader["usuario"].ToString(),
                                    Senha           = reader["senha"].ToString(),
                                    Comissionado    = Convert.ToBoolean(reader["comissionado"].ToString()),
                                    Funcao          = reader["funcao"].ToString(),
                                    Salario         = Convert.ToSingle(reader["salario"].ToString()),
                                    UltimoPagamento = Convert.ToDateTime(reader["ultimo_pagamento"].ToString())
                                };
                                res.Add(linha);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao pesquisar por Funcionarios: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }
예제 #21
0
        public Funcionario Inserir(Funcionario entidade, ulong usuario)
        {
            Funcionario res = null;

            try
            {
                NpgsqlConnection conexao = Util.ConexaoBanco.GetConnection();
                Util.ConexaoBanco.AbrirConexao();

                if (Util.ConexaoBanco.SetDefaultSchema() != 0)
                {
                    throw new Exception("Erro de acesso ao banco, erro na definição definição do esquema do banco de dados");
                }

                using (NpgsqlCommand com = conexao.CreateCommand())
                {
                    com.CommandType = CommandType.Text;
                    com.CommandText = @"
insert into funcionario (nome, usuario, senha, comissionado, funcao, salario, ultimo_pagamento)
values (@Nome, @Usuario, @Senha, @Comissionado, @Funcao, @Salario, @UltimoPagamento) returning codigo;";

                    com.Parameters.Add(new NpgsqlParameter("@Nome", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Usuario", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Senha", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Comissionado", NpgsqlDbType.Boolean));
                    com.Parameters.Add(new NpgsqlParameter("@Funcao", NpgsqlDbType.Varchar));
                    com.Parameters.Add(new NpgsqlParameter("@Salario", NpgsqlDbType.Real));
                    com.Parameters.Add(new NpgsqlParameter("@UltimoPagamento", NpgsqlDbType.Date));

                    entidade.Senha = MPCConfigManager.GerarSenha(entidade.Senha);

                    com.Parameters["@Nome"].Value            = entidade.Nome;
                    com.Parameters["@Usuario"].Value         = entidade.Usuario;
                    com.Parameters["@Senha"].Value           = entidade.Senha;
                    com.Parameters["@Comissionado"].Value    = entidade.Comissionado;
                    com.Parameters["@Funcao"].Value          = entidade.Funcao;
                    com.Parameters["@Salario"].Value         = entidade.Salario;
                    com.Parameters["@UltimoPagamento"].Value = entidade.UltimoPagamento;

                    Object retorno = com.ExecuteScalar();

                    if (retorno == null)
                    {
                        res = null;
                    }
                    else
                    {
                        UInt64 codigo = Convert.ToUInt64(retorno.ToString());

                        res = entidade;

                        res.Codigo = codigo;

                        Util.DAOLog.Inserir(usuario, Util.Tabela.Funcionario, Util.Acao.INSERT, com);

                        LogSistema.AdicionarEvento($"Funcionario de código '{codigo}' inserido com sucesso");
                    }
                }
            }
            catch (Exception ex)
            {
                res = null;

                LogSistema.AdicionarEvento($"Erro ao inserir novo Funcionario: {ex.Message}");
            }
            finally
            {
                Util.ConexaoBanco.FecharConexao();
            }
            return(res);
        }