using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALLContratoEquipamentos { private readonly string connectionString; public DALLContratoEquipamentos(string conexao) { connectionString = conexao; } #region CRUD public bool Inserir( ModeloContratoEquipamentos modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" INSERT INTO ContratoEquipamentos ( ContratoId, Modelo, Marca, Operadora, Serial, NumeroPatrimonio, Observacoes ) VALUES ( @ContratoId, @Modelo, @Marca, @Operadora, @Serial, @NumeroPatrimonio, @Observacoes )"; using SqlCommand cmd = new(sql, conn); PreencherParametros( cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Alterar( ModeloContratoEquipamentos modelo) { try { using SqlConnection conn = new(connectionString); string sql = @" UPDATE ContratoEquipamentos SET ContratoId = @ContratoId, Modelo = @Modelo, Marca = @Marca, Operadora = @Operadora, Serial = @Serial, NumeroPatrimonio = @NumeroPatrimonio, Observacoes = @Observacoes WHERE Id_equipamentos = @Id_equipamentos"; using SqlCommand cmd = new(sql, conn); PreencherParametros( cmd, modelo); cmd.Parameters.AddWithValue( "@Id_equipamentos", modelo.Id_equipamentos); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public bool Excluir(int id) { try { using SqlConnection conn = new(connectionString); string sql = @" DELETE FROM ContratoEquipamentos WHERE Id_equipamentos = @Id_equipamentos"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Id_equipamentos", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } catch { return false; } } public ModeloContratoEquipamentos? Carregar( int id) { using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Id_equipamentos = @Id_equipamentos"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Id_equipamentos", id); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { return PreencherModelo(dr); } return null; } public List Listar() { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoId(int contratoId) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorMarca(string marca) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Marca = @Marca ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Marca", marca); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorSerial(string serial) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Serial = @Serial ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Serial", serial); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorNumeroPatrimonio(string numeroPatrimonio) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE NumeroPatrimonio = @NumeroPatrimonio ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@NumeroPatrimonio", numeroPatrimonio); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorObservacoes(string observacoes) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Observacoes LIKE '%' + @Observacoes + '%' ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Observacoes", observacoes); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorModelo(string modelo) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Modelo = @Modelo ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Modelo", modelo); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorOperadora(string operadora) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE Operadora = @Operadora ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@Operadora", operadora); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdMarca(int contratoId, string marca) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND Marca = @Marca ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@Marca", marca); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdSerial(int contratoId, string serial) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND Serial = @Serial ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@Serial", serial); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdNumeroPatrimonio(int contratoId, string numeroPatrimonio) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND NumeroPatrimonio = @NumeroPatrimonio ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@NumeroPatrimonio", numeroPatrimonio); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdObservacoes(int contratoId, string observacoes) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND Observacoes LIKE '%' + @Observacoes + '%' ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@Observacoes", observacoes); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdModelo(int contratoId, string modelo) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND Modelo = @Modelo ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@Modelo", modelo); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarPorContratoIdOperadora(int contratoId, string operadora) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId AND Operadora = @Operadora ORDER BY Id_equipamentos DESC"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); cmd.Parameters.AddWithValue( "@Operadora", operadora); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } public List ListarOtimizado( int? contratoId = null,string? modelo = null, string? marca = null, string? operadora = null, string? serial = null, string? numeroPatrimonio = null, string? observacoes = null) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE 1 = 1"; using SqlCommand cmd = new(); cmd.Connection = conn; // ───────────────────────────────────── // CONTRATO // ───────────────────────────────────── if (contratoId.HasValue) { sql += @" AND ContratoId = @ContratoId"; cmd.Parameters.AddWithValue( "@ContratoId", contratoId.Value); } // ───────────────────────────────────── // MODELO // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(modelo)) { sql += @" AND Modelo LIKE @Modelo"; cmd.Parameters.AddWithValue( "@Modelo", "%" + modelo + "%"); } // ───────────────────────────────────── // MARCA // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(marca)) { sql += @" AND Marca LIKE @Marca"; cmd.Parameters.AddWithValue( "@Marca", "%" + marca + "%"); } // ───────────────────────────────────── // OPERADORA // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(operadora)) { sql += @" AND Operadora LIKE @Operadora"; cmd.Parameters.AddWithValue( "@Operadora", "%" + operadora + "%"); } // ───────────────────────────────────── // SERIAL // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(serial)) { sql += @" AND Serial LIKE @Serial"; cmd.Parameters.AddWithValue( "@Serial", "%" + serial + "%"); } // ───────────────────────────────────── // PATRIMONIO // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(numeroPatrimonio)) { sql += @" AND NumeroPatrimonio LIKE @NumeroPatrimonio"; cmd.Parameters.AddWithValue( "@NumeroPatrimonio", "%" + numeroPatrimonio + "%"); } // ───────────────────────────────────── // OBSERVAÇÕES // ───────────────────────────────────── if (!string.IsNullOrWhiteSpace(observacoes)) { sql += @" AND Observacoes LIKE @Observacoes"; cmd.Parameters.AddWithValue( "@Observacoes", "%" + observacoes + "%"); } // ───────────────────────────────────── sql += @" ORDER BY Id_equipamentos DESC"; cmd.CommandText = sql; conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } #endregion #region VIEWS public List ListarPorContrato( int contratoId) { List lista = []; using SqlConnection conn = new(connectionString); string sql = @" SELECT * FROM ContratoEquipamentos WHERE ContratoId = @ContratoId"; using SqlCommand cmd = new(sql, conn); cmd.Parameters.AddWithValue( "@ContratoId", contratoId); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add( PreencherModelo(dr)); } return lista; } //public List // ListarPorMarca( // string marca) //{ // List lista = []; // using SqlConnection conn = // new(connectionString); // string sql = @" // SELECT * // FROM ContratoEquipamentos // WHERE Marca = // @Marca"; // using SqlCommand cmd = // new(sql, conn); // cmd.Parameters.AddWithValue( // "@Marca", // marca); // conn.Open(); // using SqlDataReader dr = // cmd.ExecuteReader(); // while (dr.Read()) // { // lista.Add( // PreencherModelo(dr)); // } // return lista; //} //public List // ListarPorSerial( // string serial) //{ // List lista = []; // using SqlConnection conn = // new(connectionString); // string sql = @" // SELECT * // FROM ContratoEquipamentos // WHERE Serial = // @Serial"; // using SqlCommand cmd = // new(sql, conn); // cmd.Parameters.AddWithValue( // "@Serial", // serial); // 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(*) AS TOTAL_EQUIPAMENTOS FROM ContratoEquipamentos"; using SqlCommand cmd = new(sql, conn); using SqlDataAdapter da = new(cmd); DataTable dt = new(); da.Fill(dt); return dt; } #endregion #region HELPERS private static ModeloContratoEquipamentos PreencherModelo( SqlDataReader dr) { return new ModeloContratoEquipamentos { Id_equipamentos = Convert.ToInt32( dr["Id_equipamentos"]), ContratoId = Convert.ToInt32( dr["ContratoId"]), Modelo = dr["Modelo"] == DBNull.Value ? null : Convert.ToString( dr["Modelo"]), Marca = dr["Marca"] == DBNull.Value ? null : Convert.ToString( dr["Marca"]), Operadora = dr["Operadora"] == DBNull.Value ? null : Convert.ToString( dr["Operadora"]), Serial = dr["Serial"] == DBNull.Value ? null : Convert.ToString( dr["Serial"]), NumeroPatrimonio = dr["NumeroPatrimonio"] == DBNull.Value ? null : Convert.ToString( dr["NumeroPatrimonio"]), Observacoes = dr["Observacoes"] == DBNull.Value ? null : Convert.ToString( dr["Observacoes"]) }; } private static void PreencherParametros( SqlCommand cmd, ModeloContratoEquipamentos modelo) { cmd.Parameters.AddWithValue( "@ContratoId", modelo.ContratoId); cmd.Parameters.AddWithValue( "@Modelo", string.IsNullOrWhiteSpace( modelo.Modelo) ? DBNull.Value : modelo.Modelo); cmd.Parameters.AddWithValue( "@Marca", string.IsNullOrWhiteSpace( modelo.Marca) ? DBNull.Value : modelo.Marca); cmd.Parameters.AddWithValue( "@Operadora", string.IsNullOrWhiteSpace( modelo.Operadora) ? DBNull.Value : modelo.Operadora); cmd.Parameters.AddWithValue( "@Serial", string.IsNullOrWhiteSpace( modelo.Serial) ? DBNull.Value : modelo.Serial); cmd.Parameters.AddWithValue( "@NumeroPatrimonio", string.IsNullOrWhiteSpace( modelo.NumeroPatrimonio) ? DBNull.Value : modelo.NumeroPatrimonio); cmd.Parameters.AddWithValue( "@Observacoes", string.IsNullOrWhiteSpace( modelo.Observacoes) ? DBNull.Value : modelo.Observacoes); } #endregion } }