using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALDespesas { private readonly string connectionString; public DALDespesas(string conexao) { connectionString = conexao; } #region CRUD public bool Inserir(ModeloDespesas modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" INSERT INTO Despesas ( PROCESSO, DESCRICAO, VALOR, PAGO, DIA ) VALUES ( @PROCESSO, @DESCRICAO, @VALOR, @PAGO, @DIA )"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Alterar(ModeloDespesas modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" UPDATE Despesas SET CODIGO=@CODIGO, PROCESSO=@PROCESSO, DESCRICAO=@DESCRICAO, VALOR=@VALOR, PAGO=@PAGO, DIA=@DIA WHERE ID_DESPESAS=@ID_DESPESAS"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); cmd.Parameters.AddWithValue("@CODIGO", modelo.CODIGO); cmd.Parameters.AddWithValue("@ID_DESPESAS", modelo.ID_DESPESAS); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Excluir(int id) { try { using SqlConnection conn = new(connectionString); string sql = @"DELETE FROM Despesas WHERE ID_DESPESAS=@ID"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue("@ID", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public ModeloDespesas? Carregar(int id) { using SqlConnection conn = new(connectionString); string sql = @"SELECT * FROM Despesas WHERE ID_DESPESAS=@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? processo = null, string? descricao = null, string? pago = null, string? dia = null) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Despesas WHERE 1 = 1"; using SqlCommand cmd = new(); cmd.Connection = conn; if (!string.IsNullOrWhiteSpace(processo)) { sql += " AND PROCESSO LIKE @PROCESSO"; cmd.Parameters.AddWithValue( "@PROCESSO", "%" + processo + "%"); } if (!string.IsNullOrWhiteSpace(descricao)) { sql += " AND DESCRICAO LIKE @DESCRICAO"; cmd.Parameters.AddWithValue( "@DESCRICAO", "%" + descricao + "%"); } if (!string.IsNullOrWhiteSpace(pago)) { sql += " AND PAGO=@PAGO"; cmd.Parameters.AddWithValue( "@PAGO", pago); } if (!string.IsNullOrWhiteSpace(dia)) { sql += " AND DIA=@DIA"; cmd.Parameters.AddWithValue( "@DIA", dia); } sql += " ORDER BY ID_DESPESAS DESC"; cmd.CommandText = sql; conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarAbertas() { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Despesas WHERE PAGO<>'SIM' ORDER BY ID_DESPESAS DESC"; using SqlCommand cmd = new(sql, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; }//ListarAbertas public List ListarPagas() { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Despesas WHERE PAGO='SIM' ORDER BY ID_DESPESAS DESC"; using SqlCommand cmd = new(sql, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; }//ListarPagas public List ListarPorProcesso(string processo) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Despesas WHERE PROCESSO LIKE @PROCESSO ORDER BY ID_DESPESAS DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@PROCESSO", "%" + processo + "%"); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; }//ListarPorProcesso public List ListarPorDescricao(string descricao) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Despesas WHERE DESCRICAO LIKE @DESCRICAO ORDER BY ID_DESPESAS DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@DESCRICAO", "%" + descricao + "%"); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; }//ListarPorDescricao #endregion #region Dashboard public DataTable Dashboard() { using SqlConnection conn = new(connectionString); string sql = @" SELECT COUNT(*) TOTAL_DESPESAS, SUM( CASE WHEN PAGO='SIM' THEN 1 ELSE 0 END ) DESPESAS_PAGAS, SUM( CASE WHEN PAGO<>'SIM' THEN 1 ELSE 0 END ) DESPESAS_ABERTAS FROM Despesas"; using SqlDataAdapter da = new(sql, conn); DataTable dt = new(); da.Fill(dt); return dt; } #endregion #region Helpers private static ModeloDespesas PreencherModelo(SqlDataReader dr) { return new ModeloDespesas { ID_DESPESAS = Convert.ToInt32(dr["ID_DESPESAS"]), CODIGO = Convert.ToString(dr["CODIGO"]) ?? string.Empty, PROCESSO = Convert.ToString(dr["PROCESSO"]) ?? string.Empty, DESCRICAO = Convert.ToString(dr["DESCRICAO"]) ?? string.Empty, VALOR = Convert.ToString(dr["VALOR"]) ?? string.Empty, PAGO = Convert.ToString(dr["PAGO"]) ?? string.Empty, DIA = Convert.ToString(dr["DIA"]) ?? string.Empty }; } private static void PreencherParametros( SqlCommand cmd, ModeloDespesas modelo) { cmd.Parameters.AddWithValue("@PROCESSO", modelo.PROCESSO); cmd.Parameters.AddWithValue("@DESCRICAO", modelo.DESCRICAO); cmd.Parameters.AddWithValue("@VALOR", modelo.VALOR); cmd.Parameters.AddWithValue("@PAGO", modelo.PAGO); cmd.Parameters.AddWithValue("@DIA", modelo.DIA); } #endregion } }