LevelOS-Core/DAL/DALFcaixa.cs

401 lines
10 KiB
C#

using Microsoft.Data.SqlClient;
using MLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
public class DALFcaixa
{
private readonly string connectionString;
public DALFcaixa(string conexao)
{
connectionString = conexao;
}
public bool Inserir(ModeloFcaixa modelo)
{
using SqlConnection conn = new(connectionString);
string sql = @"
INSERT INTO Fcaixa
(
DIA,
RECEITA,
DESPESA,
OBS,
PLANO_CONTAS,
COD_CONTA,
FORMA
)
VALUES
(
@DIA,
@RECEITA,
@DESPESA,
@OBS,
@PLANO_CONTAS,
@COD_CONTA,
@FORMA
)";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public bool Alterar(ModeloFcaixa modelo)
{
using SqlConnection conn = new(connectionString);
string sql = @"
UPDATE Fcaixa
SET
DIA=@DIA,
RECEITA=@RECEITA,
DESPESA=@DESPESA,
OBS=@OBS,
PLANO_CONTAS=@PLANO_CONTAS,
COD_CONTA=@COD_CONTA,
FORMA=@FORMA
WHERE
ID_FCAIXA=@ID_FCAIXA";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
cmd.Parameters.AddWithValue(
"@ID_FCAIXA",
modelo.ID_FCAIXA);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public bool Excluir(int id)
{
using SqlConnection conn = new(connectionString);
string sql =
@"DELETE FROM Fcaixa
WHERE ID_FCAIXA=@ID";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public ModeloFcaixa? Carregar(int id)
{
using SqlConnection conn = new(connectionString);
string sql =
@"SELECT *
FROM Fcaixa
WHERE ID_FCAIXA=@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<ModeloFcaixa> Listar(string? codigo = null,string? dia = null,string? receita = null,string? despesa = null,string? planoContas = null, string? codConta = null,string? forma = null)
{
List<ModeloFcaixa> lista = [];
using SqlConnection conn = new(connectionString);
string sql =
@"SELECT *
FROM Fcaixa
WHERE 1=1";
using SqlCommand cmd = new();
if (!string.IsNullOrWhiteSpace(codigo))
{
sql += " AND CODIGO LIKE @CODIGO";
cmd.Parameters.AddWithValue("@CODIGO", "%" + codigo + "%");
}
if (!string.IsNullOrWhiteSpace(dia))
{
sql += " AND DIA LIKE @DIA";
cmd.Parameters.AddWithValue("@DIA", "%" + dia + "%");
}
if (!string.IsNullOrWhiteSpace(receita))
{
sql += " AND RECEITA LIKE @RECEITA";
cmd.Parameters.AddWithValue("@RECEITA", "%" + receita + "%");
}
if (!string.IsNullOrWhiteSpace(despesa))
{
sql += " AND DESPESA LIKE @DESPESA";
cmd.Parameters.AddWithValue("@DESPESA", "%" + despesa + "%");
}
if (!string.IsNullOrWhiteSpace(planoContas))
{
sql += " AND PLANO_CONTAS LIKE @PLANO_CONTAS";
cmd.Parameters.AddWithValue("@PLANO_CONTAS", "%" + planoContas + "%");
}
if (!string.IsNullOrWhiteSpace(codConta))
{
sql += " AND COD_CONTA LIKE @COD_CONTA";
cmd.Parameters.AddWithValue("@COD_CONTA", "%" + codConta + "%");
}
if (!string.IsNullOrWhiteSpace(forma))
{
sql += " AND FORMA LIKE @FORMA";
cmd.Parameters.AddWithValue("@FORMA", "%" + forma + "%");
}
sql += " ORDER BY ID_FCAIXA DESC";
cmd.Connection = conn;
cmd.CommandText = sql;
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
public List<ModeloFcaixa> ListarPorForma(string forma)
{
return Listar(forma: forma);
}
public List<ModeloFcaixa> ListarPorConta(string codConta)
{
return Listar(codConta: codConta);
}
public List<ModeloFcaixa> ListarPorPlanoContas(string planoContas)
{
return Listar(planoContas: planoContas);
}
public List<ModeloFcaixa> ListarReceitas()
{
return Listar()
.Where(x =>
!string.IsNullOrWhiteSpace(x.RECEITA) &&
x.RECEITA != "0")
.ToList();
}
public List<ModeloFcaixa> ListarDespesas()
{
return Listar()
.Where(x =>
!string.IsNullOrWhiteSpace(x.DESPESA) &&
x.DESPESA != "0")
.ToList();
}
public decimal TotalReceitas()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT
ISNULL(
SUM(
TRY_CAST(RECEITA AS DECIMAL(18,2))
),0)
FROM Fcaixa";
using SqlCommand cmd = new(sql, conn);
conn.Open();
return Convert.ToDecimal(
cmd.ExecuteScalar());
}
public decimal TotalDespesas()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT
ISNULL(
SUM(
TRY_CAST(DESPESA AS DECIMAL(18,2))
),0)
FROM Fcaixa";
using SqlCommand cmd = new(sql, conn);
conn.Open();
return Convert.ToDecimal(
cmd.ExecuteScalar());
}
public decimal SaldoCaixa()
{
return TotalReceitas() - TotalDespesas();
}
public List<ModeloFcaixa> MovimentacaoPorPeriodo(DateTime dataInicial,DateTime dataFinal)
{
List<ModeloFcaixa> lista = [];
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT *
FROM Fcaixa
WHERE TRY_CONVERT(date,DIA,103)
BETWEEN @INI AND @FIM
ORDER BY
TRY_CONVERT(date,DIA,103)";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@INI", dataInicial);
cmd.Parameters.AddWithValue("@FIM", dataFinal);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
PreencherModelo(dr));
}
return lista;
}
public DataTable DashboardFinanceiro()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT
COUNT(*) TOTAL_MOVIMENTOS,
ISNULL(
SUM(
TRY_CAST(RECEITA AS DECIMAL(18,2))
),0) TOTAL_RECEITAS,
ISNULL(
SUM(
TRY_CAST(DESPESA AS DECIMAL(18,2))
),0) TOTAL_DESPESAS,
ISNULL(
SUM(
TRY_CAST(RECEITA AS DECIMAL(18,2))
),0)
-
ISNULL(
SUM(
TRY_CAST(DESPESA AS DECIMAL(18,2))
),0)
AS SALDO
FROM Fcaixa";
DataTable dt = new();
using SqlDataAdapter da = new(sql, conn);
da.Fill(dt);
return dt;
}
public ModeloFcaixa? UltimoLancamento()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT TOP 1 *
FROM Fcaixa
ORDER BY ID_FCAIXA DESC";
using SqlCommand cmd = new(sql, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
return PreencherModelo(dr);
return null;
}
public ModeloFcaixa? PrimeiroLancamento()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT TOP 1 *
FROM Fcaixa
ORDER BY ID_FCAIXA";
using SqlCommand cmd = new(sql, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
return PreencherModelo(dr);
return null;
}
private ModeloFcaixa PreencherModelo(SqlDataReader dr)
{
return new ModeloFcaixa
{
ID_FCAIXA = Convert.ToInt32(dr["ID_FCAIXA"]),
CODIGO = Convert.ToString(dr["CODIGO"]) ?? "",
DIA = Convert.ToString(dr["DIA"]) ?? "",
RECEITA = Convert.ToString(dr["RECEITA"]) ?? "",
DESPESA = Convert.ToString(dr["DESPESA"]) ?? "",
OBS = Convert.ToString(dr["OBS"]) ?? "",
PLANO_CONTAS = Convert.ToString(dr["PLANO_CONTAS"]) ?? "",
COD_CONTA = Convert.ToString(dr["COD_CONTA"]) ?? "",
FORMA = Convert.ToString(dr["FORMA"]) ?? ""
};
}
private void PreencherParametros(SqlCommand cmd,ModeloFcaixa modelo)
{
cmd.Parameters.AddWithValue("@DIA", modelo.DIA);
cmd.Parameters.AddWithValue("@RECEITA", modelo.RECEITA);
cmd.Parameters.AddWithValue("@DESPESA", modelo.DESPESA);
cmd.Parameters.AddWithValue("@OBS", modelo.OBS);
cmd.Parameters.AddWithValue("@PLANO_CONTAS", modelo.PLANO_CONTAS);
cmd.Parameters.AddWithValue("@COD_CONTA", modelo.COD_CONTA);
cmd.Parameters.AddWithValue("@FORMA", modelo.FORMA);
}
}
}