using System; using System.Collections.Generic; using System.Data.SqlClient; using Microsoft.Data.SqlClient; using MLL; namespace DALL { public class DALEmpresa { private readonly string connectionString; public DALEmpresa(string conn) { connectionString = conn; } // 🔹 LISTAR public List Listar() { var lista = new List(); try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM Empresa"; using (SqlCommand cmd = new SqlCommand(sql, conn)) using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { lista.Add(new ModeloEmpresa( Convert.ToInt32(dr["IdEmpresa"]), dr["Nome"]?.ToString(), dr["CNPJ"]?.ToString(), dr["TipoEmpresa"]?.ToString(), dr["RegimeTributario"]?.ToString(), dr["CNAE"]?.ToString(), dr["Cep"]?.ToString(), dr["Endereco"]?.ToString(), Convert.ToInt32(dr["Numero"]), dr["Complemento"]?.ToString(), dr["Bairro"]?.ToString(), dr["Cidade"]?.ToString(), dr["UF"]?.ToString(), dr["Pais"]?.ToString(), dr["Telefone1"]?.ToString(), dr["Telefone2"]?.ToString(), dr["Celular"]?.ToString(), dr["Whatsapp"]?.ToString(), dr["Email"]?.ToString(), dr["Site"]?.ToString(), dr["InscricaoEstadual"]?.ToString(), dr["InscricaoMunicipal"]?.ToString(), dr["CNPJCPF_Contador"]?.ToString(), dr["Nome_Contador"]?.ToString(), dr["TextoParaRecibo"]?.ToString(), Convert.ToBoolean(dr["Ativo"]), Convert.ToDateTime(dr["CriadoEm"]), Convert.ToDateTime(dr["AtualizadoEm"]) )); } } } } catch { return new List(); } return lista; }//listarEmpresa // 🔹 CARREGAR POR ID public ModeloEmpresa CarregarModeloEmpresa(int id) { try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "SELECT * FROM Empresa WHERE IdEmpresa = @Id"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Id", id); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { return new ModeloEmpresa( Convert.ToInt32(dr["Id"]), dr["Nome"]?.ToString(), dr["CNPJ"]?.ToString(), dr["TipoEmpresa"]?.ToString(), dr["RegimeTributario"]?.ToString(), dr["CNAE"]?.ToString(), dr["Cep"]?.ToString(), dr["Endereco"]?.ToString(), Convert.ToInt32(dr["Numero"]), dr["Complemento"]?.ToString(), dr["Bairro"]?.ToString(), dr["Cidade"]?.ToString(), dr["UF"]?.ToString(), dr["Pais"]?.ToString(), dr["Telefone1"]?.ToString(), dr["Telefone2"]?.ToString(), dr["Celular"]?.ToString(), dr["Whatsapp"]?.ToString(), dr["Email"]?.ToString(), dr["Site"]?.ToString(), dr["InscricaoEstadual"]?.ToString(), dr["InscricaoMunicipal"]?.ToString(), dr["CNPJCPF_Contador"]?.ToString(), dr["Nome_Contador"]?.ToString(), dr["TextoParaRecibo"]?.ToString(), Convert.ToBoolean(dr["Ativo"]), Convert.ToDateTime(dr["CriadoEm"]), Convert.ToDateTime(dr["AtualizadoEm"]) ); } } } } } catch { } return null; }//CarregarModeloEmpresaPorID // 🔹 INSERIR public bool Inserir(ModeloEmpresa obj) { try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = @"INSERT INTO Empresa (Nome, CNPJ, TipoEmpresa, RegimeTributario, CNAE, Cep, Endereco, Numero, Complemento, Bairro, Cidade, UF, Pais, Telefone1, Telefone2, Celular, Whatsapp, Email, Site, InscricaoEstadual, InscricaoMunicipal, CNPJCPF_Contador, Nome_Contador, TextoParaRecibo, Ativo) VALUES (@Nome, @CNPJ, @TipoEmpresa, @RegimeTributario, @CNAE, @Cep, @Endereco, @Numero, @Complemento, @Bairro, @Cidade, @UF, @Pais, @Telefone1, @Telefone2, @Celular, @Whatsapp, @Email, @Site, @InscricaoEstadual, @InscricaoMunicipal, @CNPJCPF_Contador, @Nome_Contador, @TextoParaRecibo, @Ativo)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { PreencherParametros(cmd, obj); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } }//Incluir // 🔹 ALTERAR public bool Alterar(ModeloEmpresa obj) { try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = @"UPDATE Empresa SET Nome=@Nome, CNPJ=@CNPJ, TipoEmpresa=@TipoEmpresa, RegimeTributario=@RegimeTributario, CNAE=@CNAE, Cep=@Cep, Endereco=@Endereco, Numero=@Numero, Complemento=@Complemento, Bairro=@Bairro, Cidade=@Cidade, UF=@UF, Pais=@Pais, Telefone1=@Telefone1, Telefone2=@Telefone2, Celular=@Celular, Whatsapp=@Whatsapp, Email=@Email, Site=@Site, InscricaoEstadual=@InscricaoEstadual, InscricaoMunicipal=@InscricaoMunicipal, CNPJCPF_Contador=@CNPJCPF_Contador, Nome_Contador=@Nome_Contador, TextoParaRecibo=@TextoParaRecibo, Ativo=@Ativo, AtualizadoEm=GETDATE() WHERE IdEmpresa=@Id"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { PreencherParametros(cmd, obj); cmd.Parameters.AddWithValue("@Id", obj.Id); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } }//Alterar // 🔹 EXCLUIR public bool Excluir(int id) { try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string sql = "DELETE FROM Empresa WHERE IdEmpresa=@Id"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Id", id); return cmd.ExecuteNonQuery() > 0; } } } catch { return false; } }//Excluir // 🔹 MÉTODO AUXILIAR (evita repetição) private void PreencherParametros(SqlCommand cmd, ModeloEmpresa obj) { cmd.Parameters.AddWithValue("@Nome", obj.Nome ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@CNPJ", obj.CNPJ ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@TipoEmpresa", obj.TipoEmpresa ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@RegimeTributario", obj.RegimeTributario ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@CNAE", obj.CNAE ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Cep", obj.Cep ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Endereco", obj.Endereco ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Numero", obj.Numero); cmd.Parameters.AddWithValue("@Complemento", obj.Complemento ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Bairro", obj.Bairro ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Cidade", obj.Cidade ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@UF", obj.UF ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Pais", obj.Pais ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Telefone1", obj.Telefone1 ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Telefone2", obj.Telefone2 ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Celular", obj.Celular ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Whatsapp", obj.Whatsapp ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Email", obj.Email ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Site", obj.Site ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@InscricaoEstadual", obj.InscricaoEstadual ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@InscricaoMunicipal", obj.InscricaoMunicipal ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@CNPJCPF_Contador", obj.CNPJCPF_Contador ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Nome_Contador", obj.Nome_Contador ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@TextoParaRecibo", obj.TextoParaRecibo ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Ativo", obj.Ativo); }//Preencher parametros public ModeloEmpresa? CarregarEmpresaAtiva() { try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); // Retorna a primeira empresa com Ativo = true string sql = "SELECT TOP 1 * FROM Empresa WHERE Ativo = 1"; using (SqlCommand cmd = new SqlCommand(sql, conn)) using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr.Read()) { return new ModeloEmpresa( Convert.ToInt32(dr["IdEmpresa"]), dr["Nome"]?.ToString(), dr["CNPJ"]?.ToString(), dr["TipoEmpresa"]?.ToString(), dr["RegimeTributario"]?.ToString(), dr["CNAE"]?.ToString(), dr["Cep"]?.ToString(), dr["Endereco"]?.ToString(), Convert.ToInt32(dr["Numero"]), dr["Complemento"]?.ToString(), dr["Bairro"]?.ToString(), dr["Cidade"]?.ToString(), dr["UF"]?.ToString(), dr["Pais"]?.ToString(), dr["Telefone1"]?.ToString(), dr["Telefone2"]?.ToString(), dr["Celular"]?.ToString(), dr["Whatsapp"]?.ToString(), dr["Email"]?.ToString(), dr["Site"]?.ToString(), dr["InscricaoEstadual"]?.ToString(), dr["InscricaoMunicipal"]?.ToString(), dr["CNPJCPF_Contador"]?.ToString(), dr["Nome_Contador"]?.ToString(), dr["TextoParaRecibo"]?.ToString(), Convert.ToBoolean(dr["Ativo"]), Convert.ToDateTime(dr["CriadoEm"]), Convert.ToDateTime(dr["AtualizadoEm"]) ); } } } } catch { } return null; }//CarregarEmpresaAtiva } }