using System; using System.Collections.Generic; using System.Data.SqlClient; using Microsoft.Data.SqlClient; using MLL; public class DALEmpresaConfig { private readonly string _connectionString; public DALEmpresaConfig(string connectionString) { _connectionString = connectionString; } #region INSERT public bool Inserir(ModeloEmpresaConfig config) { using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = @" INSERT INTO Empresa_config ( IdEmpresa, NomeSistema, CorPrimaria, CorSecundaria, Logo, Favicon, ExibirCPFCliente, ExibirTelefoneCliente, ExibirGarantia, DiasGarantiaPadrao, GerarReciboAutomatico, ExibirValoresOS, EnviarEmailAutomatico, EnviarWhatsappAutomatico, ModoEscuro, PermitirEdicaoOSFinalizada ) SELECT @IdEmpresa, @NomeSistema, @CorPrimaria, @CorSecundaria, @Logo, @Favicon, @ExibirCPFCliente, @ExibirTelefoneCliente, @ExibirGarantia, @DiasGarantiaPadrao, @GerarReciboAutomatico, @ExibirValoresOS, @EnviarEmailAutomatico, @EnviarWhatsappAutomatico, @ModoEscuro, @PermitirEdicaoOSFinalizada WHERE EXISTS ( SELECT 1 FROM Empresa WHERE IdEmpresa = @IdEmpresa AND Ativo = 1 ) AND NOT EXISTS ( SELECT 1 FROM Empresa_config WHERE IdEmpresa = @IdEmpresa );"; SqlCommand cmd = new SqlCommand(sql, conn); AddParametros(cmd, config); conn.Open(); int linhas = cmd.ExecuteNonQuery(); if (linhas == 0) throw new Exception("Empresa não encontrada, inativa ou já possui configuração."); return true; } } #endregion #region UPDATE public bool Atualizar(ModeloEmpresaConfig config) { using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = @" UPDATE Empresa_config SET NomeSistema = @NomeSistema, CorPrimaria = @CorPrimaria, CorSecundaria = @CorSecundaria, Logo = @Logo, Favicon = @Favicon, ExibirCPFCliente = @ExibirCPFCliente, ExibirTelefoneCliente = @ExibirTelefoneCliente, ExibirGarantia = @ExibirGarantia, DiasGarantiaPadrao = @DiasGarantiaPadrao, GerarReciboAutomatico = @GerarReciboAutomatico, ExibirValoresOS = @ExibirValoresOS, EnviarEmailAutomatico = @EnviarEmailAutomatico, EnviarWhatsappAutomatico = @EnviarWhatsappAutomatico, ModoEscuro = @ModoEscuro, PermitirEdicaoOSFinalizada = @PermitirEdicaoOSFinalizada, AtualizadoEm = GETDATE() WHERE IdEmpresaConfig = @IdEmpresaConfig AND EXISTS ( SELECT 1 FROM Empresa WHERE IdEmpresa = @IdEmpresa AND Ativo = 1 );"; SqlCommand cmd = new SqlCommand(sql, conn); AddParametros(cmd, config); cmd.Parameters.AddWithValue("@IdEmpresaConfig", config.IdEmpresaConfig); conn.Open(); int linhas = cmd.ExecuteNonQuery(); if (linhas == 0) throw new Exception("Não foi possível atualizar."); return true; } } #endregion #region DELETE public bool Excluir(int id) { using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = "DELETE FROM Empresa_config WHERE IdEmpresaConfig = @Id"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@Id", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; } } #endregion #region GET POR EMPRESA public ModeloEmpresaConfig ObterPorEmpresa(int idEmpresa) { using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = "SELECT * FROM Empresa_config WHERE IdEmpresa = @IdEmpresa"; SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@IdEmpresa", idEmpresa); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) return Mapear(dr); return null; } } #endregion #region AUXILIARES private void AddParametros(SqlCommand cmd, ModeloEmpresaConfig config) { cmd.Parameters.AddWithValue("@IdEmpresa", config.IdEmpresa); cmd.Parameters.AddWithValue("@NomeSistema", config.NomeSistema ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@CorPrimaria", config.CorPrimaria ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@CorSecundaria", config.CorSecundaria ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Logo", config.Logo ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@Favicon", config.Favicon ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@ExibirCPFCliente", config.ExibirCPFCliente); cmd.Parameters.AddWithValue("@ExibirTelefoneCliente", config.ExibirTelefoneCliente); cmd.Parameters.AddWithValue("@ExibirGarantia", config.ExibirGarantia); cmd.Parameters.AddWithValue("@DiasGarantiaPadrao", config.DiasGarantiaPadrao); cmd.Parameters.AddWithValue("@GerarReciboAutomatico", config.GerarReciboAutomatico); cmd.Parameters.AddWithValue("@ExibirValoresOS", config.ExibirValoresOS); cmd.Parameters.AddWithValue("@EnviarEmailAutomatico", config.EnviarEmailAutomatico); cmd.Parameters.AddWithValue("@EnviarWhatsappAutomatico", config.EnviarWhatsappAutomatico); cmd.Parameters.AddWithValue("@ModoEscuro", config.ModoEscuro); cmd.Parameters.AddWithValue("@PermitirEdicaoOSFinalizada", config.PermitirEdicaoOSFinalizada); } public List LocalizarTodas() { List lista = new List(); using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = "SELECT * FROM Empresa_config"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add(Mapear(dr)); } } return lista; } private ModeloEmpresaConfig Mapear(SqlDataReader dr) { return new ModeloEmpresaConfig { IdEmpresaConfig = (int)dr["IdEmpresaConfig"], IdEmpresa = (int)dr["IdEmpresa"], NomeSistema = dr["NomeSistema"]?.ToString(), CorPrimaria = dr["CorPrimaria"]?.ToString(), CorSecundaria = dr["CorSecundaria"]?.ToString(), Logo = dr["Logo"]?.ToString(), Favicon = dr["Favicon"]?.ToString(), ExibirCPFCliente = (bool)dr["ExibirCPFCliente"], ExibirTelefoneCliente = (bool)dr["ExibirTelefoneCliente"], ExibirGarantia = (bool)dr["ExibirGarantia"], DiasGarantiaPadrao = (int)dr["DiasGarantiaPadrao"], GerarReciboAutomatico = (bool)dr["GerarReciboAutomatico"], ExibirValoresOS = (bool)dr["ExibirValoresOS"], EnviarEmailAutomatico = (bool)dr["EnviarEmailAutomatico"], EnviarWhatsappAutomatico = (bool)dr["EnviarWhatsappAutomatico"], ModoEscuro = (bool)dr["ModoEscuro"], PermitirEdicaoOSFinalizada = (bool)dr["PermitirEdicaoOSFinalizada"], CriadoEm = (DateTime)dr["CriadoEm"], AtualizadoEm = (DateTime)dr["AtualizadoEm"] }; } public int ObterEmpresaAtivaId() { using (SqlConnection conn = new SqlConnection(_connectionString)) { string sql = @" SELECT TOP 1 IdEmpresa FROM Empresa WHERE Ativo = 1"; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); object result = cmd.ExecuteScalar(); if (result == null) throw new Exception("Nenhuma empresa ativa encontrada."); return Convert.ToInt32(result); } } #endregion }