LevelOS-Core/DAL/DALIBPT.cs

480 lines
11 KiB
C#

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<ModeloIBPT> Listar(
string? codigo = null,
string? ncm = null,
string? tipo = null)
{
List<ModeloIBPT> 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<ModeloIBPT> ListarPorTipo(string tipo)
{
return Listar(tipo: tipo);
}
#endregion
#region PRODUTOS
public List<ModeloIBPT> ListarProdutos()
{
return Listar(tipo: "P");
}
#endregion
#region SERVIÇOS
public List<ModeloIBPT> 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<ModeloIBPT> ListarNCMFaixa(string inicioNcm)
{
List<ModeloIBPT> 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
}
}