using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALIBPT { private readonly string connectionString; public DALIBPT(string conexao) { connectionString = conexao; } #region INSERT public bool Inserir(ModeloIBPT modelo) { using SqlConnection conn = new(connectionString); string sql = @" INSERT INTO IBPT ( NCM, NacionalFederal, ImportadosFederal, Estadual, Municipal, Tipo ) VALUES ( @NCM, @NacionalFederal, @ImportadosFederal, @Estadual, @Municipal, @Tipo )"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } #endregion #region UPDATE public bool Alterar(ModeloIBPT modelo) { using SqlConnection conn = new(connectionString); string sql = @" UPDATE IBPT SET NCM=@NCM, NacionalFederal=@NacionalFederal, ImportadosFederal=@ImportadosFederal, Estadual=@Estadual, Municipal=@Municipal, Tipo=@Tipo WHERE ID_IBPT=@ID_IBPT"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); cmd.Parameters.AddWithValue("@ID_IBPT", modelo.ID_IBPT); conn.Open(); return cmd.ExecuteNonQuery() > 0; } #endregion #region DELETE public bool Excluir(int id) { using SqlConnection conn = new(connectionString); string sql = @"DELETE FROM IBPT WHERE ID_IBPT=@ID"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@ID", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } #endregion #region CARREGAR public ModeloIBPT? Carregar(int id) { using SqlConnection conn = new(connectionString); string sql = @"SELECT * FROM IBPT WHERE ID_IBPT=@ID"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@ID", id); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return PreencherModelo(dr); return null; } #endregion #region CARREGAR POR NCM public ModeloIBPT? CarregarPorNCM(string ncm) { using SqlConnection conn = new(connectionString); string sql = @"SELECT * FROM IBPT WHERE NCM=@NCM"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@NCM", ncm); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return PreencherModelo(dr); return null; } #endregion #region LISTAR public List Listar( string? codigo = null, string? ncm = null, string? tipo = null) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @"SELECT * FROM IBPT WHERE 1=1"; using SqlCommand cmd = new(); if (!string.IsNullOrWhiteSpace(codigo)) { sql += " AND CODIGO LIKE @CODIGO"; cmd.Parameters.AddWithValue( "@CODIGO", "%" + codigo + "%"); } if (!string.IsNullOrWhiteSpace(ncm)) { sql += " AND NCM LIKE @NCM"; cmd.Parameters.AddWithValue( "@NCM", "%" + ncm + "%"); } if (!string.IsNullOrWhiteSpace(tipo)) { sql += " AND Tipo=@Tipo"; cmd.Parameters.AddWithValue( "@Tipo", tipo); } sql += " ORDER BY NCM"; cmd.Connection = conn; cmd.CommandText = sql; conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } #endregion #region PREENCHER MODELO private ModeloIBPT PreencherModelo(SqlDataReader dr) { return new ModeloIBPT { ID_IBPT = Convert.ToInt32(dr["ID_IBPT"]), CODIGO = Convert.ToString(dr["CODIGO"]) ?? "", NCM = Convert.ToString(dr["NCM"]) ?? "", NacionalFederal = Convert.ToString(dr["NacionalFederal"]) ?? "", ImportadosFederal = Convert.ToString(dr["ImportadosFederal"]) ?? "", Estadual = Convert.ToString(dr["Estadual"]) ?? "", Municipal = Convert.ToString(dr["Municipal"]) ?? "", Tipo = Convert.ToString(dr["Tipo"]) ?? "" }; } #endregion #region PREENCHER PARÂMETROS private void PreencherParametros( SqlCommand cmd, ModeloIBPT modelo) { cmd.Parameters.AddWithValue( "@NCM", modelo.NCM); cmd.Parameters.AddWithValue( "@NacionalFederal", modelo.NacionalFederal); cmd.Parameters.AddWithValue( "@ImportadosFederal", modelo.ImportadosFederal); cmd.Parameters.AddWithValue( "@Estadual", modelo.Estadual); cmd.Parameters.AddWithValue( "@Municipal", modelo.Municipal); cmd.Parameters.AddWithValue( "@Tipo", modelo.Tipo); } #endregion #region EXISTE NCM public bool ExisteNCM(string ncm) { using SqlConnection conn = new(connectionString); string sql = @" SELECT COUNT(*) FROM IBPT WHERE NCM=@NCM"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@NCM", ncm); conn.Open(); return Convert.ToInt32(cmd.ExecuteScalar()) > 0; } #endregion #region LISTAR POR TIPO public List ListarPorTipo(string tipo) { return Listar(tipo: tipo); } #endregion #region PRODUTOS public List ListarProdutos() { return Listar(tipo: "P"); } #endregion #region SERVIÇOS public List ListarServicos() { return Listar(tipo: "S"); } #endregion #region TOTAL REGISTROS public int QuantidadeTotal() { using SqlConnection conn = new(connectionString); string sql = "SELECT COUNT(*) FROM IBPT"; using SqlCommand cmd = new(sql, conn); conn.Open(); return Convert.ToInt32(cmd.ExecuteScalar()); } #endregion #region PRIMEIRO REGISTRO public ModeloIBPT? PrimeiroRegistro() { using SqlConnection conn = new(connectionString); string sql = @" SELECT TOP 1 * FROM IBPT ORDER BY ID_IBPT"; using SqlCommand cmd = new(sql, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return PreencherModelo(dr); return null; } #endregion #region ÚLTIMO REGISTRO public ModeloIBPT? UltimoRegistro() { using SqlConnection conn = new(connectionString); string sql = @" SELECT TOP 1 * FROM IBPT ORDER BY ID_IBPT DESC"; using SqlCommand cmd = new(sql, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return PreencherModelo(dr); return null; } #endregion #region DASHBOARD public DataTable Dashboard() { using SqlConnection conn = new(connectionString); string sql = @" SELECT COUNT(*) TOTAL_REGISTROS, SUM( CASE WHEN Tipo='P' THEN 1 ELSE 0 END ) PRODUTOS, SUM( CASE WHEN Tipo='S' THEN 1 ELSE 0 END ) SERVICOS FROM IBPT"; DataTable dt = new(); using SqlDataAdapter da = new(sql, conn); da.Fill(dt); return dt; } #endregion #region BUSCAR NCM public List ListarNCMFaixa(string inicioNcm) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM IBPT WHERE NCM LIKE @NCM ORDER BY NCM"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@NCM", inicioNcm + "%"); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } #endregion #region CARREGAR POR CÓDIGO public ModeloIBPT? CarregarPorCodigo(string codigo) { using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM IBPT WHERE CODIGO=@CODIGO"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@CODIGO", codigo); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return PreencherModelo(dr); return null; } #endregion } }