- Atualizado `.gitignore` para ignorar `FodyWeavers.xsd` e `.history`. - Adicionado suporte a MVVM com `MainWindowViewModel` e comandos. - Criados conversores `BoolToVisibilityConverter` e `StringToVisibilityConverter`. - Implementado `AccessService` para acesso ao banco de dados Access. - Adicionado layout e lógica de interface no `MainWindow.xaml` e `.cs`. - Incluída dependência `System.Data.OleDb` no projeto. - Criados `ClienteSmart` e `IClienteRepository` para modelagem de dados.
86 lines
3.7 KiB
C#
86 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.OleDb;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BD_empresa.Data
|
|
{
|
|
public class AccessService(string connectionString) : IClienteRepository
|
|
{
|
|
private readonly string _connectionString = connectionString;
|
|
|
|
public async Task<List<ClienteSmart>> SearchClientesAsync(string query)
|
|
{
|
|
return await Task.Run(() =>
|
|
{
|
|
var clientes = new List<ClienteSmart>();
|
|
using (var connection = new OleDbConnection(_connectionString))
|
|
{
|
|
connection.Open();
|
|
string sql = @"SELECT Gestao, Cliente, Unidade, CNPJ_CPF, Codigo_Instalacao, Razao_Social FROM Dados_cadastrais WHERE CNPJ_CPF LIKE ? OR Codigo_Instalacao LIKE ? OR Razao_Social LIKE ? OR Cliente LIKE ?";
|
|
using var cmd = new OleDbCommand(sql, connection);
|
|
string likeQuery = $"%{query}%";
|
|
cmd.Parameters.AddWithValue("?", likeQuery);
|
|
cmd.Parameters.AddWithValue("?", likeQuery);
|
|
cmd.Parameters.AddWithValue("?", likeQuery);
|
|
cmd.Parameters.AddWithValue("?", likeQuery);
|
|
using var reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
clientes.Add(new ClienteSmart
|
|
{
|
|
Gestao = reader["Gestao"].ToString(),
|
|
Cliente = reader["Cliente"].ToString(),
|
|
Unidade = reader["Unidade"].ToString(),
|
|
CNPJ_CPF = reader["CNPJ_CPF"].ToString(),
|
|
Codigo_Instalacao = reader["Codigo_Instalacao"].ToString(),
|
|
Razao_Social = reader["Razao_Social"].ToString()
|
|
});
|
|
}
|
|
}
|
|
// Unifica clientes por CNPJ, retorna no máximo 3
|
|
return clientes
|
|
.GroupBy(c => c.CNPJ_CPF)
|
|
.Select(g => g.First())
|
|
.Take(3)
|
|
.ToList();
|
|
});
|
|
}
|
|
|
|
public async Task<List<ClienteSmart>> GetAllClientesAsync()
|
|
{
|
|
return await Task.Run(() =>
|
|
{
|
|
var clientes = new List<ClienteSmart>();
|
|
using (var connection = new OleDbConnection(_connectionString))
|
|
{
|
|
connection.Open();
|
|
string sql = "SELECT Gestao, Cliente, Unidade, CNPJ_CPF, Codigo_Instalacao, Razao_Social FROM Dados_cadastrais";
|
|
using var cmd = new OleDbCommand(sql, connection);
|
|
using var reader = cmd.ExecuteReader();
|
|
while (reader.Read())
|
|
{
|
|
clientes.Add(new ClienteSmart
|
|
{
|
|
Gestao = reader["Gestao"].ToString(),
|
|
Cliente = reader["Cliente"].ToString(),
|
|
Unidade = reader["Unidade"].ToString(),
|
|
CNPJ_CPF = reader["CNPJ_CPF"].ToString(),
|
|
Codigo_Instalacao = reader["Codigo_Instalacao"].ToString(),
|
|
Razao_Social = reader["Razao_Social"].ToString()
|
|
});
|
|
}
|
|
}
|
|
// Unifica clientes por CNPJ
|
|
return clientes
|
|
.GroupBy(c => c.CNPJ_CPF)
|
|
.Select(g => g.First())
|
|
.Take(3)
|
|
.ToList();
|
|
});
|
|
}
|
|
}
|
|
}
|