using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DAL { public class DALLCartoes { private readonly string connectionString; public DALLCartoes(string connectionString) { this.connectionString = connectionString; } #region CRUD public bool Inserir(ModeloCartoes modelo) { using SqlConnection conn = new(connectionString); string query = @" INSERT INTO Cartoes ( BANDEIRA, NUM_CARTAO, NOME, VALIDADE, AUTORIZACAO, PARCELAS, VALOR, COD_CLIENTE, RESUMO, DEBITO, COD_CONTA, DIA, COMPENSADO, OBS_COMP ) VALUES ( @BANDEIRA, @NUM_CARTAO, @NOME, @VALIDADE, @AUTORIZACAO, @PARCELAS, @VALOR, @COD_CLIENTE, @RESUMO, @DEBITO, @COD_CONTA, @DIA, @COMPENSADO, @OBS_COMP )"; using SqlCommand cmd = new(query, conn); PreencherParametrosInserir(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; } public bool Alterar(ModeloCartoes modelo) { using SqlConnection conn = new(connectionString); string query = @" UPDATE Cartoes SET CODIGO = @CODIGO, BANDEIRA = @BANDEIRA, NUM_CARTAO = @NUM_CARTAO, NOME = @NOME, VALIDADE = @VALIDADE, AUTORIZACAO = @AUTORIZACAO, PARCELAS = @PARCELAS, VALOR = @VALOR, COD_CLIENTE = @COD_CLIENTE, RESUMO = @RESUMO, DEBITO = @DEBITO, COD_CONTA = @COD_CONTA, DIA = @DIA, COMPENSADO = @COMPENSADO, OBS_COMP = @OBS_COMP WHERE ID_COD_CARTAO = @ID_COD_CARTAO"; using SqlCommand cmd = new(query, conn); PreencherParametrosAlterar(cmd, modelo); cmd.Parameters.AddWithValue("@ID_COD_CARTAO", modelo.ID_COD_CARTAO); conn.Open(); return cmd.ExecuteNonQuery() > 0; } public bool Excluir(int id) { using SqlConnection conn = new(connectionString); string query = @" DELETE FROM Cartoes WHERE ID_COD_CARTAO = @ID_COD_CARTAO"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@ID_COD_CARTAO", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } public ModeloCartoes? ObterPorId(int id) { using SqlConnection conn = new(connectionString); string query = @" SELECT * FROM Cartoes WHERE ID_COD_CARTAO = @ID_COD_CARTAO"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@ID_COD_CARTAO", 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 query = @" SELECT * FROM Cartoes ORDER BY ID_COD_CARTAO DESC"; using SqlCommand cmd = new(query, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add(PreencherModelo(dr)); } return lista; } #endregion #region HELPERS private static ModeloCartoes PreencherModelo(SqlDataReader dr) { return new ModeloCartoes { ID_COD_CARTAO = Convert.ToInt32(dr["ID_COD_CARTAO"]), CODIGO = Convert.ToString(dr["CODIGO"]) ?? string.Empty, BANDEIRA = Convert.ToString(dr["BANDEIRA"]) ?? string.Empty, NUM_CARTAO = Convert.ToString(dr["NUM_CARTAO"]) ?? string.Empty, NOME = Convert.ToString(dr["NOME"]) ?? string.Empty, VALIDADE = Convert.ToString(dr["VALIDADE"]) ?? string.Empty, AUTORIZACAO = Convert.ToString(dr["AUTORIZACAO"]) ?? string.Empty, PARCELAS = Convert.ToString(dr["PARCELAS"]) ?? string.Empty, VALOR = Convert.ToString(dr["VALOR"]) ?? string.Empty, COD_CLIENTE = Convert.ToString(dr["COD_CLIENTE"]) ?? string.Empty, RESUMO = Convert.ToString(dr["RESUMO"]) ?? string.Empty, DEBITO = Convert.ToString(dr["DEBITO"]) ?? string.Empty, COD_CONTA = Convert.ToString(dr["COD_CONTA"]) ?? string.Empty, DIA = Convert.ToString(dr["DIA"]) ?? string.Empty, COMPENSADO = Convert.ToString(dr["COMPENSADO"]) ?? string.Empty, OBS_COMP = Convert.ToString(dr["OBS_COMP"]) ?? string.Empty }; } private static void PreencherParametrosInserir(SqlCommand cmd, ModeloCartoes modelo) { cmd.Parameters.AddWithValue("@BANDEIRA", string.IsNullOrWhiteSpace(modelo.BANDEIRA) ? DBNull.Value : modelo.BANDEIRA); cmd.Parameters.AddWithValue("@NUM_CARTAO", string.IsNullOrWhiteSpace(modelo.NUM_CARTAO) ? DBNull.Value : modelo.NUM_CARTAO); cmd.Parameters.AddWithValue("@NOME", string.IsNullOrWhiteSpace(modelo.NOME) ? DBNull.Value : modelo.NOME); cmd.Parameters.AddWithValue("@VALIDADE", string.IsNullOrWhiteSpace(modelo.VALIDADE) ? DBNull.Value : modelo.VALIDADE); cmd.Parameters.AddWithValue("@AUTORIZACAO", string.IsNullOrWhiteSpace(modelo.AUTORIZACAO) ? DBNull.Value : modelo.AUTORIZACAO); cmd.Parameters.AddWithValue("@PARCELAS", string.IsNullOrWhiteSpace(modelo.PARCELAS) ? DBNull.Value : modelo.PARCELAS); cmd.Parameters.AddWithValue("@VALOR", string.IsNullOrWhiteSpace(modelo.VALOR) ? DBNull.Value : modelo.VALOR); cmd.Parameters.AddWithValue("@COD_CLIENTE", string.IsNullOrWhiteSpace(modelo.COD_CLIENTE) ? DBNull.Value : modelo.COD_CLIENTE); cmd.Parameters.AddWithValue("@RESUMO", string.IsNullOrWhiteSpace(modelo.RESUMO) ? DBNull.Value : modelo.RESUMO); cmd.Parameters.AddWithValue("@DEBITO", string.IsNullOrWhiteSpace(modelo.DEBITO) ? DBNull.Value : modelo.DEBITO); cmd.Parameters.AddWithValue("@COD_CONTA", string.IsNullOrWhiteSpace(modelo.COD_CONTA) ? DBNull.Value : modelo.COD_CONTA); cmd.Parameters.AddWithValue("@DIA", string.IsNullOrWhiteSpace(modelo.DIA) ? DBNull.Value : modelo.DIA); cmd.Parameters.AddWithValue("@COMPENSADO", string.IsNullOrWhiteSpace(modelo.COMPENSADO) ? DBNull.Value : modelo.COMPENSADO); cmd.Parameters.AddWithValue("@OBS_COMP", string.IsNullOrWhiteSpace(modelo.OBS_COMP) ? DBNull.Value : modelo.OBS_COMP); } private static void PreencherParametrosAlterar(SqlCommand cmd, ModeloCartoes modelo) { cmd.Parameters.AddWithValue("@CODIGO", string.IsNullOrWhiteSpace(modelo.CODIGO) ? DBNull.Value : modelo.CODIGO); PreencherParametrosInserir(cmd, modelo); } #endregion } }