LevelOS-Core/DAL/DALLBoletos.cs

674 lines
22 KiB
C#

using Microsoft.Data.SqlClient;
using MLL;
using System;
using System.Collections.Generic;
using System.Data;
namespace DAL
{
public class DALLBoletos
{
private readonly string connectionString;
public DALLBoletos(string connectionString)
{
this.connectionString = connectionString;
}//Contrutor
public bool Inserir(ModeloBoletos modelo)
{
using SqlConnection conn = new(connectionString);
string query = @"
INSERT INTO Boletos
(
EMITIDO,
VENCE,
VALOR,
NUMERO,
PG,
SACADO,
CONTA,
OBSERVACAO,
COD_CONTA,
NOSSO_NUMERO,
ACEITE,
IMPRESSO,
IMPORTACAO,
CHAVE_BOLETO,
LINHA_DIGITAVEL,
DT_PAGAMENTO,
VL_PAGO,
VL_MULTA,
VL_DESCONTO,
ARQUIVO_NOME,
ARQUIVO_TIPO,
ARQUIVO_CAMINHO,
ARQUIVO_DADOS,
DT_CADASTRO,
DT_ALTERACAO,
ID_USUARIO,
STATUS
)
VALUES
(
@EMITIDO,
@VENCE,
@VALOR,
@NUMERO,
@PG,
@SACADO,
@CONTA,
@OBSERVACAO,
@COD_CONTA,
@NOSSO_NUMERO,
@ACEITE,
@IMPRESSO,
@IMPORTACAO,
@CHAVE_BOLETO,
@LINHA_DIGITAVEL,
@DT_PAGAMENTO,
@VL_PAGO,
@VL_MULTA,
@VL_DESCONTO,
@ARQUIVO_NOME,
@ARQUIVO_TIPO,
@ARQUIVO_CAMINHO,
@ARQUIVO_DADOS,
@DT_CADASTRO,
@DT_ALTERACAO,
@ID_USUARIO,
@STATUS
)";
using SqlCommand cmd = new(query, conn);
PreencherParametrosInserir(cmd, modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//inserir
public bool Alterar(ModeloBoletos modelo)
{
using SqlConnection conn = new(connectionString);
string query = @"
UPDATE Boletos
SET
CODIGO = @CODIGO,
EMITIDO = @EMITIDO,
VENCE = @VENCE,
VALOR = @VALOR,
NUMERO = @NUMERO,
PG = @PG,
SACADO = @SACADO,
CONTA = @CONTA,
OBSERVACAO = @OBSERVACAO,
COD_CONTA = @COD_CONTA,
NOSSO_NUMERO = @NOSSO_NUMERO,
ACEITE = @ACEITE,
IMPRESSO = @IMPRESSO,
IMPORTACAO = @IMPORTACAO,
CHAVE_BOLETO = @CHAVE_BOLETO,
LINHA_DIGITAVEL = @LINHA_DIGITAVEL,
DT_PAGAMENTO = @DT_PAGAMENTO,
VL_PAGO = @VL_PAGO,
VL_MULTA = @VL_MULTA,
VL_DESCONTO = @VL_DESCONTO,
ARQUIVO_NOME = @ARQUIVO_NOME,
ARQUIVO_TIPO = @ARQUIVO_TIPO,
ARQUIVO_CAMINHO = @ARQUIVO_CAMINHO,
ARQUIVO_DADOS = @ARQUIVO_DADOS,
DT_ALTERACAO = @DT_ALTERACAO,
ID_USUARIO = @ID_USUARIO,
STATUS = @STATUS
WHERE ID_BOLETO = @ID_BOLETO";
using SqlCommand cmd = new(query, conn);
PreencherParametrosAlterar(cmd, modelo);
cmd.Parameters.AddWithValue("@ID_BOLETO", modelo.ID_BOLETO);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//alterar
public bool Excluir(int id)
{
using SqlConnection conn = new(connectionString);
string query = "DELETE FROM Boletos WHERE ID_BOLETO = @ID_BOLETO";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@ID_BOLETO", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//excluir
public ModeloBoletos? ObterPorId(int id)
{
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos WHERE ID_BOLETO = @ID_BOLETO";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@ID_BOLETO", id);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
return PreencherModelo(dr);
}
return null;
}//ObterPoriD
public ModeloBoletos CarregarModeloBoletos(int id)
{
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos WHERE ID_BOLETO = @ID_BOLETO";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@ID_BOLETO", id);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
return PreencherModelo(dr);
}
return null;
}//CarregarModeloBoletos
public List<ModeloBoletos> Listar()
{
List<ModeloBoletos> lista = [];
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos ORDER BY ID_BOLETO DESC";
using SqlCommand cmd = new(query, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(PreencherModelo(dr));
}
return lista;
}//Listar
public List<ModeloBoletos> ListarPorStatus(string status)
{
List<ModeloBoletos> lista = [];
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos WHERE STATUS = @STATUS ORDER BY ID_BOLETO DESC";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@STATUS", status);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(PreencherModelo(dr));
}
return lista;
}//ListarPorStatus
public List<ModeloBoletos> ListarPorPeriodo(DateTime dataInicio, DateTime dataFim)
{
List<ModeloBoletos> lista = [];
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos WHERE EMITIDO BETWEEN @DATA_INICIO AND @DATA_FIM ORDER BY ID_BOLETO DESC";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@DATA_INICIO", dataInicio);
cmd.Parameters.AddWithValue("@DATA_FIM", dataFim);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(PreencherModelo(dr));
}
return lista;
}//ListarPorPeriodo
public List<ModeloBoletos> ListarPorSacado(string sacado)
{
List<ModeloBoletos> lista = [];
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Boletos WHERE SACADO LIKE @SACADO ORDER BY ID_BOLETO DESC";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@SACADO", $"%{sacado}%");
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(PreencherModelo(dr));
}
return lista;
}//ListarPorSacado
private static ModeloBoletos PreencherModelo(SqlDataReader dr)
{
return new ModeloBoletos
{
ID_BOLETO = Convert.ToInt32(dr["ID_BOLETO"]),
CODIGO = Convert.ToString(dr["CODIGO"]) ?? string.Empty,
NUMERO = Convert.ToString(dr["NUMERO"]) ?? string.Empty,
NOSSO_NUMERO = Convert.ToString(dr["NOSSO_NUMERO"]) ?? string.Empty,
CHAVE_BOLETO = Convert.ToString(dr["CHAVE_BOLETO"]) ?? string.Empty,
LINHA_DIGITAVEL = Convert.ToString(dr["LINHA_DIGITAVEL"]) ?? string.Empty,
EMITIDO = dr["EMITIDO"] == DBNull.Value
? null
: Convert.ToDateTime(dr["EMITIDO"]),
VENCE = dr["VENCE"] == DBNull.Value
? null
: Convert.ToDateTime(dr["VENCE"]),
DT_PAGAMENTO = dr["DT_PAGAMENTO"] == DBNull.Value
? null
: Convert.ToDateTime(dr["DT_PAGAMENTO"]),
VALOR = dr["VALOR"] == DBNull.Value
? 0m
: Convert.ToDecimal(dr["VALOR"]),
VL_PAGO = dr["VL_PAGO"] == DBNull.Value
? null
: Convert.ToDecimal(dr["VL_PAGO"]),
VL_MULTA = dr["VL_MULTA"] == DBNull.Value
? null
: Convert.ToDecimal(dr["VL_MULTA"]),
VL_DESCONTO = dr["VL_DESCONTO"] == DBNull.Value
? null
: Convert.ToDecimal(dr["VL_DESCONTO"]),
STATUS = Convert.ToString(dr["STATUS"]) ?? "ABERTO",
PG = Convert.ToBoolean(dr["PG"]),
ACEITE = Convert.ToBoolean(dr["ACEITE"]),
IMPRESSO = Convert.ToBoolean(dr["IMPRESSO"]),
IMPORTACAO = Convert.ToBoolean(dr["IMPORTACAO"]),
SACADO = Convert.ToString(dr["SACADO"]) ?? string.Empty,
CONTA = Convert.ToString(dr["CONTA"]) ?? string.Empty,
COD_CONTA = Convert.ToString(dr["COD_CONTA"]) ?? string.Empty,
ARQUIVO_NOME = Convert.ToString(dr["ARQUIVO_NOME"]) ?? string.Empty,
ARQUIVO_TIPO = Convert.ToString(dr["ARQUIVO_TIPO"]) ?? string.Empty,
ARQUIVO_CAMINHO = Convert.ToString(dr["ARQUIVO_CAMINHO"]) ?? string.Empty,
ARQUIVO_DADOS = dr["ARQUIVO_DADOS"] == DBNull.Value
? null
: (byte[])dr["ARQUIVO_DADOS"],
OBSERVACAO = Convert.ToString(dr["OBSERVACAO"]) ?? string.Empty,
DT_CADASTRO = Convert.ToDateTime(dr["DT_CADASTRO"]),
DT_ALTERACAO = dr["DT_ALTERACAO"] == DBNull.Value
? null
: Convert.ToDateTime(dr["DT_ALTERACAO"]),
ID_USUARIO = dr["ID_USUARIO"] == DBNull.Value
? null
: Convert.ToInt32(dr["ID_USUARIO"])
};
}
private static void PreencherParametrosInserir(SqlCommand cmd, ModeloBoletos modelo)
{
cmd.Parameters.AddWithValue("@EMITIDO",
modelo.EMITIDO.HasValue
? modelo.EMITIDO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VENCE",
modelo.VENCE.HasValue
? modelo.VENCE.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VALOR", modelo.VALOR);
cmd.Parameters.AddWithValue("@NUMERO",
string.IsNullOrWhiteSpace(modelo.NUMERO)
? DBNull.Value
: modelo.NUMERO);
cmd.Parameters.AddWithValue("@PG", modelo.PG);
cmd.Parameters.AddWithValue("@SACADO",
string.IsNullOrWhiteSpace(modelo.SACADO)
? DBNull.Value
: modelo.SACADO);
cmd.Parameters.AddWithValue("@CONTA",
string.IsNullOrWhiteSpace(modelo.CONTA)
? DBNull.Value
: modelo.CONTA);
cmd.Parameters.AddWithValue("@OBSERVACAO",
string.IsNullOrWhiteSpace(modelo.OBSERVACAO)
? DBNull.Value
: modelo.OBSERVACAO);
cmd.Parameters.AddWithValue("@COD_CONTA",
string.IsNullOrWhiteSpace(modelo.COD_CONTA)
? DBNull.Value
: modelo.COD_CONTA);
cmd.Parameters.AddWithValue("@NOSSO_NUMERO",
string.IsNullOrWhiteSpace(modelo.NOSSO_NUMERO)
? DBNull.Value
: modelo.NOSSO_NUMERO);
cmd.Parameters.AddWithValue("@ACEITE", modelo.ACEITE);
cmd.Parameters.AddWithValue("@IMPRESSO", modelo.IMPRESSO);
cmd.Parameters.AddWithValue("@IMPORTACAO", modelo.IMPORTACAO);
cmd.Parameters.AddWithValue("@CHAVE_BOLETO",
string.IsNullOrWhiteSpace(modelo.CHAVE_BOLETO)
? DBNull.Value
: modelo.CHAVE_BOLETO);
cmd.Parameters.AddWithValue("@LINHA_DIGITAVEL",
string.IsNullOrWhiteSpace(modelo.LINHA_DIGITAVEL)
? DBNull.Value
: modelo.LINHA_DIGITAVEL);
cmd.Parameters.AddWithValue("@DT_PAGAMENTO",
modelo.DT_PAGAMENTO.HasValue
? modelo.DT_PAGAMENTO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_PAGO",
modelo.VL_PAGO.HasValue
? modelo.VL_PAGO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_MULTA",
modelo.VL_MULTA.HasValue
? modelo.VL_MULTA.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_DESCONTO",
modelo.VL_DESCONTO.HasValue
? modelo.VL_DESCONTO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@ARQUIVO_NOME",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_NOME)
? DBNull.Value
: modelo.ARQUIVO_NOME);
cmd.Parameters.AddWithValue("@ARQUIVO_TIPO",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_TIPO)
? DBNull.Value
: modelo.ARQUIVO_TIPO);
cmd.Parameters.AddWithValue("@ARQUIVO_CAMINHO",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_CAMINHO)
? DBNull.Value
: modelo.ARQUIVO_CAMINHO);
cmd.Parameters.AddWithValue("@ARQUIVO_DADOS",
modelo.ARQUIVO_DADOS != null
? modelo.ARQUIVO_DADOS
: DBNull.Value);
cmd.Parameters.AddWithValue("@DT_CADASTRO", modelo.DT_CADASTRO);
cmd.Parameters.AddWithValue("@DT_ALTERACAO",
modelo.DT_ALTERACAO.HasValue
? modelo.DT_ALTERACAO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@ID_USUARIO",
modelo.ID_USUARIO.HasValue
? modelo.ID_USUARIO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@STATUS", modelo.STATUS);
}
private static void PreencherParametrosAlterar(SqlCommand cmd, ModeloBoletos modelo)
{
cmd.Parameters.AddWithValue("@CODIGO", modelo.CODIGO);
cmd.Parameters.AddWithValue("@EMITIDO",
modelo.EMITIDO.HasValue
? modelo.EMITIDO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VENCE",
modelo.VENCE.HasValue
? modelo.VENCE.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VALOR", modelo.VALOR);
cmd.Parameters.AddWithValue("@NUMERO",
string.IsNullOrWhiteSpace(modelo.NUMERO)
? DBNull.Value
: modelo.NUMERO);
cmd.Parameters.AddWithValue("@PG", modelo.PG);
cmd.Parameters.AddWithValue("@SACADO",
string.IsNullOrWhiteSpace(modelo.SACADO)
? DBNull.Value
: modelo.SACADO);
cmd.Parameters.AddWithValue("@CONTA",
string.IsNullOrWhiteSpace(modelo.CONTA)
? DBNull.Value
: modelo.CONTA);
cmd.Parameters.AddWithValue("@OBSERVACAO",
string.IsNullOrWhiteSpace(modelo.OBSERVACAO)
? DBNull.Value
: modelo.OBSERVACAO);
cmd.Parameters.AddWithValue("@COD_CONTA",
string.IsNullOrWhiteSpace(modelo.COD_CONTA)
? DBNull.Value
: modelo.COD_CONTA);
cmd.Parameters.AddWithValue("@NOSSO_NUMERO",
string.IsNullOrWhiteSpace(modelo.NOSSO_NUMERO)
? DBNull.Value
: modelo.NOSSO_NUMERO);
cmd.Parameters.AddWithValue("@ACEITE", modelo.ACEITE);
cmd.Parameters.AddWithValue("@IMPRESSO", modelo.IMPRESSO);
cmd.Parameters.AddWithValue("@IMPORTACAO", modelo.IMPORTACAO);
cmd.Parameters.AddWithValue("@CHAVE_BOLETO",
string.IsNullOrWhiteSpace(modelo.CHAVE_BOLETO)
? DBNull.Value
: modelo.CHAVE_BOLETO);
cmd.Parameters.AddWithValue("@LINHA_DIGITAVEL",
string.IsNullOrWhiteSpace(modelo.LINHA_DIGITAVEL)
? DBNull.Value
: modelo.LINHA_DIGITAVEL);
cmd.Parameters.AddWithValue("@DT_PAGAMENTO",
modelo.DT_PAGAMENTO.HasValue
? modelo.DT_PAGAMENTO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_PAGO",
modelo.VL_PAGO.HasValue
? modelo.VL_PAGO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_MULTA",
modelo.VL_MULTA.HasValue
? modelo.VL_MULTA.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@VL_DESCONTO",
modelo.VL_DESCONTO.HasValue
? modelo.VL_DESCONTO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@ARQUIVO_NOME",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_NOME)
? DBNull.Value
: modelo.ARQUIVO_NOME);
cmd.Parameters.AddWithValue("@ARQUIVO_TIPO",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_TIPO)
? DBNull.Value
: modelo.ARQUIVO_TIPO);
cmd.Parameters.AddWithValue("@ARQUIVO_CAMINHO",
string.IsNullOrWhiteSpace(modelo.ARQUIVO_CAMINHO)
? DBNull.Value
: modelo.ARQUIVO_CAMINHO);
cmd.Parameters.AddWithValue("@ARQUIVO_DADOS",
modelo.ARQUIVO_DADOS != null
? modelo.ARQUIVO_DADOS
: DBNull.Value);
cmd.Parameters.AddWithValue("@DT_CADASTRO", modelo.DT_CADASTRO);
cmd.Parameters.AddWithValue("@DT_ALTERACAO",
modelo.DT_ALTERACAO.HasValue
? modelo.DT_ALTERACAO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@ID_USUARIO",
modelo.ID_USUARIO.HasValue
? modelo.ID_USUARIO.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@STATUS", modelo.STATUS);
}
#region VIEWS
public List<ModeloBoletos> ListarAbertos()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosAbertos");
}//ListarAbertos
public List<ModeloBoletos> ListarVencidos()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosVencidos");
}//ListarVencidos
public List<ModeloBoletos> ListarPagos()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosPagos");
}//ListarPagos
public List<ModeloBoletos> ListarImportados()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosImportados");
}//ListarImportados
public List<ModeloBoletos> ListarComArquivo()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosComArquivo");
}//ListarComArquivo
public List<ModeloBoletos> ListarSemArquivo()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosSemArquivo");
}//ListarSemArquivo
public List<ModeloBoletos> ListarHoje()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosHoje");
}//ListarHoje
public List<ModeloBoletos> ListarSemana()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosSemana");
}//ListarSemana
public List<ModeloBoletos> ListarProximosVencimentos()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosProximosVencimentos");
}//ListarProximosVencimentos
public List<ModeloBoletos> ListarPendentesWebhook()
{
return ExecutarViewLista("SELECT * FROM VW_BoletosPendentesWebhook");
}//ListarPendentesWebhook
#endregion
#region DASHBOARD
public DataTable ObterResumoFinanceiro()
{
return ExecutarViewDataTable("SELECT * FROM VW_BoletosResumoFinanceiro");
}//ObterResumoFinanceiro
public DataTable ObterDashboard()
{
return ExecutarViewDataTable("SELECT * FROM VW_BoletosDashboard");
}//ObterDashboard
#endregion
#region HELPERS
private List<ModeloBoletos> ExecutarViewLista(string query)
{
List<ModeloBoletos> lista = [];
using SqlConnection conn = new(connectionString);
using SqlCommand cmd = new(query, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(PreencherModelo(dr));
}
return lista;
}//ExecutarViewLista
private DataTable ExecutarViewDataTable(string query)
{
DataTable dt = new();
using SqlConnection conn = new(connectionString);
using SqlDataAdapter da = new(query, conn);
da.Fill(dt);
return dt;
}//ExecutarViewDataTable
#endregion
}
}