555 lines
15 KiB
C#
555 lines
15 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using Microsoft.Data.SqlClient;
|
|
using MLL;
|
|
|
|
namespace DALL
|
|
{
|
|
public class DALFornecedores
|
|
{
|
|
private readonly string connectionString;
|
|
|
|
public DALFornecedores(string conexao)
|
|
{
|
|
connectionString = conexao;
|
|
}
|
|
public bool Inserir(ModeloFornecedores modelo)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
INSERT INTO Fornecedores
|
|
(
|
|
EmpresaId,
|
|
Nome,
|
|
TipoPessoa,
|
|
Documento,
|
|
Telefone,
|
|
Celular,
|
|
Whatsapp,
|
|
Email,
|
|
Cep,
|
|
Endereco,
|
|
Numero,
|
|
Complemento,
|
|
Bairro,
|
|
Cidade,
|
|
UF,
|
|
NomeFantasia,
|
|
InscricaoEstadual,
|
|
Site,
|
|
Observacoes,
|
|
Ativo
|
|
)
|
|
VALUES
|
|
(
|
|
@EmpresaId,
|
|
@Nome,
|
|
@TipoPessoa,
|
|
@Documento,
|
|
@Telefone,
|
|
@Celular,
|
|
@Whatsapp,
|
|
@Email,
|
|
@Cep,
|
|
@Endereco,
|
|
@Numero,
|
|
@Complemento,
|
|
@Bairro,
|
|
@Cidade,
|
|
@UF,
|
|
@NomeFantasia,
|
|
@InscricaoEstadual,
|
|
@Site,
|
|
@Observacoes,
|
|
@Ativo
|
|
)";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
PreencherParametros(cmd, modelo);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}
|
|
public bool Alterar(ModeloFornecedores modelo)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
UPDATE Fornecedores SET
|
|
|
|
EmpresaId=@EmpresaId,
|
|
Nome=@Nome,
|
|
TipoPessoa=@TipoPessoa,
|
|
Documento=@Documento,
|
|
Telefone=@Telefone,
|
|
Celular=@Celular,
|
|
Whatsapp=@Whatsapp,
|
|
Email=@Email,
|
|
Cep=@Cep,
|
|
Endereco=@Endereco,
|
|
Numero=@Numero,
|
|
Complemento=@Complemento,
|
|
Bairro=@Bairro,
|
|
Cidade=@Cidade,
|
|
UF=@UF,
|
|
NomeFantasia=@NomeFantasia,
|
|
InscricaoEstadual=@InscricaoEstadual,
|
|
Site=@Site,
|
|
Observacoes=@Observacoes,
|
|
Ativo=@Ativo
|
|
|
|
WHERE Id=@Id";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
PreencherParametros(cmd, modelo);
|
|
|
|
cmd.Parameters.AddWithValue("@Id", modelo.Id);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}
|
|
public bool Excluir(int id)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = "DELETE FROM Fornecedores WHERE Id=@Id";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@Id", id);
|
|
|
|
conn.Open();
|
|
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}
|
|
public ModeloFornecedores? Carregar(int id)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = "SELECT * FROM Fornecedores WHERE Id=@Id";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@Id", id);
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
if (dr.Read())
|
|
return PreencherModelo(dr);
|
|
|
|
return null;
|
|
}
|
|
public ModeloFornecedores? CarregarPorDocumento(int empresaId, string documento)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT *
|
|
FROM Fornecedores
|
|
WHERE EmpresaId=@EmpresaId
|
|
AND Documento=@Documento";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@EmpresaId", empresaId);
|
|
cmd.Parameters.AddWithValue("@Documento", documento);
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
if (dr.Read())
|
|
return PreencherModelo(dr);
|
|
|
|
return null;
|
|
}
|
|
public List<ModeloFornecedores> Listar(int? empresaId = null,string? nome = null,string? documento = null,string? telefone = null,string? celular = null,string? cidade = null,string? uf = null,string? email = null,bool? ativo = null)
|
|
{
|
|
List<ModeloFornecedores> lista = [];
|
|
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"SELECT * FROM Fornecedores WHERE 1=1";
|
|
|
|
using SqlCommand cmd = new();
|
|
|
|
if (empresaId != null)
|
|
{
|
|
sql += " AND EmpresaId=@EmpresaId";
|
|
cmd.Parameters.AddWithValue("@EmpresaId", empresaId);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(nome))
|
|
{
|
|
sql += " AND Nome LIKE @Nome";
|
|
cmd.Parameters.AddWithValue("@Nome", "%" + nome + "%");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(documento))
|
|
{
|
|
sql += " AND Documento LIKE @Documento";
|
|
cmd.Parameters.AddWithValue("@Documento", "%" + documento + "%");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(telefone))
|
|
{
|
|
sql += " AND Telefone LIKE @Telefone";
|
|
cmd.Parameters.AddWithValue("@Telefone", "%" + telefone + "%");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(celular))
|
|
{
|
|
sql += " AND Celular LIKE @Celular";
|
|
cmd.Parameters.AddWithValue("@Celular", "%" + celular + "%");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(cidade))
|
|
{
|
|
sql += " AND Cidade LIKE @Cidade";
|
|
cmd.Parameters.AddWithValue("@Cidade", "%" + cidade + "%");
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(uf))
|
|
{
|
|
sql += " AND UF=@UF";
|
|
cmd.Parameters.AddWithValue("@UF", uf);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(email))
|
|
{
|
|
sql += " AND Email LIKE @Email";
|
|
cmd.Parameters.AddWithValue("@Email", "%" + email + "%");
|
|
}
|
|
|
|
if (ativo != null)
|
|
{
|
|
sql += " AND Ativo=@Ativo";
|
|
cmd.Parameters.AddWithValue("@Ativo", ativo);
|
|
}
|
|
|
|
sql += " ORDER BY Nome";
|
|
|
|
cmd.Connection = conn;
|
|
cmd.CommandText = sql;
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
while (dr.Read())
|
|
{
|
|
lista.Add(
|
|
PreencherModelo(dr));
|
|
}
|
|
|
|
return lista;
|
|
}
|
|
|
|
#region EXISTE EMAIL
|
|
|
|
public bool ExisteEmail(string email)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT COUNT(*)
|
|
FROM Fornecedores
|
|
WHERE Email=@Email";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@Email", email);
|
|
|
|
conn.Open();
|
|
|
|
return Convert.ToInt32(cmd.ExecuteScalar()) > 0;
|
|
}
|
|
|
|
#endregion
|
|
#region CARREGAR POR NOME
|
|
|
|
public ModeloFornecedores? CarregarPorNome(string nome)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT TOP 1 *
|
|
FROM Fornecedores
|
|
WHERE Nome=@Nome";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@Nome", nome);
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
if (dr.Read())
|
|
return PreencherModelo(dr);
|
|
|
|
return null;
|
|
}
|
|
|
|
#endregion
|
|
#region LISTAR ATIVOS
|
|
|
|
public List<ModeloFornecedores> ListarAtivos()
|
|
{
|
|
return Listar(ativo: true);
|
|
}
|
|
|
|
#endregion
|
|
#region LISTAR INATIVOS
|
|
|
|
public List<ModeloFornecedores> ListarInativos()
|
|
{
|
|
return Listar(ativo: false);
|
|
}
|
|
|
|
#endregion
|
|
#region LISTAR POR CIDADE
|
|
|
|
public List<ModeloFornecedores> ListarPorCidade(string cidade)
|
|
{
|
|
return Listar(cidade: cidade);
|
|
}
|
|
|
|
#endregion
|
|
#region LISTAR POR UF
|
|
|
|
public List<ModeloFornecedores> ListarPorUF(string uf)
|
|
{
|
|
return Listar(uf: uf);
|
|
}
|
|
|
|
#endregion
|
|
#region QUANTIDADE TOTAL
|
|
|
|
public int QuantidadeTotal()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = "SELECT COUNT(*) FROM Fornecedores";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
conn.Open();
|
|
|
|
return Convert.ToInt32(cmd.ExecuteScalar());
|
|
}
|
|
|
|
#endregion
|
|
#region QUANTIDADE ATIVOS
|
|
|
|
public int QuantidadeAtivos()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT COUNT(*)
|
|
FROM Fornecedores
|
|
WHERE Ativo=1";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
conn.Open();
|
|
|
|
return Convert.ToInt32(cmd.ExecuteScalar());
|
|
}
|
|
|
|
#endregion
|
|
#region QUANTIDADE INATIVOS
|
|
|
|
public int QuantidadeInativos()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT COUNT(*)
|
|
FROM Fornecedores
|
|
WHERE Ativo=0";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
conn.Open();
|
|
|
|
return Convert.ToInt32(cmd.ExecuteScalar());
|
|
}
|
|
|
|
#endregion
|
|
#region PRIMEIRO FORNECEDOR
|
|
|
|
public ModeloFornecedores? PrimeiroFornecedor()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT TOP 1 *
|
|
FROM Fornecedores
|
|
ORDER BY Id";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
if (dr.Read())
|
|
return PreencherModelo(dr);
|
|
|
|
return null;
|
|
}
|
|
|
|
#endregion
|
|
#region ÚLTIMO FORNECEDOR
|
|
|
|
public ModeloFornecedores? UltimoFornecedor()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT TOP 1 *
|
|
FROM Fornecedores
|
|
ORDER BY Id DESC";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
conn.Open();
|
|
|
|
using SqlDataReader dr = cmd.ExecuteReader();
|
|
|
|
if (dr.Read())
|
|
return PreencherModelo(dr);
|
|
|
|
return null;
|
|
}
|
|
|
|
#endregion
|
|
#region DASHBOARD
|
|
|
|
public DataTable Dashboard()
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT
|
|
COUNT(*) TOTAL_FORNECEDORES,
|
|
|
|
SUM(
|
|
CASE
|
|
WHEN Ativo = 1
|
|
THEN 1
|
|
ELSE 0
|
|
END
|
|
) FORNECEDORES_ATIVOS,
|
|
|
|
SUM(
|
|
CASE
|
|
WHEN Ativo = 0
|
|
THEN 1
|
|
ELSE 0
|
|
END
|
|
) FORNECEDORES_INATIVOS,
|
|
|
|
COUNT(DISTINCT Cidade) TOTAL_CIDADES,
|
|
|
|
COUNT(DISTINCT UF) TOTAL_ESTADOS
|
|
|
|
FROM Fornecedores";
|
|
|
|
DataTable dt = new();
|
|
|
|
using SqlDataAdapter da = new(sql, conn);
|
|
|
|
da.Fill(dt);
|
|
|
|
return dt;
|
|
}
|
|
|
|
#endregion
|
|
#region PREENCHER PARÂMETROS
|
|
|
|
private void PreencherParametros(SqlCommand cmd, ModeloFornecedores modelo)
|
|
{
|
|
cmd.Parameters.AddWithValue("@EmpresaId", modelo.EmpresaId);
|
|
cmd.Parameters.AddWithValue("@Nome", modelo.Nome);
|
|
cmd.Parameters.AddWithValue("@TipoPessoa", modelo.TipoPessoa);
|
|
cmd.Parameters.AddWithValue("@Documento", modelo.Documento);
|
|
cmd.Parameters.AddWithValue("@Telefone", modelo.Telefone);
|
|
cmd.Parameters.AddWithValue("@Celular", modelo.Celular);
|
|
cmd.Parameters.AddWithValue("@Whatsapp", modelo.Whatsapp);
|
|
cmd.Parameters.AddWithValue("@Email", modelo.Email);
|
|
cmd.Parameters.AddWithValue("@Cep", modelo.Cep);
|
|
cmd.Parameters.AddWithValue("@Endereco", modelo.Endereco);
|
|
cmd.Parameters.AddWithValue("@Numero", (object?)modelo.Numero ?? DBNull.Value);
|
|
cmd.Parameters.AddWithValue("@Complemento", modelo.Complemento);
|
|
cmd.Parameters.AddWithValue("@Bairro", modelo.Bairro);
|
|
cmd.Parameters.AddWithValue("@Cidade", modelo.Cidade);
|
|
cmd.Parameters.AddWithValue("@UF", modelo.UF);
|
|
cmd.Parameters.AddWithValue("@NomeFantasia", modelo.NomeFantasia);
|
|
cmd.Parameters.AddWithValue("@InscricaoEstadual", modelo.InscricaoEstadual);
|
|
cmd.Parameters.AddWithValue("@Site", modelo.Site);
|
|
cmd.Parameters.AddWithValue("@Observacoes", modelo.Observacoes);
|
|
cmd.Parameters.AddWithValue("@Ativo", modelo.Ativo);
|
|
}
|
|
|
|
#endregion
|
|
public bool ExisteDocumento(int empresaId, string documento)
|
|
{
|
|
using SqlConnection conn = new(connectionString);
|
|
|
|
string sql = @"
|
|
SELECT COUNT(*)
|
|
FROM Fornecedores
|
|
WHERE EmpresaId=@EmpresaId
|
|
AND Documento=@Documento";
|
|
|
|
using SqlCommand cmd = new(sql, conn);
|
|
|
|
cmd.Parameters.AddWithValue("@EmpresaId", empresaId);
|
|
cmd.Parameters.AddWithValue("@Documento", documento);
|
|
|
|
conn.Open();
|
|
|
|
return Convert.ToInt32(cmd.ExecuteScalar()) > 0;
|
|
}
|
|
private ModeloFornecedores PreencherModelo(SqlDataReader dr)
|
|
{
|
|
return new ModeloFornecedores
|
|
{
|
|
Id = Convert.ToInt32(dr["Id"]),
|
|
EmpresaId = Convert.ToInt32(dr["EmpresaId"]),
|
|
Nome = Convert.ToString(dr["Nome"]) ?? "",
|
|
TipoPessoa = Convert.ToString(dr["TipoPessoa"]) ?? "",
|
|
Documento = Convert.ToString(dr["Documento"]) ?? "",
|
|
Telefone = Convert.ToString(dr["Telefone"]) ?? "",
|
|
Celular = Convert.ToString(dr["Celular"]) ?? "",
|
|
Whatsapp = Convert.ToString(dr["Whatsapp"]) ?? "",
|
|
Email = Convert.ToString(dr["Email"]) ?? "",
|
|
Cep = Convert.ToString(dr["Cep"]) ?? "",
|
|
Endereco = Convert.ToString(dr["Endereco"]) ?? "",
|
|
Numero = dr["Numero"] == DBNull.Value ? null : Convert.ToInt32(dr["Numero"]),
|
|
Complemento = Convert.ToString(dr["Complemento"]) ?? "",
|
|
Bairro = Convert.ToString(dr["Bairro"]) ?? "",
|
|
Cidade = Convert.ToString(dr["Cidade"]) ?? "",
|
|
UF = Convert.ToString(dr["UF"]) ?? "",
|
|
NomeFantasia = Convert.ToString(dr["NomeFantasia"]) ?? "",
|
|
InscricaoEstadual = Convert.ToString(dr["InscricaoEstadual"]) ?? "",
|
|
Site = Convert.ToString(dr["Site"]) ?? "",
|
|
Observacoes = Convert.ToString(dr["Observacoes"]) ?? "",
|
|
Ativo = Convert.ToBoolean(dr["Ativo"]),
|
|
CriadoEm = dr["CriadoEm"] == DBNull.Value ? null : Convert.ToDateTime(dr["CriadoEm"]),
|
|
AtualizadoEm = dr["AtualizadoEm"] == DBNull.Value ? null : Convert.ToDateTime(dr["AtualizadoEm"])
|
|
};
|
|
}
|
|
|