LevelOS-Core/DAL/DALContasContas.cs

520 lines
13 KiB
C#

using Microsoft.Data.SqlClient;
using MLL;
using System;
using System.Collections.Generic;
using System.Data;
namespace DALL
{
public class DALContasContas
{
private readonly string connectionString;
public DALContasContas(string conexao)
{
connectionString = conexao;
}
#region CRUD
public bool Inserir(ModeloContasContas modelo)
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
INSERT INTO Contas_contas
(
DESCRICAO,
SALDO_INI
)
VALUES
(
@DESCRICAO,
@SALDO_INI
)";
using SqlCommand cmd =
new(sql, conn);
PreencherParametrosInserir(
cmd,
modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool Alterar(ModeloContasContas modelo)
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
UPDATE Contas_contas
SET
CODIGO = @CODIGO,
DESCRICAO = @DESCRICAO,
SALDO_INI = @SALDO_INI
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
PreencherParametrosAlterar(
cmd,
modelo);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
modelo.ID_CONTAS_CONTAS);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool Excluir(int id)
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
DELETE FROM Contas_contas
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public ModeloContasContas? Carregar(int id)
{
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT *
FROM Contas_contas
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
id);
conn.Open();
using SqlDataReader dr =
cmd.ExecuteReader();
if (dr.Read())
{
return PreencherModelo(dr);
}
return null;
}
public List<ModeloContasContas> Listar()
{
List<ModeloContasContas> lista = [];
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT *
FROM Contas_contas
ORDER BY ID_CONTAS_CONTAS DESC";
using SqlCommand cmd =
new(sql, conn);
conn.Open();
using SqlDataReader dr =
cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
public List<ModeloContasContas> Listar(string filtro)
{
List<ModeloContasContas> lista = [];
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT *
FROM Contas_contas
WHERE DESCRICAO LIKE
@FILTRO
ORDER BY ID_CONTAS_CONTAS DESC";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@FILTRO",
$"%{filtro}%");
conn.Open();
using SqlDataReader dr =
cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
public List<ModeloContasContas> Listar(int top)
{
List<ModeloContasContas> lista = [];
using SqlConnection conn =
new(connectionString);
string sql = $@"
SELECT TOP {top} *
FROM Contas_contas
ORDER BY ID_CONTAS_CONTAS DESC";
using SqlCommand cmd =
new(sql, conn);
conn.Open();
using SqlDataReader dr =
cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
#endregion
#region VIEWS
public List<ModeloContasContas> ListarComSaldo()
{
return ExecutarLista(@"
SELECT *
FROM Contas_contas
WHERE
SALDO_INI IS NOT NULL
AND SALDO_INI <> ''
AND SALDO_INI <> '0'");
}
public List<ModeloContasContas> ListarSemSaldo()
{
return ExecutarLista(@"
SELECT *
FROM Contas_contas
WHERE
SALDO_INI IS NULL
OR SALDO_INI = ''
OR SALDO_INI = '0'");
}
public List<ModeloContasContas> ListarComSaldoInicialMaiorQueZero()
{
return ExecutarLista(@"
SELECT *
FROM Contas_contas
WHERE
ISNUMERIC(SALDO_INI) = 1
AND CAST(SALDO_INI AS DECIMAL(18, 2)) > 0");
}
public List<ModeloContasContas> ListarComSaldoInicialMenorQueZero()
{
return ExecutarLista(@"
SELECT *
FROM Contas_contas
WHERE
ISNUMERIC(SALDO_INI) = 1
AND CAST(SALDO_INI AS DECIMAL(18, 2)) < 0");
}
public List<ModeloContasContas> ListarComSaldoInicialIgualAZero()
{
return ExecutarLista(@"
SELECT *
FROM Contas_contas
WHERE
ISNUMERIC(SALDO_INI) = 1
AND CAST(SALDO_INI AS DECIMAL(18, 2)) = 0");
}
public bool VerificarExistencia(int id)
{
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT COUNT(*) > 0
FROM Contas_contas
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
id);
conn.Open();
return (bool)cmd.ExecuteScalar();
}
public bool FecharContasContas(int id)
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
UPDATE Contas_contas
SET SALDO_INI = '0'
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool ReabrirContasContas(int id)
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
UPDATE Contas_contas
SET SALDO_INI = NULL
WHERE ID_CONTAS_CONTAS =
@ID_CONTAS_CONTAS";
using SqlCommand cmd =
new(sql, conn);
cmd.Parameters.AddWithValue(
"@ID_CONTAS_CONTAS",
id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool ExcluirContasContasFechadas()
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
DELETE FROM Contas_contas
WHERE SALDO_INI = '0'";
using SqlCommand cmd =
new(sql, conn);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool ExcluirContasContasReabertas()
{
try
{
using SqlConnection conn =
new(connectionString);
string sql = @"
DELETE FROM Contas_contas
WHERE SALDO_INI IS NULL";
using SqlCommand cmd =
new(sql, conn);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool VerificarContasComSaldo()
{
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT COUNT(*) > 0
FROM Contas_contas
WHERE
SALDO_INI IS NOT NULL
AND SALDO_INI <> ''
AND SALDO_INI <> '0'";
using SqlCommand cmd =
new(sql, conn);
conn.Open();
return (bool)cmd.ExecuteScalar();
}
#endregion
#region DASHBOARD
public DataTable Dashboard()
{
using SqlConnection conn =
new(connectionString);
string sql = @"
SELECT
COUNT(*) AS TOTAL_CONTAS
FROM Contas_contas";
using SqlCommand cmd =
new(sql, conn);
using SqlDataAdapter da =
new(cmd);
DataTable dt = new();
da.Fill(dt);
return dt;
}
#endregion
#region HELPERS
private List<ModeloContasContas> ExecutarLista(
string sql)
{
List<ModeloContasContas> lista = [];
using SqlConnection conn =
new(connectionString);
using SqlCommand cmd =
new(sql, conn);
conn.Open();
using SqlDataReader dr =
cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
private static ModeloContasContas PreencherModelo(
SqlDataReader dr)
{
return new ModeloContasContas
{
ID_CONTAS_CONTAS =
Convert.ToInt32(
dr["ID_CONTAS_CONTAS"]),
CODIGO =
Convert.ToString(
dr["CODIGO"])
?? string.Empty,
DESCRICAO =
Convert.ToString(
dr["DESCRICAO"])
?? string.Empty,
SALDO_INI =
Convert.ToString(
dr["SALDO_INI"])
?? string.Empty
};
}
private static void PreencherParametrosInserir(
SqlCommand cmd,
ModeloContasContas modelo)
{
cmd.Parameters.AddWithValue(
"@DESCRICAO",
string.IsNullOrWhiteSpace(
modelo.DESCRICAO)
? DBNull.Value
: modelo.DESCRICAO);
cmd.Parameters.AddWithValue(
"@SALDO_INI",
string.IsNullOrWhiteSpace(
modelo.SALDO_INI)
? DBNull.Value
: modelo.SALDO_INI);
}
private static void PreencherParametrosAlterar(
SqlCommand cmd,
ModeloContasContas modelo)
{
cmd.Parameters.AddWithValue(
"@CODIGO",
string.IsNullOrWhiteSpace(
modelo.CODIGO)
? DBNull.Value
: modelo.CODIGO);
PreencherParametrosInserir(
cmd,
modelo);
}
#endregion
}
}