using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALDespFixa { private readonly string connectionString; public DALDespFixa(string conexao) { connectionString = conexao; } #region CRUD public bool Inserir(ModeloDespFixa modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" INSERT INTO Desp_fixa ( TIPO, COD_CLIENTE, VENCIMENTO, PLANO_CONTAS, OBSERVACAO, VALOR ) VALUES ( @TIPO, @COD_CLIENTE, @VENCIMENTO, @PLANO_CONTAS, @OBSERVACAO, @VALOR )"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Alterar(ModeloDespFixa modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" UPDATE Desp_fixa SET CODIGO=@CODIGO, TIPO=@TIPO, COD_CLIENTE=@COD_CLIENTE, VENCIMENTO=@VENCIMENTO, PLANO_CONTAS=@PLANO_CONTAS, OBSERVACAO=@OBSERVACAO, VALOR=@VALOR WHERE ID_DESP_FIXA=@ID_DESP_FIXA"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); cmd.Parameters.AddWithValue("@CODIGO", modelo.CODIGO); cmd.Parameters.AddWithValue("@ID_DESP_FIXA", modelo.ID_DESP_FIXA); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Excluir(int id) { try { using SqlConnection conn = new(connectionString); string sql = @" DELETE FROM Desp_fixa WHERE ID_DESP_FIXA=@ID"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@ID", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public ModeloDespFixa? Carregar(int id) { using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Desp_fixa WHERE ID_DESP_FIXA=@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; } public List Listar( string? tipo = null, string? codCliente = null, string? vencimento = null, string? planoContas = null) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Desp_fixa WHERE 1=1"; using SqlCommand cmd = new(); cmd.Connection = conn; if (!string.IsNullOrWhiteSpace(tipo)) { sql += " AND TIPO LIKE @TIPO"; cmd.Parameters.AddWithValue( "@TIPO", "%" + tipo + "%"); } if (!string.IsNullOrWhiteSpace(codCliente)) { sql += " AND COD_CLIENTE LIKE @COD_CLIENTE"; cmd.Parameters.AddWithValue( "@COD_CLIENTE", "%" + codCliente + "%"); } if (!string.IsNullOrWhiteSpace(vencimento)) { sql += " AND VENCIMENTO LIKE @VENCIMENTO"; cmd.Parameters.AddWithValue( "@VENCIMENTO", "%" + vencimento + "%"); } if (!string.IsNullOrWhiteSpace(planoContas)) { sql += " AND PLANO_CONTAS LIKE @PLANO_CONTAS"; cmd.Parameters.AddWithValue( "@PLANO_CONTAS", "%" + planoContas + "%"); } sql += " ORDER BY ID_DESP_FIXA DESC"; cmd.CommandText = sql; conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorCliente(string codCliente) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Desp_fixa WHERE COD_CLIENTE=@COD_CLIENTE ORDER BY ID_DESP_FIXA DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@COD_CLIENTE", codCliente); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorVencimento(string vencimento) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Desp_fixa WHERE VENCIMENTO=@VENCIMENTO ORDER BY ID_DESP_FIXA DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@VENCIMENTO", vencimento); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorPlanoContas(string planoContas) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Desp_fixa WHERE PLANO_CONTAS=@PLANO_CONTAS ORDER BY ID_DESP_FIXA DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@PLANO_CONTAS", planoContas); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } #endregion #region Dashboard public DataTable Dashboard() { using SqlConnection conn = new(connectionString); string sql = @" SELECT COUNT(*) TOTAL_DESPESAS_FIXAS FROM Desp_fixa"; using SqlDataAdapter da = new(sql, conn); DataTable dt = new(); da.Fill(dt); return dt; } #endregion #region Helpers private static ModeloDespFixa PreencherModelo(SqlDataReader dr) { return new ModeloDespFixa { ID_DESP_FIXA = Convert.ToInt32(dr["ID_DESP_FIXA"]), CODIGO = Convert.ToString(dr["CODIGO"]) ?? string.Empty, TIPO = Convert.ToString(dr["TIPO"]) ?? string.Empty, COD_CLIENTE = Convert.ToString(dr["COD_CLIENTE"]) ?? string.Empty, VENCIMENTO = Convert.ToString(dr["VENCIMENTO"]) ?? string.Empty, PLANO_CONTAS = Convert.ToString(dr["PLANO_CONTAS"]) ?? string.Empty, OBSERVACAO = Convert.ToString(dr["OBSERVACAO"]) ?? string.Empty, VALOR = Convert.ToString(dr["VALOR"]) ?? string.Empty }; } private static void PreencherParametros( SqlCommand cmd, ModeloDespFixa modelo) { cmd.Parameters.AddWithValue("@TIPO", modelo.TIPO); cmd.Parameters.AddWithValue("@COD_CLIENTE", modelo.COD_CLIENTE); cmd.Parameters.AddWithValue("@VENCIMENTO", modelo.VENCIMENTO); cmd.Parameters.AddWithValue("@PLANO_CONTAS", modelo.PLANO_CONTAS); cmd.Parameters.AddWithValue("@OBSERVACAO", modelo.OBSERVACAO); cmd.Parameters.AddWithValue("@VALOR", modelo.VALOR); } #endregion } }