Este repositório possui a implementação da solução solicitada.
- C# (dotnet 5)
- Asp.Net Web Api
- Asp.Net MVC Core + Razor Pages
- Entity Framework Core
- PostgresSQL
- Docker
- Serviço API para CRUD de produtos
- Serviço Web para o client-side
- Agendamento para consulta de dados na API externa de departamentos
- Testes de unidade
- Script para automatização do processo de instalação via docker
- O serviço de api informado na atividade não está funcionando. Por isso resolvi criar outro mock para a API de departamentos, disponível aqui: https://61b6f51dc95dd70017d41117.mockapi.io/Departamentos.
- A consulta agendada à API de departamentos é executada a cada 5 minutos após a inicialização da aplicação. Este tempo pode ser facilmente alterado, basta alterar os parâmetros passados para a classe TaskScheduler no Startup.cs.
- Os dados consultados da API de departamentos são persistidos no banco de dados (apenas se já não existirem).
- O processo de login está sendo mockado, desta forma basta digitar qualquer endereço de e-mail no formulário de login da aplicação para acessar. Caso tente acessar outras URLs antes de passar pelo formulário verá um erro 401.
- Sistema operacional Windows (Caso instale utilizando o script powershel)
- Dotnet 5
- Docker
Caso esteja utilizando Windows e possua o docker em sua máquina, a instalação pode ser feita automaticamente utilizando o script Install.ps1 Este script irá compilar a solução, executar os testes e subir os containers necessários no docker.
- Faça clone deste repositório
git clone https://github.com/lucasdemoraesc/MaximaTech.DotnetChallenge.git
- Execute o script Install.ps1
Botão direito -> Executar com o PowerShell
- Verifique se os containers estão rodando
docker container ps
- A saída deverá ser algo como:
- Acesse a seguinte URL no navegador
http://localhost:4200/login
Algumas inconsistências podem ocorrer ao se consultar os dados pelo cliente. Isso se deve ao fato de a aplicação requerer um certificado SSL para executar requisições https. Até cheguei a fornecê-lo gerando um certificado manualmente através do
dotnet dev-certs https
e injetando no container da aplicação, porém fazendo isso recebi outro erro relacionado a desserialização do token de autenticação. Desta forma, recomendo que a aplicação seja testada diretamente pelo Visual Studio em ambiente de desenvolvimento, conforme descrito abaixo.
Para executar pelo Visual Studio, verifique a string de conexão com o banco de dados em appsettings.Develoment.json. Alternativamente, você pode subir a instância do container do postgres referenciada na string de conexão com o seguinte comando:
docker run --name maximatechdotnetchallenge-database-1 --network=maxima-network -e "POSTGRES_PASSWORD=Postgres2018!" -p 3400:5432 -d postgres:12.9