LevelOS-Core/DAL/DALEcfCfg.cs

284 lines
6.7 KiB
C#

using Microsoft.Data.SqlClient;
using MLL;
using System;
using System.Collections.Generic;
using System.Data;
namespace DALL
{
public class DALEcfCfg
{
private readonly string connectionString;
public DALEcfCfg(string conexao)
{
connectionString = conexao;
}
#region CRUD
public bool Inserir(ModeloEcfCfg modelo)
{
try
{
using SqlConnection conn = new(connectionString);
string sql = @"
INSERT INTO ECF_CFG
(
MODELO,
PORTA,
TEM_GAVETA,
INDICE_AL_SERV
)
VALUES
(
@MODELO,
@PORTA,
@TEM_GAVETA,
@INDICE_AL_SERV
)";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool Alterar(ModeloEcfCfg modelo)
{
try
{
using SqlConnection conn = new(connectionString);
string sql = @"
UPDATE ECF_CFG
SET
CODIGO=@CODIGO,
MODELO=@MODELO,
PORTA=@PORTA,
TEM_GAVETA=@TEM_GAVETA,
INDICE_AL_SERV=@INDICE_AL_SERV
WHERE ID_EFC_CFG=@ID_EFC_CFG";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
cmd.Parameters.AddWithValue("@CODIGO", modelo.CODIGO);
cmd.Parameters.AddWithValue("@ID_EFC_CFG", modelo.ID_EFC_CFG);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public bool Excluir(int id)
{
try
{
using SqlConnection conn = new(connectionString);
string sql =
@"DELETE FROM ECF_CFG
WHERE ID_EFC_CFG=@ID";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
catch
{
return false;
}
}
public ModeloEcfCfg? Carregar(int id)
{
using SqlConnection conn = new(connectionString);
string sql =
@"SELECT *
FROM ECF_CFG
WHERE ID_EFC_CFG=@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<ModeloEcfCfg> Listar(
string? modelo = null,
string? porta = null,
string? temGaveta = null)
{
List<ModeloEcfCfg> lista = [];
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT *
FROM ECF_CFG
WHERE 1=1";
using SqlCommand cmd = new();
cmd.Connection = conn;
if (!string.IsNullOrWhiteSpace(modelo))
{
sql += " AND MODELO LIKE @MODELO";
cmd.Parameters.AddWithValue(
"@MODELO",
"%" + modelo + "%");
}
if (!string.IsNullOrWhiteSpace(porta))
{
sql += " AND PORTA LIKE @PORTA";
cmd.Parameters.AddWithValue(
"@PORTA",
"%" + porta + "%");
}
if (!string.IsNullOrWhiteSpace(temGaveta))
{
sql += " AND TEM_GAVETA=@TEM_GAVETA";
cmd.Parameters.AddWithValue(
"@TEM_GAVETA",
temGaveta);
}
sql += " ORDER BY ID_EFC_CFG DESC";
cmd.CommandText = sql;
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_IMPRESSORAS,
SUM(
CASE
WHEN TEM_GAVETA='SIM'
THEN 1
ELSE 0
END
) COM_GAVETA
FROM ECF_CFG";
using SqlDataAdapter da =
new(sql, conn);
DataTable dt = new();
da.Fill(dt);
return dt;
}
#endregion
#region Helpers
private static ModeloEcfCfg PreencherModelo(SqlDataReader dr)
{
return new ModeloEcfCfg
{
ID_EFC_CFG =
Convert.ToInt32(dr["ID_EFC_CFG"]),
CODIGO =
Convert.ToString(dr["CODIGO"])
?? string.Empty,
MODELO =
Convert.ToString(dr["MODELO"])
?? string.Empty,
PORTA =
Convert.ToString(dr["PORTA"])
?? string.Empty,
TEM_GAVETA =
Convert.ToString(dr["TEM_GAVETA"])
?? string.Empty,
INDICE_AL_SERV =
Convert.ToString(dr["INDICE_AL_SERV"])
?? string.Empty
};
}
private static void PreencherParametros(
SqlCommand cmd,
ModeloEcfCfg modelo)
{
cmd.Parameters.AddWithValue(
"@MODELO",
modelo.MODELO);
cmd.Parameters.AddWithValue(
"@PORTA",
modelo.PORTA);
cmd.Parameters.AddWithValue(
"@TEM_GAVETA",
modelo.TEM_GAVETA);
cmd.Parameters.AddWithValue(
"@INDICE_AL_SERV",
modelo.INDICE_AL_SERV);
}
#endregion
}
}