LevelOS-Core/DAL/DALDespesas.cs

363 lines
9.7 KiB
C#

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<ModeloDespesas> Listar(
string? processo = null,
string? descricao = null,
string? pago = null,
string? dia = null)
{
List<ModeloDespesas> 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<ModeloDespesas> ListarAbertas()
{
List<ModeloDespesas> 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<ModeloDespesas> ListarPagas()
{
List<ModeloDespesas> 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<ModeloDespesas> ListarPorProcesso(string processo)
{
List<ModeloDespesas> 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<ModeloDespesas> ListarPorDescricao(string descricao)
{
List<ModeloDespesas> 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
}
}