SankhyaAPI.Client
                             
                            
                                1.0.1
                            
                        
                    See the version list below for details.
dotnet add package SankhyaAPI.Client --version 1.0.1
NuGet\Install-Package SankhyaAPI.Client -Version 1.0.1
<PackageReference Include="SankhyaAPI.Client" Version="1.0.1" />
<PackageVersion Include="SankhyaAPI.Client" Version="1.0.1" />
<PackageReference Include="SankhyaAPI.Client" />
paket add SankhyaAPI.Client --version 1.0.1
#r "nuget: SankhyaAPI.Client, 1.0.1"
#:package SankhyaAPI.Client@1.0.1
#addin nuget:?package=SankhyaAPI.Client&version=1.0.1
#tool nuget:?package=SankhyaAPI.Client&version=1.0.1
👜 SankhyaAPI.Client
Projeto de integração com ERP Sankhya para operação de CRUD!
📑 Índice
🚀 Sobre
Este projeto tem como objetivo disponibilizar, de maneira mais sucinta, métodos mais utilizados para manipulações e retornos de dados. Utilizando a própria API do Sankhya disponível aqui, o projeto abstrai os métodos para o usuário.
📦 Instalação
- Na raiz do seu projeto, use o seguinte comando:
dotnet add package SankhyaAPI.Client --version x.y.z
⚙ Configuração
Inicialmente, é importante destacar que esse pacote foi pensado para um contexto de injeção de dependência. Então, as configurações abaixo mostram como configurá-la na mesma.
- Para configurar o pacote para ser usado em seu projeto, é necessário carregar a classe - SankhyaClientSettingsno namespace- SankhyaAPI.Client.Providers. Essa classe deve ser injetada dentro das configurações do seu ser IServiceCollection como no exemplo abaixo.- Campo - Descrição - BaseUrl- URL de conexão com aplicação SANKHYA - Usuario- Usuário que será utilizado para operações - Senha- Senha do Usuário - SankhyaClientSettings sankhyaSettings = new SankhyaClientSettings(); sankhyaSettings.BaseUrl = "https://seusistema.sankhya.com"; sankhyaSettings.Usuario = "usuario"; sankhyaSettings.Senha = "senha"; builder.Services.Configure<SankhyaClientSettings>(sankhyaSettings);
- É importante também injetar o serviço - builder.Services.AddSankhyaClient();para que a classes de serviços estejam configuradas na injeção de dependência da sua solução.
Funcionalidades
- Para utilização nas três operações principais disponíveis - Update,- Inserte- Select. É necessário mapear a entidade de desejada para um objeto. Um exemplo é a entidade Produto, abaixo estão algumas propriedades da mesma. Campos pertencentes à chave primária devem ter o atributo- PrimaryKeyElement.- Campo - Descrição - Tipo - Obrigatório - Padrão - ElementName- Nome do campo na Entidade - string- sim - - - AutoEnumerable- Chave com numeração automática - bool- não - - - public class ProdutoEntity : XmlSerialable { [PrimaryKeyElement("CODPROD", true)] public long? CodProd { get; set; } [XmlElement("CODVOL")] public string? CodVol { get; set; } [XmlElement("DESCRPROD")] public string? DescrProd { get; set; } [XmlElement("REFFORN")] public string? RefForn { get; set; } } # obs: É indicado mapear todas as propriedades como nullable
- Para criar a classe de serviço que vai operar nesse entidade é necessário passar como parâmetro um - IOptions<SankhyaClientSettings>, a classe que representa a entidade e um- Enumrepresentando a instância da entidade (o mesmo deve utilizar o atributo- XmlEnumcom o nome da instância):- public enum EEntityNames { [XmlEnum("Produto")] Produto, } public class ProdutoClientService(IOptions<SankhyaClientSettings> sankhyaApiConfig) : BaseService<ProdutoEntity>( sankhyaApiConfig, EEntityNames.Produto)
Uso
Operações de CRUD
Esta biblioteca permite realizar operações de CRUD (Criar, Ler, Atualizar e Excluir) usando classes de serviço que herdam de uma classe base genérica (BaseService<T>). A seguir estão exemplos de como utilizar esses métodos.
- Inserir
- O método Inserir permite adicionar uma ou mais instâncias de uma entidade no banco de dados.
// Para inserir uma lista de objetos var produtos = new List<ProdutoEntity> { new ProdutoEntity { CodProd = 1, CodVol = "UN", DescrProd = "Produto A", RefForn = "F123" }, new ProdutoEntity { CodProd = 2, CodVol = "UN", DescrProd = "Produto B", RefForn = "F456" } }; var response = await produtoClientService.Inserir(produtos); // Para inserir um único objeto var produto = new ProdutoEntity { CodProd = 3, CodVol = "UN", DescrProd = "Produto C", RefForn = "F789" }; var response = await produtoClientService.Inserir(produto);
- Atualizar
- O método Atualizar permite modificar uma ou mais instâncias de uma entidade já existente no banco de dados.
// Para atualizar uma lista de objetos produtos[0].DescrProd = "Produto A Atualizado"; var response = await produtoClientService.Atualizar(produtos); // Para atualizar um único objeto produto.DescrProd = "Produto C Atualizado"; var response = await produtoClientService.Atualizar(produto);
- Recuperar
- O método Recuperar permite buscar dados de uma entidade com base em uma query SQL.
string query = "SELECT * FROM Produto WHERE CodProd = 1"; var produtos = await produtoClientService.Recuperar(query);
- Query
- O método Query permite executar uma consulta SQL nativa e retornar os dados em uma lista de objetos mapeados ou em um dicionário de valores.
public class ProdutoEntity { [XmlElement("CODPROD")] public long CodProd { get; set; } [XmlElement("CODVOL")] public string? CodVol { get; set; } [XmlElement("DESCRPROD")] public string? DescrProd { get; set; } [XmlElement("REFFORN")] public string? RefForn { get; set; } [XmlElement("DESCRGRUPOPROD")] public string? Grupo { get; set; } } # Program.cs // Exemplo de uso do método Query para retornar uma lista de objetos string script = "SELECT * FROM Produto WHERE CodProd > 1"; List<ProdutoEntity> resultado = await produtoClientService.Query<ProdutoEntity>(script); // Exemplo de uso do método Query para retornar uma lista de dicionários List<Dictionary<string, dynamic?> resultadoDicionario = await produtoClientService.Query(script);
Descrição dos Métodos na BaseService<T>
- Inserir(List<T> requests): Recebe uma lista de objetos do tipo Tpara inserir no banco. Retorna uma lista dos objetos inseridos.
- Inserir(T request): Recebe uma instância de Te insere uma linha no banco. Retorna o objeto inserido.
- Atualizar(List<T> requests): Recebe uma lista de objetos do tipo Tpara atualizar. Retorna uma lista dos objetos atualizados.
- Atualizar(T request): Recebe uma instância de Te atualiza a linha correspondente no banco. Retorna o objeto atualizado.
- Recuperar(string query): Executa uma consulta com base na querypassada e retorna uma lista de objetos do tipoT.
📄 Licença
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. | 
- 
                                                    net8.0- Azure.Core (>= 1.44.1)
- Newtonsoft.Json (>= 13.0.3)
- Refit (>= 7.1.2)
- Refit.HttpClientFactory (>= 7.0.0)
- Refit.Xml (>= 7.0.0)
- Swashbuckle.AspNetCore.Swagger (>= 6.8.1)
- Swashbuckle.AspNetCore.SwaggerGen (>= 6.8.1)
- Swashbuckle.AspNetCore.SwaggerUI (>= 6.8.1)
 
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 5.1.0 | 321 | 4/15/2025 | |
| 5.0.0 | 172 | 4/11/2025 | |
| 4.3.0 | 193 | 4/10/2025 | |
| 4.2.0 | 230 | 4/10/2025 | |
| 4.1.0 | 271 | 4/10/2025 | |
| 4.0.1 | 273 | 4/10/2025 | |
| 4.0.0 | 259 | 4/4/2025 | |
| 3.2.0 | 306 | 4/3/2025 | |
| 3.1.0 | 286 | 4/2/2025 | |
| 3.0.1 | 289 | 4/1/2025 | |
| 3.0.0 | 280 | 4/1/2025 | |
| 2.1.0 | 287 | 3/31/2025 | |
| 2.0.0 | 308 | 11/11/2024 | |
| 1.1.0 | 289 | 11/2/2024 | |
| 1.0.1 | 291 | 11/1/2024 | |
| 1.0.0 | 262 | 11/1/2024 | |
| 0.5.2.11 | 269 | 10/29/2024 | |
| 0.5.2.10 | 268 | 10/29/2024 | |
| 0.5.2.9 | 253 | 10/29/2024 | |
| 0.5.2.8 | 265 | 10/29/2024 | |
| 0.5.2.7 | 263 | 10/29/2024 | |
| 0.5.2.6 | 267 | 10/29/2024 | |
| 0.5.2.5 | 287 | 10/29/2024 | |
| 0.5.2.4 | 274 | 10/29/2024 | |
| 0.5.2.3 | 263 | 10/25/2024 | |
| 0.5.2.2 | 246 | 10/25/2024 | |
| 0.5.2.1 | 254 | 10/25/2024 | |
| 0.5.2 | 274 | 10/24/2024 | |
| 0.5.1 | 258 | 10/24/2024 | |
| 0.5.0 | 255 | 10/23/2024 | |
| 0.4.2 | 270 | 10/15/2024 | |
| 0.4.1 | 251 | 10/15/2024 | |
| 0.4.0 | 269 | 10/15/2024 | |
| 0.3.3 | 264 | 10/14/2024 | |
| 0.3.2 | 264 | 10/14/2024 | |
| 0.3.1 | 262 | 10/14/2024 | |
| 0.3.0 | 260 | 10/14/2024 | |
| 0.2.0 | 263 | 10/12/2024 | |
| 0.1.2 | 264 | 10/11/2024 | |
| 0.1.1 | 317 | 10/11/2024 | |
| 0.1.0 | 256 | 10/11/2024 |