LevelOS-Core/DAL/DALEsquemas.cs

342 lines
8.5 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 DALEsquemas
{
private readonly string connectionString;
public DALEsquemas(string connectionString)
{
this.connectionString = connectionString;
}
public bool Inserir(ModeloEsquemas modelo)
{
using SqlConnection conn = new(connectionString);
string sql = @"
INSERT INTO Esquemas
(
MARCA,
NOME,
LOCAL,
FPATH,
OBS
)
VALUES
(
@MARCA,
@NOME,
@LOCAL,
@FPATH,
@OBS
)";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public bool Alterar(ModeloEsquemas modelo)
{
using SqlConnection conn = new(connectionString);
string sql = @"
UPDATE Esquemas
SET
MARCA=@MARCA,
NOME=@NOME,
LOCAL=@LOCAL,
FPATH=@FPATH,
OBS=@OBS
WHERE
ID_ESQUEMAS=@ID_ESQUEMAS";
using SqlCommand cmd = new(sql, conn);
PreencherParametros(cmd, modelo);
cmd.Parameters.AddWithValue("@ID_ESQUEMAS", modelo.ID_ESQUEMAS);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public bool Excluir(int id)
{
using SqlConnection conn = new(connectionString);
string sql =
@"DELETE FROM Esquemas
WHERE ID_ESQUEMAS=@ID";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@ID", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}
public ModeloEsquemas? Carregar(int id)
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT *
FROM Esquemas
WHERE ID_ESQUEMAS=@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<ModeloEsquemas> Listar(string? codigo = null,string? marca = null,string? nome = null, string? local = null,string? fpath = null)
{
List<ModeloEsquemas> lista = [];
using SqlConnection conn = new(connectionString);
string sql =
@"SELECT *
FROM Esquemas
WHERE 1=1";
using SqlCommand cmd = new();
if (!string.IsNullOrWhiteSpace(codigo))
{
sql += " AND CODIGO LIKE @CODIGO";
cmd.Parameters.AddWithValue("@CODIGO", "%" + codigo + "%");
}
if (!string.IsNullOrWhiteSpace(marca))
{
sql += " AND MARCA LIKE @MARCA";
cmd.Parameters.AddWithValue("@MARCA", "%" + marca + "%");
}
if (!string.IsNullOrWhiteSpace(nome))
{
sql += " AND NOME LIKE @NOME";
cmd.Parameters.AddWithValue("@NOME", "%" + nome + "%");
}
if (!string.IsNullOrWhiteSpace(local))
{
sql += " AND LOCAL LIKE @LOCAL";
cmd.Parameters.AddWithValue("@LOCAL", "%" + local + "%");
}
if (!string.IsNullOrWhiteSpace(fpath))
{
sql += " AND FPATH LIKE @FPATH";
cmd.Parameters.AddWithValue("@FPATH", "%" + fpath + "%");
}
sql += " ORDER BY ID_ESQUEMAS DESC";
cmd.Connection = conn;
cmd.CommandText = sql;
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
lista.Add(PreencherModelo(dr));
return lista;
}
private ModeloEsquemas PreencherModelo(SqlDataReader dr)
{
return new ModeloEsquemas
{
ID_ESQUEMAS = Convert.ToInt32(dr["ID_ESQUEMAS"]),
CODIGO = Convert.ToString(dr["CODIGO"]) ?? "",
MARCA = Convert.ToString(dr["MARCA"]) ?? "",
NOME = Convert.ToString(dr["NOME"]) ?? "",
LOCAL = Convert.ToString(dr["LOCAL"]) ?? "",
FPATH = Convert.ToString(dr["FPATH"]) ?? "",
OBS = Convert.ToString(dr["OBS"]) ?? ""
};
}
private void PreencherParametros(SqlCommand cmd, ModeloEsquemas modelo)
{
cmd.Parameters.AddWithValue("@MARCA", modelo.MARCA);
cmd.Parameters.AddWithValue("@NOME", modelo.NOME);
cmd.Parameters.AddWithValue("@LOCAL", modelo.LOCAL);
cmd.Parameters.AddWithValue("@FPATH", modelo.FPATH);
cmd.Parameters.AddWithValue("@OBS", modelo.OBS);
}
#region Listagem
public List<ModeloEsquemas> ListarPorMarca(string marca)
{
return Listar(marca: marca);
}
public List<ModeloEsquemas> ListarPorNome(string nome)
{
return Listar(nome: nome);
}
public List<ModeloEsquemas> ListarPorLocal(string local)
{
return Listar(local: local);
}
public ModeloEsquemas? CarregarPorCodigo(string codigo)
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT *
FROM Esquemas
WHERE CODIGO=@CODIGO";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@CODIGO", codigo);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
return PreencherModelo(dr);
return null;
}
public bool ExisteNome(string nome)
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT COUNT(*)
FROM Esquemas
WHERE NOME=@NOME";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@NOME", nome);
conn.Open();
return Convert.ToInt32(
cmd.ExecuteScalar()) > 0;
}
public bool ExisteArquivo(string fpath)
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT COUNT(*)
FROM Esquemas
WHERE FPATH=@FPATH";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@FPATH", fpath);
conn.Open();
return Convert.ToInt32(
cmd.ExecuteScalar()) > 0;
}
public int QuantidadePorMarca(string marca)
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT COUNT(*)
FROM Esquemas
WHERE MARCA=@MARCA";
using SqlCommand cmd = new(sql, conn);
cmd.Parameters.AddWithValue("@MARCA", marca);
conn.Open();
return Convert.ToInt32(
cmd.ExecuteScalar());
}
public int QuantidadeTotal()
{
using SqlConnection conn = new(connectionString);
string sql =
@"SELECT COUNT(*)
FROM Esquemas";
using SqlCommand cmd = new(sql, conn);
conn.Open();
return Convert.ToInt32(
cmd.ExecuteScalar());
}
public DataTable Dashboard()
{
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT
COUNT(*) TOTAL_ESQUEMAS,
COUNT(DISTINCT MARCA) TOTAL_MARCAS
FROM Esquemas";
using SqlDataAdapter da = new(sql, conn);
DataTable dt = new();
da.Fill(dt);
return dt;
}
public List<string> ListarMarcas()
{
List<string> lista = [];
using SqlConnection conn = new(connectionString);
string sql = @"
SELECT DISTINCT MARCA
FROM Esquemas
ORDER BY MARCA";
using SqlCommand cmd = new(sql, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
lista.Add(
Convert.ToString(dr["MARCA"]) ?? "");
}
return lista;
}
#endregion
}
}