Documentando o ASP.NET Web API com SWAGGER

As vezes passamos por dificuldades na hora de consumir uma API sem documentação, seja para saber quais  os parâmetros devemos passar ou quais os métodos que estão disponíveis para serem usados, enfim, uma série de coisas que dificultam a vida do programador, o Swagger dar um help na hora de documentar nossos métodos e parâmetros das nossas APIs, facilitando nossa vida, claro.

O Swagger é uma representação simples da sua API RESTful, com uma documentação interativa, é o que eu irei mostrar daqui pra frente.

Na imagem abaixo temos o modelo que nossa documentação irá ficar após configurarmos o Swagger.

swagger_inicio

Bem então vamos lá!

Adicionando Swagger no seu projeto Web API

Para adicionar o Swagger no ASP.NET Web Api, nos devemos instalar um projeto open source chamado Swashbuckle via nuget.

install_swashbuckle

Depois do pacote instalado, navegue para pasta App_Start no Solution Explorer, você irá ver um novo arquivo criado chamado SwaggerConfig.cs

swagger_config

 

Agora é só rodar  pressionando F5 e testar para ver como ficou o Swagger UI help para sua APIs.

swagger_inicio

Agora que temos nossa documentação rodando, vamos explorar alguns métodos http.

Clique no método GET para expandir e novamente clique na opção “Try it out!” para invocar nossa API e retornar os dados, fazendo um teste consumindo objetos reais na nossa API, nesse caso uma lista de produtos retornado do bancos de dados.

api_produto_get

swagger_get_cont

O Nosso teste foi realizado e a API respondeu, o Swagger tem várias outras funcionalidades, vou deixar todos os links para vocês dar uma olhada na documentação. A seguir vou mostrar mais uma funcionalidade bem legal do Swagger, que é o XML Comments, funciona para você adicionar detalhes dos seus métodos usando o Summary.

Para habilitar essa funcionalidade vá no Solution Explorer com o botão direito do mouse clica sobre seu projeto Web API e clica em propriedades. Depois selecione  aba Build>Output e marque a opção XML documentation file.

document_swagger

Depois vamos adicionar o trecho de código no arquivo SwaggerConfig.cs onde configuramos o caminho e o nome que o arquivo vai ser gerado, por padrão ele vai trazer o nome do seu projeto .xml, se não quiser esse nome, basta alterar para o caminho que deseja.

veja:

swagger_xml

Após adicionado o arquivo SwaggerConfig.cs completo irá ficar assim:

swagger_completo

 

Agora vamos comentar os métodos:

lista_produtos

Vamos executar novamente a nossa API e verificar como que ficou a nossa documentação.

summary_remarks

Bom pessoal é isso, a implementação desse projeto está no GitHub, até mais! Abraços!

 

Anúncios

Implementando Dapper e Dapper Extensions no ASP.NET MVC usando DDD, SOLID, DI, IOC, CrossCutting e SelfValidation

Recentemente resolvi usar um único ORM nas minhas aplicações, o escolhido foi o Dapper por ser um micro ORM de alta performace. Veja a tabela uma comparação com outros ORM´s.

DAPPER Eu resolvi criar uma arquitetura modelo onde são implementados alguns patterns de arquitetura:

DDD – Domain Driven Design
SOLID – OOP Principles
DI – Dependency Injection
IOC – Inversion of Control
Cross Cutting
Self Validation Domain

Além deses patterns foram utilizados algumas ferramentas para ajudar nessas implementações, especialmente para DI, eu usei o Simple Injector por ser  um dos container mais rápidos para resolver as dependências.

No projeto que nomeie de Arquitetura modelo, também foi usado o ASPNET MVC 5 e o ASPNET WEB API, esse projeto será mantido no GitHuB e eu estarei atualizando constantemente, está aberto a sugestões e implementações o fonte dos arquivos estão todos disponíveis, é só fazer o download e estudar 😉

Vou deixar aqui o link do projeto no GitHub:

https://github.com/polianadias/arquitetura-modelo.git

Espero que gostem, abraços!

 

Novo Campo CEST incluído no layout NFe e NFCe

Bom dia pessoal!

Recentemente saiu uma nova nota técnica á 2015/003 versão 1.60 que trata de novas alterações, especificamente irei tratar da inclusão do campo CEST, que influência diretamente na NF-e e no NFC-e, que foi introduzido desde a versão 1.10, porém só estará em ambiente de produção em abril/2016, mas pra quem já quer implementar,  o ambiente de homologação já está disponível desde 12/2015.

O que é o campo CEST?

Código Especificador da Substituição Tributária  que estabelece a sistemática de uniformização e identificação das mercadorias e bens
passíveis de sujeição aos regimes de substituição tributária e de antecipação de recolhimento do
ICMS com o encerramento de tributação, relativos às operações subsequentes, conforme
definições do Convênio ICMS 92, de 20 de agosto de 2015.

Para que serve o CEST?

O CEST é composto por 7 (sete) dígitos, veja abaixo:

cest

Este novo código, que passa a fazer parte do XML da NF-e  e NFC-e e deverá ser alimentado no seu ERP, para que possa ser incluído no xml essa nova tag. Para quem ainda não implementou esse campo no ERP, vou deixar a tabela o endereço da tabela oficial publicada no site do CONFAZ  para fazer o download.

Uma dica é implementar este campo próximo ao NCM, mas fica a critério do desenvolvedor, logo esse campo deverá ficar abaixo do campo NCM, assim como é especificado no pacote de Esquemas XML NF-e – Pacote de Liberação No. 8h2 (17/12/2015) (ZIP) do xml, que também está disponível para download, vou deixar o link para quem quiser começar á fazer os testes.

Eu já realizei o teste e vou deixar o exemplo de como fica no XML, a inclusão do campo CEST.

cest_pdf

CEST_XML

Por hoje é só, espero ter ajudado! até a próxima. Abs!

Como validar um schema MDF-e específico para modal em Csharp

Olá! Pessoal, tudo bem?

Vamos agora trabalhar com o projeto MDF-e (Manifesto Eletrônico de Documentos Fiscais – MDF-e) para quem ainda não sabe o que é, irei deixar aqui o link do site do governo explicado tudo sobre MDF-e, e para quem já está trabalhando com esses tipos de projetos fiscais como NF-e, CT-e e outros, já está familiarizado com o tema, vamos ao nosso post de hoje que é a validação de SCHEMAS, essa validação serve para outros projetos, mas iremos focar no projeto MDF-e.

Vamos criar um projeto novo no Visual Studio do tipo WindowsFormsApplication, após criado vamos então colocar a mão na massa, veja abaixo como irá ficar:

1 tela validar schema

Depois do projeto criado, iremos arrastar um Button e chamar de “Validar Schema MDF-e”, agora pressione F7 para podermos iniciar a codificação dessa validação, onde iremos validar o xml do MDF-e específico para Modal Rodoviário. Vamos lá então, veja abaixo como iremos definir nossa validação:

xml validar

Esse XML apresentado acima é o nosso XML apenas a parte Modal Rodoviário do MDF-e que iremos validar para ter certeza que de que ele atende á todos os requisitos do schema específico para Modal Rodoviário do projeto nacional MDF-e, esses esquemas também podem ser encontrados no portal da Sefaz aqui!

Você pode salvar esse arquivo acima com nome infModal e a extensão .xml, baixa  a pasta de schema no portal para poder validar junto com o xml salvo, salva os dois nas mesmas pasta para facilitar na hora de localizar os arquivos para validações. O nome do schema vem por padrão chamado de mdfeModalRodoviario_v1.00.xsd ainda na sua versão 1.0.

Agora que já temos o schema e o arquivo .xml para validar, iremos para parte que interessa. o código!

codigo da validação

Nossa validação ficou pronta, agora é pressionar F5 para validar seu xml, esse modelo de validação vale também para outros schemas, basta trocar o nome do schema e o xml desejado!

Bem é isso, qualquer dúvida deixa no comentário, até a próxima! Bjs!

 

 

Criando App Windows 8.1 para trabalhar com a Biblioteca de Imagens

Hoje iremos trabalhar com a biblioteca de imagens, para isso vamos criar um projeto Windows Apps  utilizando o template Blank App, veja como fica na figura abaixo:

AppProject

Depois de criado o projeto, vamos adicionar uma Basic Page para trabalharmos na visualização da biblioteca de imagens, clique com o botão direto no projeto e selecione Add>New Item, selecione uma Basic Page como na figura abaixo.

blank page

A Basic Page já cria algumas pastas para trabalharmos, o que facilita , bem, então vamos por a mão na massa, ou seja no código, na imagem abaixo temos a biblioteca de imagens que será visualizada no App. Veja:

imagens

Agora vamos dar permissão no App para acessar a biblioteca de imagens, procure no seu projeto um arquivo chamado Package.appxmanifest e abra ele com dois clicks, marque a opção Pictures Library como mostrada na figura abaixo:

permissao

Agora vamos adicionar mais uma classe no projeto, usada para convertemos as imagens, no projeto novamente com o botão direito clique em Add>New item e iremos chamá-la de ThumbnailConverter.cs.

convertImage

Agora vamos codificá-la, observe como irá ficar nossa classe:

converter

Vamos agora abrir o arquivo BasicPage.XAML iremos criar uma GridView para visualizar as imagens, veja como fica no exemplo abaixo.

Primeiro vamos instanciar nossa classe de conversão de imagens.

 xaml converter

Agora, a criação da nossa Gridview:

xaml grid

Pronto, nosso XAML está pronto. Agora abra o arquivo BasicPage1.cs e vamos criar nossas classes de interação com nossa GridView.

Vamos criar duas classes uma chamada MyPic e outra chamada GetDataAsync.

Elas irão ficar da seguinte forma:

mypic

No evento OnNavigatedFrom,  faremos a chamada do método pra ler a biblioteca de imagens, veja:

onnavigated

E por último iremos declarar uma variável do tipo  ObservableCollection e passar como parâmetro para nossa GridView através do DefaultViewModel.

carga

Nossa app está pronto, agora só rodar para ver como fica o resultado.

 resultado

Bem, por hoje é só, até a próxima! Bjs.

Criando Etiqueta para imprimir na Argox OS-214plus com Report Viewer

Olá amigos, bem resolvi fazer esse post, porque recentemente me foi dada essa tarefa, e eu resolvi compartilhar com vocês.

Bem, vamos lá, partindo do princípio que vocês já sabem criar um projeto no Visual Studio, vamos então ao que interessa, criar nossa etiqueta para imprimir na Argox OS-2014plus.

Com o projeto já criado, clica com o botão direto em cima do projeto e clica em Add>New Item e irá escolher o relatório, como na figura mostrada abaixo, vou chamar a etiqueta de EtiquetaArgox-OS-2014plus.rdlc, depois clique no botão Add para adicioná-la no no projeto.

Add Report

Agora que criamos o relatório, vamos personalizar nossa etiqueta com o tamanho 90mmx27mm, existem vários tamanhos, mas irei trabalhar apenas com este.

Pernalizar Etiqueta

Clique nas propriedades do Relatório e coloque da seguinte forma:

config report

Agora nas propriedades Body, no relatório  coloque o Size como na figura abaixo.

body report

A sua etiqueta irá ficar como na figura abaixo, logo após de criada, agora vamos adicionar os campos que iremos usar, para isso, vamos arrastar dois Text Box e uma imagem para personalizar nossa etiqueta.

etiqueta ja personalizada

Agora para visualizar como ficou a Etiqueta vamos clicar com o botão direito no projeto, e selecione Add>New Item e escolha um Form e no ToolBox arraste o ReportViewer para o formulário, irá ficar como na figura abaixo:

reportViewForm

Agora que nossa etiqueta está quase pronta, vamos codificar um pouco, para mostrar os dados na etiqueta, nesse exemplo eu utilizei Entity Framework e Linq, no load do formulário acima basta colocar o seguinte código.

LoadEtiqueta

Agora só executar nossa aplicação pressionando F5, para visualizar o resultado final, e enviar para impressão na Argox-OS214plus.

resultado etiqueta

Antes de imprimir a etiqueta clique no layout de impressão para ser visualizada da forma que foi desenvolvida e em seguida clica na impressora para enviar a impressão.

Bom, se alguém tiver alguma dúvida ou sugestão é deixar o comentário aqui no post! Obrigada e até a próxima! Bjs!

Criando um arquivo TLB com C#

  1. Criar uma nova aplicação no Visual Studio com o Template  Visual C# > Windows Desktop > Class Library que para essa demonstração irei chamar de  Interoperabilidade.

1

  1. Adicionar um novo item do tipo Interface que iremos chamar de InterfaceInterop onde iremos definir as assinaturas dos métodos que iremos utilizar na nossa DLL.

2

  1. Abaixo irei definir o código da nossa Interface:

3

 

Notem que foi necessário adicionar a using System.Runtime.InteropServices para que seja possível utilizar InterfaceType e Guid na nossa Interface e assim ser possível a geração de uma DLL cujo os métodos possam ser acessados por outra linguagem no caso do exemplo o DELPHI.

Para gerar um Guid. Fica na opção Tools>Create Guid .

 

  1. Abaixo a implementação da nossa interface na classe ClassInterop:

4

  1.  Nossa DLL está pronta, mas falta configurar uma propriedade no Build, para isso clique duas vezes sobre Properties na Solution Explorer e clique na guia Build, iremos marcar o item Register for COM interop para que ao terminar de compilar nosso projeto seja gerado um arquivo com a extensão .tlb tornando assim possível a importação para que seja utilizada no Delphi.

5

  1. Agora na Solution Explorer clique no sinal de + ao lado de Properties e clique duas vezes para abrir o cs onde iremos modificar a linha onde tem [assembly: ComVisible(false)] de false para true.

6

Tornando assim possível a importação dos métodos e classes para que se torne acessível por outra linguagem.

  1.   Salve o projeto e compile para que sejam gerados os arquivos e em seguida deverá ir à pasta do projeto onde salvou a solução para copiar a DLL e o TLB gerados durante a compilação. Geralmente deve está em Interoperabilidade\bin\Debug.
  1. Devemos agora copiar os   arquivos dll e Interoperabilidade.tlb para a pasta do projeto em Delphi que queremos usar essa DLL. No meu caso irei utilizar uma aplicação que chamarei de Project1.
  2. No Delphi siga os passos abaixo.

Antes de importar a DLL no é necessário que as duas DLL sejam registradas, segue abaixo, como vocês irão fazer.

Salva em um arquivo txt com a extensão .bat, não esqueça de substituir os caminhos dos arquivos.

16

8

9

11

12

13

14

9 – Uma vez criada a Unit (Interoperabilidade_TLB) ela conterá as chamadas aos métodos que estão na DLL que criamos em C# e assim poderemos utilizar em nossa aplicação normalmente.

15

Agora só executar a aplicação pressionando F9 e testar o funcionamento da solução. Com isso foi possível demonstrar a criação de uma DLL em C# no Visual Studio 2013 e a utilização dela em outra linguagem, no nosso caso o Delphi, usando a interoperabilidade. entre as linguagens.