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 Listar(string? codigo = null,string? marca = null,string? nome = null, string? local = null,string? fpath = null) { List 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 ListarPorMarca(string marca) { return Listar(marca: marca); } public List ListarPorNome(string nome) { return Listar(nome: nome); } public List 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 ListarMarcas() { List 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 } }