Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,020 changes: 1,020 additions & 0 deletions .vs/config/applicationhost.config

Large diffs are not rendered by default.

Binary file added .vs/devpartner/DesignTimeBuild/.dtbcache
Binary file not shown.
Binary file added .vs/devpartner/v15/.suo
Binary file not shown.
Empty file.
Binary file added .vs/devpartner/v15/Server/sqlite3/storage.ide
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
87 changes: 87 additions & 0 deletions Original Content/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# | Backend na DevPartner

## | Sobre a DevPartner

A relação de parceria estabelecida com o cliente é o ativo mais importante para a DevPartner. É o motor que leva a empresa a conhecer a fundo os negócios do cliente e, junto com ele, desenhar a melhor solução que atenda as suas necessidades.

"A nossa filosofia é a de viver o dia a dia do cliente, conhecer o seu negócio, estar ao seu lado e compreender as suas necessidades para ter a certeza de que vamos produzir o melhor resultado. Ser parceiro é isso!"
***Eduardo Silvestri, Presidente da [DevPartner](http://devpartner.com.br/)***

## | Teste BackEnd para o DevPartner
O teste consiste em entendermos um pouco mais sobre seus conhecimentos com [C-Sharp](https://docs.microsoft.com/en-us/dotnet/csharp/), [.NETFramework](https://docs.microsoft.com/en-us/dotnet/framework/),
[Entity Framework](https://docs.microsoft.com/en-us/ef/),[Aspnet](https://docs.microsoft.com/en-us/aspnet/), [Asp.Net Web API](https://www.asp.net/web-api) e lógica de programação.

## | Orientações
Primeiramente, faça um fork e clone do projeto;
Crie uma branch com o seu nome e sobre nome e depois instale as dependências.

**1. Dê um like e um Fork =)**

![alt text](./assets/image01.png "imagem fork")

**2. Clone do Projeto**
```sh
git clone "https://github.com/**seu-usuario**/backend-test.git"
```
*no lugar do "seu-usuario" coloque o seu usuário do github :)

**3. Criando nova Branch**
```sh
git checkout -b "meunomeEsobrenome"
```
**4. Instalando as dependências**

Abra o projeto clicando no arquivo *devpartner.sln*. Com o projeto aberto no visual studio, basta abrir Package Manager Console (clique no menu {**ferramentas** ou **Tools**} e depois em {**gerenciador de pacotes** ou **Package Manager**}, enfim em {**gerenciador de pacotes console** ou **Package Manager Console**} ) agora é só digitar o comando.

```sh
Update-Package
```

**5. Agora é rodar a aplicação**

F5
*simples assim*

***Observação:** fique a vontade para persistir os dados no banco que for da sua preferência. Aqui usamos MS-SQL e similares mas também curtimos NOSQL*

## | O que precisa ser feito ?

CRUD em Web API de notas fiscais, simples não ?

***Objeto: notaFiscalId, numeroNf, valorTotal, dataNf, cnpjEmissorNf e cnpjDestinatarioNf***

Não se sentiu a vontade com a estrutura do projeto ? **Não tem problema**, pode começar um projeto do zero, do seu jeito. Consideramos importante você dominar os conceitos e não as ferramentas "A" ou "B".

### Terminou e quer enviar para a DevPartner ?

1. Construa uma collection em postman para testarmos suas APIs.
2. Se for preciso modificar a estrutura e workflow, atualizar o README.
3. Submeta o Pull Request e envie um email para **fabiana.carvalhal@devpartner.com.br e samara.freitas@devpartner.com.br** :D

## | O que acontece depois ?

Avaliaremos a sua **Pull Request** e, se estiver atendendo os requisitos obrigatórios, marcaremos uma apresentação do exercício, afinal de contas, ninguém melhor que o próprio desenvolvedor para explicar o seu projeto =)
*fique tranquilo já passamos por isso também*

## | Requisitos obrigatórios
1. Escrever o código em C-Sharp ;)
2. Projeto deve ser obrigatóriamente em WebAPI
3. CRUD funcionando!
4. Procure manter a estrutura do projeto.

## | Requisitos extras
1. Automação de testes - unitários e integração. (Vamos adorar! :D)
2. Documentação dos endpoints
3. Performance

## | Quer impressionar ?
1. Melhore nosso projeto base para testes de back-end (*melhorias relevantes, por favor*)
2. Demonstre domínio na stack proposta (**menos *bla bla bla*** e **mais código**)

## | Ferramenta de Desenvolvimento

Fique a vontade para usar a ferramenta que for mais confortável para você ;)
Aqui usamos muito o [Visual Studio](https://www.visualstudio.com/) e [VS Code](https://code.visualstudio.com/).


<sub>Os dados presentes neste teste são totalmente fictícios.</sub>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes.
134 changes: 56 additions & 78 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,87 +1,65 @@
# | Backend na DevPartner

## | Sobre a DevPartner

A relação de parceria estabelecida com o cliente é o ativo mais importante para a DevPartner. É o motor que leva a empresa a conhecer a fundo os negócios do cliente e, junto com ele, desenhar a melhor solução que atenda as suas necessidades.

"A nossa filosofia é a de viver o dia a dia do cliente, conhecer o seu negócio, estar ao seu lado e compreender as suas necessidades para ter a certeza de que vamos produzir o melhor resultado. Ser parceiro é isso!"
***Eduardo Silvestri, Presidente da [DevPartner](http://devpartner.com.br/)***

## | Teste BackEnd para o DevPartner
O teste consiste em entendermos um pouco mais sobre seus conhecimentos com [C-Sharp](https://docs.microsoft.com/en-us/dotnet/csharp/), [.NETFramework](https://docs.microsoft.com/en-us/dotnet/framework/),
[Entity Framework](https://docs.microsoft.com/en-us/ef/),[Aspnet](https://docs.microsoft.com/en-us/aspnet/), [Asp.Net Web API](https://www.asp.net/web-api) e lógica de programação.

## | Orientações
Primeiramente, faça um fork e clone do projeto;
Crie uma branch com o seu nome e sobre nome e depois instale as dependências.

**1. Dê um like e um Fork =)**

![alt text](./assets/image01.png "imagem fork")

**2. Clone do Projeto**
```sh
git clone "https://github.com/**seu-usuario**/backend-test.git"
## | Considerações iniciais
* A minha resolução ao problema proposto utiliza uma stack ASP.NET Core com Entity Framework Core e SQL Server.
* Deixei comentários ao longo da solução que começam em
```c#
// [note]
```
*no lugar do "seu-usuario" coloque o seu usuário do github :)
A partir deles vocês podem observar melhor os pontos que criei para chegar à solução necessária. Espero que possam ler todos, escrevi para vocês.
* A validação de CNPJ não foi feita, mas a estrutura para tal está montada, mas este não é o objetivo do teste, mas sim a noção da estrutura e organização.

## | Antes de executar a Solução

**3. Criando nova Branch**
**1. Restaurar dependências**
Execute o comando, na pasta onde está o arquivo **API.csproj**:
```sh
git checkout -b "meunomeEsobrenome"
dotnet restore
```
**4. Instalando as dependências**

Abra o projeto clicando no arquivo *devpartner.sln*. Com o projeto aberto no visual studio, basta abrir Package Manager Console (clique no menu {**ferramentas** ou **Tools**} e depois em {**gerenciador de pacotes** ou **Package Manager**}, enfim em {**gerenciador de pacotes console** ou **Package Manager Console**} ) agora é só digitar o comando.
Para recuperar as dependências do projeto.

**2. Criar banco de dados**
Execute o comando, na pasta onde está o arquivo **API.csproj**:
```sh
Update-Package
dotnet ef database update
```

**5. Agora é rodar a aplicação**

F5
*simples assim*

***Observação:** fique a vontade para persistir os dados no banco que for da sua preferência. Aqui usamos MS-SQL e similares mas também curtimos NOSQL*

## | O que precisa ser feito ?

CRUD em Web API de notas fiscais, simples não ?

***Objeto: notaFiscalId, numeroNf, valorTotal, dataNf, cnpjEmissorNf e cnpjDestinatarioNf***

Não se sentiu a vontade com a estrutura do projeto ? **Não tem problema**, pode começar um projeto do zero, do seu jeito. Consideramos importante você dominar os conceitos e não as ferramentas "A" ou "B".

### Terminou e quer enviar para a DevPartner ?

1. Construa uma collection em postman para testarmos suas APIs.
2. Se for preciso modificar a estrutura e workflow, atualizar o README.
3. Submeta o Pull Request e envie um email para **fabiana.carvalhal@devpartner.com.br e samara.freitas@devpartner.com.br** :D

## | O que acontece depois ?

Avaliaremos a sua **Pull Request** e, se estiver atendendo os requisitos obrigatórios, marcaremos uma apresentação do exercício, afinal de contas, ninguém melhor que o próprio desenvolvedor para explicar o seu projeto =)
*fique tranquilo já passamos por isso também*

## | Requisitos obrigatórios
1. Escrever o código em C-Sharp ;)
2. Projeto deve ser obrigatóriamente em WebAPI
3. CRUD funcionando!
4. Procure manter a estrutura do projeto.

## | Requisitos extras
1. Automação de testes - unitários e integração. (Vamos adorar! :D)
2. Documentação dos endpoints
3. Performance

## | Quer impressionar ?
1. Melhore nosso projeto base para testes de back-end (*melhorias relevantes, por favor*)
2. Demonstre domínio na stack proposta (**menos *bla bla bla*** e **mais código**)

## | Ferramenta de Desenvolvimento

Fique a vontade para usar a ferramenta que for mais confortável para você ;)
Aqui usamos muito o [Visual Studio](https://www.visualstudio.com/) e [VS Code](https://code.visualstudio.com/).


<sub>Os dados presentes neste teste são totalmente fictícios.</sub>
Isto fará o banco de dados ser criado. Caso algo dê errado, um arquivo *.sql está na pasta onde está o arquivo *.sln.

## | Controladores da Solução

**1. NotaFiscalController (/api/v1/notafiscal)**
Neste controlador está toda a tarefa proposta pelo desafio.

### | Endpoints
1. *POST* Create (/)
Recebe um objeto _NotaFiscalCreate_, valida os valores e salva no banco de dados.
* Tipos de resposta:
- 201 Created: nota fiscal recém criada com campos calculados e Id para recuperação posterior.
- 400 Bad Request: erro de validação, com detalhes no corpo da resposta.
- 500 Internal Server Error: código de erro para identificação posterior.

2. *GET* Get (/)
Lista todas as Notas Fiscais do banco de dados.
* Tipos de resposta:
- 200 OK: array de notas fiscais.
- 500 Internal Server Error: código de erro para identificação posterior.

3. *GET* Get By Id ("/{id}")
Lista uma das notas fiscais de acordo com o Id, se esta for encontrada.
* Tipos de resposta:
- 200 OK: nota fiscal a partir do banco de dados.
- 404 Not Found: nota fiscal com o Id não encontrada.
- 500 Internal Server Error: código de erro para identificação posterior.

4. *DELETE* Delete By Id ("/{id}")
* Tipos de resposta:
- 200 OK: nota fiscal deletada com sucesso.
- 500 Internal Server Error: código de erro para identificação posterior.

5. *UPDATE* Update By Id ("/{id}")
* Tipos de resposta:
- 200 OK: nota fiscal atualizada com sucesso.
- 500 Internal Server Error: código de erro para identificação posterior.

## | Coleção de Requests no PostMan
Para acessar os endpoints criados no PostMan para esta API [accesse este link](https://www.getpostman.com/collections/73be7862dc1117b92b3e).
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
21 changes: 21 additions & 0 deletions Solution/DevPartnerJobTest/API/API.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="AutoMapper" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Domain\Domain.csproj" />
</ItemGroup>

</Project>
17 changes: 17 additions & 0 deletions Solution/DevPartnerJobTest/API/API.csproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Controller</Controller_SelectedScaffolderCategoryPath>
<WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>
<WebStackScaffolding_IsLayoutPageSelected>True</WebStackScaffolding_IsLayoutPageSelected>
<WebStackScaffolding_IsPartialViewSelected>False</WebStackScaffolding_IsPartialViewSelected>
<WebStackScaffolding_IsReferencingScriptLibrariesSelected>True</WebStackScaffolding_IsReferencingScriptLibrariesSelected>
<WebStackScaffolding_LayoutPageFile />
<WebStackScaffolding_IsAsyncSelected>False</WebStackScaffolding_IsAsyncSelected>
<ActiveDebugProfile>API</ActiveDebugProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>
26 changes: 26 additions & 0 deletions Solution/DevPartnerJobTest/API/Controllers/AppControllerBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using API.Infrastructure;
using Microsoft.AspNetCore.Mvc;

namespace API.Controllers
{
public class AppControllerBase : ControllerBase
{
// [note] This method is a quick handling, but it could send an email to alert developers, for example
protected IActionResult InternalServerError(object result)
{
var objectResult = new ObjectResult(
new ResponseDescriptor<object>()
{
Message = ResponseConstants.ContactUs,
Result = result,
}
);
//
return objectResult;
}
}
}
Loading