using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALLCoordImpres { private readonly string connectionString; public DALLCoordImpres(string conexao) { connectionString = conexao; } #region CRUD public bool Inserir(ModeloCoordImpres modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" INSERT INTO Coord_impres ( COD_MODELO, NOME_CAMPO, COD_CAMPO, TIPO, CX, CY, COMP, ATIVO ) VALUES ( @COD_MODELO, @NOME_CAMPO, @COD_CAMPO, @TIPO, @CX, @CY, @COMP, @ATIVO )"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Alterar(ModeloCoordImpres modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" UPDATE Coord_impres SET CODIGO=@CODIGO, COD_MODELO=@COD_MODELO, NOME_CAMPO=@NOME_CAMPO, COD_CAMPO=@COD_CAMPO, TIPO=@TIPO, CX=@CX, CY=@CY, COMP=@COMP, ATIVO=@ATIVO WHERE ID_COORD_IMPRES=@ID_COORD_IMPRES"; using SqlCommand cmd = new(sql, conn); PreencherParametros(cmd, modelo); cmd.Parameters.AddWithValue( "@CODIGO", modelo.CODIGO); cmd.Parameters.AddWithValue( "@ID_COORD_IMPRES", modelo.ID_COORD_IMPRES); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Excluir(int id) { try { using SqlConnection conn = new(connectionString); string sql = @"DELETE FROM Coord_impres WHERE ID_COORD_IMPRES=@ID"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ID", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public ModeloCoordImpres? Carregar(int id) { using SqlConnection conn = new(connectionString); string sql = @"SELECT * FROM Coord_impres WHERE ID_COORD_IMPRES=@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? codModelo = null, string? nomeCampo = null, string? codCampo = null, string? tipo = null, string? ativo = null) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Coord_impres WHERE 1=1"; using SqlCommand cmd = new(); cmd.Connection = conn; if (!string.IsNullOrWhiteSpace(codModelo)) { sql += " AND COD_MODELO LIKE @COD_MODELO"; cmd.Parameters.AddWithValue( "@COD_MODELO", "%" + codModelo + "%"); } if (!string.IsNullOrWhiteSpace(nomeCampo)) { sql += " AND NOME_CAMPO LIKE @NOME_CAMPO"; cmd.Parameters.AddWithValue( "@NOME_CAMPO", "%" + nomeCampo + "%"); } if (!string.IsNullOrWhiteSpace(codCampo)) { sql += " AND COD_CAMPO LIKE @COD_CAMPO"; cmd.Parameters.AddWithValue( "@COD_CAMPO", "%" + codCampo + "%"); } if (!string.IsNullOrWhiteSpace(tipo)) { sql += " AND TIPO LIKE @TIPO"; cmd.Parameters.AddWithValue( "@TIPO", "%" + tipo + "%"); } if (!string.IsNullOrWhiteSpace(ativo)) { sql += " AND ATIVO=@ATIVO"; cmd.Parameters.AddWithValue( "@ATIVO", ativo); } sql += " ORDER BY ID_COORD_IMPRES DESC"; cmd.CommandText = sql; conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorModelo(string codModelo) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM Coord_impres WHERE COD_MODELO=@COD_MODELO ORDER BY ID_COORD_IMPRES DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@COD_MODELO", codModelo); 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, SUM( CASE WHEN ATIVO='SIM' THEN 1 ELSE 0 END ) AS ATIVOS FROM Coord_impres"; using SqlDataAdapter da = new(sql, conn); DataTable dt = new(); da.Fill(dt); return dt; } #endregion #region Helpers private static ModeloCoordImpres PreencherModelo(SqlDataReader dr) { return new ModeloCoordImpres { ID_COORD_IMPRES = Convert.ToInt32( dr["ID_COORD_IMPRES"]), CODIGO = Convert.ToString( dr["CODIGO"]) ?? string.Empty, COD_MODELO = Convert.ToString( dr["COD_MODELO"]) ?? string.Empty, NOME_CAMPO = Convert.ToString( dr["NOME_CAMPO"]) ?? string.Empty, COD_CAMPO = Convert.ToString( dr["COD_CAMPO"]) ?? string.Empty, TIPO = Convert.ToString( dr["TIPO"]) ?? string.Empty, CX = Convert.ToString( dr["CX"]) ?? string.Empty, CY = Convert.ToString( dr["CY"]) ?? string.Empty, COMP = Convert.ToString( dr["COMP"]) ?? string.Empty, ATIVO = Convert.ToString( dr["ATIVO"]) ?? string.Empty }; } private static void PreencherParametros( SqlCommand cmd, ModeloCoordImpres modelo) { cmd.Parameters.AddWithValue( "@COD_MODELO", modelo.COD_MODELO); cmd.Parameters.AddWithValue( "@NOME_CAMPO", modelo.NOME_CAMPO); cmd.Parameters.AddWithValue( "@COD_CAMPO", modelo.COD_CAMPO); cmd.Parameters.AddWithValue( "@TIPO", modelo.TIPO); cmd.Parameters.AddWithValue( "@CX", modelo.CX); cmd.Parameters.AddWithValue( "@CY", modelo.CY); cmd.Parameters.AddWithValue( "@COMP", modelo.COMP); cmd.Parameters.AddWithValue( "@ATIVO", modelo.ATIVO); } #endregion } }