LevelOS-Core/DAL/DALFuncionarios.cs

422 lines
16 KiB
C#

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<ModeloFuncionarios> Listar()
{
List<ModeloFuncionarios> lista = new List<ModeloFuncionarios>();
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<ModeloFuncionarios>
public List<ModeloFuncionarios> LocalizarOtimizado(ModeloFuncionarios filtro)
{
List<ModeloFuncionarios> lista = new List<ModeloFuncionarios>();
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
}
}