SankhyaAPI.Client 1.0.1

There is a newer version of this package available.
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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SankhyaAPI.Client" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SankhyaAPI.Client --version 1.0.1                
#r "nuget: SankhyaAPI.Client, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SankhyaAPI.Client as a Cake Addin
#addin nuget:?package=SankhyaAPI.Client&version=1.0.1

// Install SankhyaAPI.Client as a Cake Tool
#tool nuget:?package=SankhyaAPI.Client&version=1.0.1                

👜 SankhyaAPI.Client

GitHub issues GitHub forks GitHub stars GitHub license GitHub Languages Nuget

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

  1. 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.

  1. Para configurar o pacote para ser usado em seu projeto, é necessário carregar a classe SankhyaClientSettings no 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);
    
  2. É 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

  1. Para utilização nas três operações principais disponíveis Update, Insert e 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
    
  2. 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 Enum representando a instância da entidade (o mesmo deve utilizar o atributo XmlEnum 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.

  1. 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);
    
    
  1. 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);
    
  1. 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);
    
  1. 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 tipo T.

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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