Desafio desenvolvido como parte das etapas de seleção para uma vaga de Desenvolvedor Fullstack Jr. O desafio se baseia em uma Aplicação de fluxo de aprovação para compra de material de escritótio. O projeto possui três cenarios: Solicitante, Almoxarife e Administrativo. O Solicitante é responsável por criar as solicitações de compras de materia, informando obrigatoriamente seu nome, descrição do material e valor. Com a solicitação gerada, o Almoxarife é responsável por analisar a solicitação aberta e decidir se aprova ou reprova. E por fim, o Administrativo é um usuário do setor que pode consultar o fluxo de todas as solicitações realizadas.
Projeto batisado com o nomen do menor dos satélites de Júpiter do Grupo Amalteia.
Adrasteia, na mitologia grega, é uma figura da mitologia grega, conhecida como a deusa da justiça e da vingança divina.
- NodeJS v16+
- Banco de dados Microsoft SQL Server
- Yarn (opcional)
Com o projeto na sua máquina, crie um arquivo .env e copie o conteúdo do arquivo .env.example para o arquivo criado alterando de acordo com seu usuário e senha.
Com essa primeira configuração, execute o comando abaixo para instalar as dependências:
npm install
ou se utiliza yarn
yarn
Com as dependências instaladas, o comando de criação do banco de dados (certifique-se que o banco de dados esteja em execução, caso contrário o comando falhará):
npm run db:generate
ou se utiliza yarn
yarn db:generate
Este comando vai pedir para da nome a migrate (opcional). Após isso, a aplicação já estará pronta para uso. Execute o seguinte comando para inicalizar a aplicação:
npm run start:dev
ou se utiliza yarn
yarn start:dev
A api será inicializada na porta 3000.
A api pode ser testata utilizando uma aplicação de teste de api como Postman ou Insomnia.
Para testar o cenário do solicitante que cria uma solicitação, envie uma requisição do tipo POST para o endereço http://localhost:3000/solicitacao
utilizando o modelo:
{
"solicitante": "nome do solicitante",
"descricao": "Descrição do material",
"preco": "R$ 12,34"
}
OBS1: Todos esses campos estão sendo validados, são todos obrigatórios para criar uma solicitação.
OBS2: Os campos
solicitante
edescrica
necessita de no mínimo 3 caracteres para validar.
OBS3: O campo preco deve respesitar o formato
R$ xxxx,xx
ouR$ x
ouR$ x.xxx,xx
, caso contrário a validação não vai permitir gerar a solicitação.
Para este cenário, faça uma requisição do tipo PATCH na URL http://localhost:3000/solicitacao/:id
substituindo :d
pelo id da solicitação pendende. É possivel verificar todas as solicitação pendentes fazendo uma requisição GET na URL http://localhost:3000/solicitacao/almoxarife
. para aprovar ou reprovar a solicitação, utilize o seguinte modelo:
{
"aprocacao": "aprovado",
"observacao": ""
}
OBS1: O campo
aprovacao
está validado apenas para aceitar os valor "aprovado" ou "reprovado". Este campo é obrigatorio para que a requisição seja efetuada.
OBS2: o campo
observacao
não é necessário se a solicitção for "aprovado", mas seaprovacao
for "reprovado", a validação do campoobservacao
está configurado para ser obrigatório e é necessário ter no mínimo 10 caracteres.
Este cenário pode ser testado passando uma requisição GET para a rota http://localhost:3000/solicitacao
onde será listado todas as solicitações.
Criado por José Pereira Macedo, vulgo "ArseniumGX".
Este projeto está licenciado sob a Licença MIT.