using System; using System.Data; using System.Collections.Generic; using Microsoft.Data.SqlClient; using MLL; namespace DALL { public class DALFuncionarios { private readonly string _conexao; public DALFuncionarios(string conexao) { _conexao = conexao; } #region INSERT public bool Inserir(ModeloFuncionarios f) { try { using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = @"INSERT INTO Funcionarios (CODIGO, NOME, PAI, MAE, CPF, CI, CTPS, CNH, CAT_CNH, ECIVIL, REGIME, CEP, ENDERECO, ENDNUMERO, BAIRRO, CIDADE, UF, BANCO, AGENCIA, CONTA, TELEFONE, PASS, MASTERUSER, VENDEDOR, TECNICO, DEMITIDO, FTECNICO, FVENDEDOR, FPATH, OBSERV, DATA_ADM, DATA_DEM, ANIVER) VALUES (@CODIGO, @NOME, @PAI, @MAE, @CPF, @CI, @CTPS, @CNH, @CAT_CNH, @ECIVIL, @REGIME, @CEP, @ENDERECO, @ENDNUMERO, @BAIRRO, @CIDADE, @UF, @BANCO, @AGENCIA, @CONTA, @TELEFONE, @PASS, @MASTERUSER, @VENDEDOR, @TECNICO, @DEMITIDO, @FTECNICO, @FVENDEDOR, @FPATH, @OBSERV, @DATA_ADM, @DATA_DEM, @ANIVER)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { PreencherParametros(cmd, f); conn.Open(); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } } #endregion #region UPDATE public bool Alterar(ModeloFuncionarios f) { try { using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = @"UPDATE Funcionarios SET CODIGO=@CODIGO, NOME=@NOME, PAI=@PAI, MAE=@MAE, CPF=@CPF, CI=@CI, CTPS=@CTPS, CNH=@CNH, CAT_CNH=@CAT_CNH, ECIVIL=@ECIVIL, REGIME=@REGIME, CEP=@CEP, ENDERECO=@ENDERECO, ENDNUMERO=@ENDNUMERO, BAIRRO=@BAIRRO, CIDADE=@CIDADE, UF=@UF, BANCO=@BANCO, AGENCIA=@AGENCIA, CONTA=@CONTA, TELEFONE=@TELEFONE, PASS=@PASS, MASTERUSER=@MASTERUSER, VENDEDOR=@VENDEDOR, TECNICO=@TECNICO, DEMITIDO=@DEMITIDO, FTECNICO=@FTECNICO, FVENDEDOR=@FVENDEDOR, FPATH=@FPATH, OBSERV=@OBSERV, DATA_ADM=@DATA_ADM, DATA_DEM=@DATA_DEM, ANIVER=@ANIVER WHERE ID_FUNCIONARIO=@ID"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { PreencherParametros(cmd, f); cmd.Parameters.AddWithValue("@ID", f.ID_FUNCIONARIO); conn.Open(); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } } #endregion #region DELETE public bool Excluir(int id) { try { using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "DELETE FROM Funcionarios WHERE ID_FUNCIONARIO=@ID"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@ID", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } } #endregion #region SELECT BY ID public ModeloFuncionarios Carregar(int id) { ModeloFuncionarios f = null; using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "SELECT * FROM Funcionarios WHERE ID_FUNCIONARIO=@ID"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@ID", id); conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { f = new ModeloFuncionarios(); PreencherModelo(f, dr); } } } } return f; } #endregion #region SELECT LISTA public List Listar() { List lista = new List(); using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "SELECT * FROM Funcionarios"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { ModeloFuncionarios f = new ModeloFuncionarios(); PreencherModelo(f, dr); lista.Add(f); } } } } return lista; }//List public List LocalizarOtimizado(ModeloFuncionarios filtro) { List lista = new List(); using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "SELECT * FROM Funcionarios WHERE 1=1 "; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; // 🔎 FILTROS DINÂMICOS if (!string.IsNullOrEmpty(filtro.CODIGO)) { sql += " AND CODIGO LIKE @CODIGO"; cmd.Parameters.AddWithValue("@CODIGO", "%" + filtro.CODIGO + "%"); } if (!string.IsNullOrEmpty(filtro.NOME)) { sql += " AND NOME LIKE @NOME"; cmd.Parameters.AddWithValue("@NOME", "%" + filtro.NOME + "%"); } if (!string.IsNullOrEmpty(filtro.CPF)) { sql += " AND CPF = @CPF"; cmd.Parameters.AddWithValue("@CPF", filtro.CPF); } if (!string.IsNullOrEmpty(filtro.CIDADE)) { sql += " AND CIDADE LIKE @CIDADE"; cmd.Parameters.AddWithValue("@CIDADE", "%" + filtro.CIDADE + "%"); } if (!string.IsNullOrEmpty(filtro.UF)) { sql += " AND UF = @UF"; cmd.Parameters.AddWithValue("@UF", filtro.UF); } if (!string.IsNullOrEmpty(filtro.TELEFONE)) { sql += " AND TELEFONE LIKE @TEL"; cmd.Parameters.AddWithValue("@TEL", "%" + filtro.TELEFONE + "%"); } // 🔹 BOOL (BIT) if (filtro.VENDEDOR) { sql += " AND VENDEDOR = @VENDEDOR"; cmd.Parameters.AddWithValue("@VENDEDOR", true); } if (filtro.TECNICO) { sql += " AND TECNICO = @TECNICO"; cmd.Parameters.AddWithValue("@TECNICO", true); } if (filtro.DEMITIDO) { sql += " AND DEMITIDO = @DEMITIDO"; cmd.Parameters.AddWithValue("@DEMITIDO", true); } // 🔹 DATAS if (filtro.DATA_ADM.HasValue) { sql += " AND DATA_ADM = @DATA_ADM"; cmd.Parameters.AddWithValue("@DATA_ADM", filtro.DATA_ADM.Value); } if (filtro.DATA_DEM.HasValue) { sql += " AND DATA_DEM = @DATA_DEM"; cmd.Parameters.AddWithValue("@DATA_DEM", filtro.DATA_DEM.Value); } // 🔥 ORDENAÇÃO (importante) sql += " ORDER BY NOME"; cmd.CommandText = sql; conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { ModeloFuncionarios f = new ModeloFuncionarios(); PreencherModelo(f, dr); lista.Add(f); } } } return lista; }//LocalizarOtimizado public string ObterNomePorCodigo(string codigo) { try { using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "SELECT NOME FROM Funcionarios WHERE CODIGO = @CODIGO"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@CODIGO", codigo); conn.Open(); object result = cmd.ExecuteScalar(); return result != null ? result.ToString() : null; } } } catch { return null; } }//ObterNomePorCodigo public ModeloFuncionarios CarregarPorCodigo(string codigo) { ModeloFuncionarios f = null; using (SqlConnection conn = new SqlConnection(_conexao)) { string sql = "SELECT * FROM Funcionarios WHERE CODIGO = @CODIGO"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@CODIGO", codigo); conn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { f = new ModeloFuncionarios(); PreencherModelo(f, dr); } } } } return f; }//CarregarPorCodigo #endregion #region PARAMETROS private void PreencherParametros(SqlCommand cmd, ModeloFuncionarios f) { cmd.Parameters.AddWithValue("@CODIGO", (object?)f.CODIGO ?? DBNull.Value); cmd.Parameters.AddWithValue("@NOME", (object?)f.NOME ?? DBNull.Value); cmd.Parameters.AddWithValue("@PAI", (object?)f.PAI ?? DBNull.Value); cmd.Parameters.AddWithValue("@MAE", (object?)f.MAE ?? DBNull.Value); cmd.Parameters.AddWithValue("@CPF", (object?)f.CPF ?? DBNull.Value); cmd.Parameters.AddWithValue("@CI", (object?)f.CI ?? DBNull.Value); cmd.Parameters.AddWithValue("@CTPS", (object?)f.CTPS ?? DBNull.Value); cmd.Parameters.AddWithValue("@CNH", (object?)f.CNH ?? DBNull.Value); cmd.Parameters.AddWithValue("@CAT_CNH", (object?)f.CAT_CNH ?? DBNull.Value); cmd.Parameters.AddWithValue("@ECIVIL", (object?)f.ECIVIL ?? DBNull.Value); cmd.Parameters.AddWithValue("@REGIME", (object?)f.REGIME ?? DBNull.Value); cmd.Parameters.AddWithValue("@CEP", (object?)f.CEP ?? DBNull.Value); cmd.Parameters.AddWithValue("@ENDERECO", (object?)f.ENDERECO ?? DBNull.Value); cmd.Parameters.AddWithValue("@ENDNUMERO", (object?)f.ENDNUMERO ?? DBNull.Value); cmd.Parameters.AddWithValue("@BAIRRO", (object?)f.BAIRRO ?? DBNull.Value); cmd.Parameters.AddWithValue("@CIDADE", (object?)f.CIDADE ?? DBNull.Value); cmd.Parameters.AddWithValue("@UF", (object?)f.UF ?? DBNull.Value); cmd.Parameters.AddWithValue("@BANCO", (object?)f.BANCO ?? DBNull.Value); cmd.Parameters.AddWithValue("@AGENCIA", (object?)f.AGENCIA ?? DBNull.Value); cmd.Parameters.AddWithValue("@CONTA", (object?)f.CONTA ?? DBNull.Value); cmd.Parameters.AddWithValue("@TELEFONE", (object?)f.TELEFONE ?? DBNull.Value); cmd.Parameters.AddWithValue("@PASS", (object?)f.PASS ?? DBNull.Value); cmd.Parameters.AddWithValue("@MASTERUSER", f.MASTERUSER); cmd.Parameters.AddWithValue("@VENDEDOR", f.VENDEDOR); cmd.Parameters.AddWithValue("@TECNICO", f.TECNICO); cmd.Parameters.AddWithValue("@DEMITIDO", f.DEMITIDO); cmd.Parameters.AddWithValue("@FTECNICO", (object?)f.FTECNICO ?? DBNull.Value); cmd.Parameters.AddWithValue("@FVENDEDOR", (object?)f.FVENDEDOR ?? DBNull.Value); cmd.Parameters.AddWithValue("@FPATH", (object?)f.FPATH ?? DBNull.Value); cmd.Parameters.AddWithValue("@OBSERV", (object?)f.OBSERV ?? DBNull.Value); cmd.Parameters.AddWithValue("@DATA_ADM", f.DATA_ADM ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@DATA_DEM", f.DATA_DEM ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@ANIVER", f.ANIVER ?? (object)DBNull.Value); } #endregion #region MODEL private void PreencherModelo(ModeloFuncionarios f, SqlDataReader dr) { f.ID_FUNCIONARIO = Convert.ToInt32(dr["ID_FUNCIONARIO"]); f.CODIGO = dr["CODIGO"]?.ToString(); f.NOME = dr["NOME"]?.ToString(); f.PAI = dr["PAI"]?.ToString(); f.MAE = dr["MAE"]?.ToString(); f.CPF = dr["CPF"]?.ToString(); f.CI = dr["CI"]?.ToString(); f.CTPS = dr["CTPS"]?.ToString(); f.CNH = dr["CNH"]?.ToString(); f.CAT_CNH = dr["CAT_CNH"]?.ToString(); f.ECIVIL = dr["ECIVIL"]?.ToString(); f.REGIME = dr["REGIME"]?.ToString(); f.CEP = dr["CEP"]?.ToString(); f.ENDERECO = dr["ENDERECO"]?.ToString(); f.ENDNUMERO = dr["ENDNUMERO"]?.ToString(); f.BAIRRO = dr["BAIRRO"]?.ToString(); f.CIDADE = dr["CIDADE"]?.ToString(); f.UF = dr["UF"]?.ToString(); f.BANCO = dr["BANCO"]?.ToString(); f.AGENCIA = dr["AGENCIA"]?.ToString(); f.CONTA = dr["CONTA"]?.ToString(); f.TELEFONE = dr["TELEFONE"]?.ToString(); f.PASS = dr["PASS"]?.ToString(); f.MASTERUSER = dr["MASTERUSER"] != DBNull.Value && Convert.ToBoolean(dr["MASTERUSER"]); f.VENDEDOR = dr["VENDEDOR"] != DBNull.Value && Convert.ToBoolean(dr["VENDEDOR"]); f.TECNICO = dr["TECNICO"] != DBNull.Value && Convert.ToBoolean(dr["TECNICO"]); f.DEMITIDO = dr["DEMITIDO"] != DBNull.Value && Convert.ToBoolean(dr["DEMITIDO"]); f.FTECNICO = dr["FTECNICO"]?.ToString(); f.FVENDEDOR = dr["FVENDEDOR"]?.ToString(); f.FPATH = dr["FPATH"]?.ToString(); f.OBSERV = dr["OBSERV"]?.ToString(); f.DATA_ADM = dr["DATA_ADM"] == DBNull.Value ? null : (DateTime?)Convert.ToDateTime(dr["DATA_ADM"]); f.DATA_DEM = dr["DATA_DEM"] == DBNull.Value ? null : (DateTime?)Convert.ToDateTime(dr["DATA_DEM"]); f.ANIVER = dr["ANIVER"] == DBNull.Value ? null : (DateTime?)Convert.ToDateTime(dr["ANIVER"]); } #endregion } }