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 Listar() { List 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 Listar(string filtro) { List 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 Listar(int top) { List 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 ListarComSaldo() { return ExecutarLista(@" SELECT * FROM Contas_contas WHERE SALDO_INI IS NOT NULL AND SALDO_INI <> '' AND SALDO_INI <> '0'"); } public List ListarSemSaldo() { return ExecutarLista(@" SELECT * FROM Contas_contas WHERE SALDO_INI IS NULL OR SALDO_INI = '' OR SALDO_INI = '0'"); } public List ListarComSaldoInicialMaiorQueZero() { return ExecutarLista(@" SELECT * FROM Contas_contas WHERE ISNUMERIC(SALDO_INI) = 1 AND CAST(SALDO_INI AS DECIMAL(18, 2)) > 0"); } public List ListarComSaldoInicialMenorQueZero() { return ExecutarLista(@" SELECT * FROM Contas_contas WHERE ISNUMERIC(SALDO_INI) = 1 AND CAST(SALDO_INI AS DECIMAL(18, 2)) < 0"); } public List 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 ExecutarLista( string sql) { List 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 } }