LevelOS-Core/DAL/DALEmpresaConfig.cs

250 lines
8.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using Microsoft.Data.SqlClient;
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<ModeloEmpresaConfig> LocalizarTodas()
{
List<ModeloEmpresaConfig> lista = new List<ModeloEmpresaConfig>();
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
}