SankhyaAPI.Client
2.0.0
dotnet add package SankhyaAPI.Client --version 2.0.0
NuGet\Install-Package SankhyaAPI.Client -Version 2.0.0
<PackageReference Include="SankhyaAPI.Client" Version="2.0.0" />
paket add SankhyaAPI.Client --version 2.0.0
#r "nuget: SankhyaAPI.Client, 2.0.0"
// Install SankhyaAPI.Client as a Cake Addin #addin nuget:?package=SankhyaAPI.Client&version=2.0.0 // Install SankhyaAPI.Client as a Cake Tool #tool nuget:?package=SankhyaAPI.Client&version=2.0.0
👜 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
SankhyaClientSettings
no namespaceSankhyaAPI.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
,Insert
eSelect
. É 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 atributoPrimaryKeyElement
.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 : SankhyaModelBase { [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 umEnum
representando a instância da entidade (o mesmo deve utilizar o atributoXmlEnum
com 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
T
para inserir no banco. Retorna uma lista dos objetos inseridos. - Inserir(T request): Recebe uma instância de
T
e insere uma linha no banco. Retorna o objeto inserido. - Atualizar(List<T> requests): Recebe uma lista de objetos do tipo
T
para atualizar. Retorna uma lista dos objetos atualizados. - Atualizar(T request): Recebe uma instância de
T
e atualiza a linha correspondente no banco. Retorna o objeto atualizado. - Recuperar(string query): Executa uma consulta com base na
query
passada 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. |
-
net8.0
- Azure.Core (>= 1.44.1)
- Newtonsoft.Json (>= 13.0.3)
- Refit (>= 8.0.0)
- Refit.HttpClientFactory (>= 8.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 |
---|---|---|
2.0.0 | 89 | 11/11/2024 |
1.1.0 | 92 | 11/2/2024 |
1.0.1 | 76 | 11/1/2024 |
1.0.0 | 78 | 11/1/2024 |
0.5.2.11 | 85 | 10/29/2024 |
0.5.2.10 | 66 | 10/29/2024 |
0.5.2.9 | 66 | 10/29/2024 |
0.5.2.8 | 68 | 10/29/2024 |
0.5.2.7 | 64 | 10/29/2024 |
0.5.2.6 | 64 | 10/29/2024 |
0.5.2.5 | 73 | 10/29/2024 |
0.5.2.4 | 84 | 10/29/2024 |
0.5.2.3 | 71 | 10/25/2024 |
0.5.2.2 | 63 | 10/25/2024 |
0.5.2.1 | 65 | 10/25/2024 |
0.5.2 | 65 | 10/24/2024 |
0.5.1 | 69 | 10/24/2024 |
0.5.0 | 71 | 10/23/2024 |
0.4.2 | 73 | 10/15/2024 |
0.4.1 | 72 | 10/15/2024 |
0.4.0 | 78 | 10/15/2024 |
0.3.3 | 82 | 10/14/2024 |
0.3.2 | 78 | 10/14/2024 |
0.3.1 | 78 | 10/14/2024 |
0.3.0 | 75 | 10/14/2024 |
0.2.0 | 81 | 10/12/2024 |
0.1.2 | 86 | 10/11/2024 |
0.1.1 | 97 | 10/11/2024 |
0.1.0 | 82 | 10/11/2024 |