Olá desenvolvedor, nesse teste analisaremos seu conhecimento geral. Abaixo explicaremos tudo o que será necessário para você realizar da melhor forma seu teste.
O desafio consiste em implementar uma aplicação Web simples utilizando o framework PHP Laravel, e um banco de dados relacional MySQL ou Postgres, a partir de uma modelagem de dados inicial.
Você vai criar uma aplicação de cadastro de pedidos de compra, com as seguintes funcionalidades:
- CRUD de clientes.
- CRUD de produtos.
- CRUD de pedidos de compra, com status (Em Aberto, Pago ou Cancelado).
- Cada CRUD:
- deve ser filtrável e ordenável por qualquer campo, e possuir paginação de 20 itens.
- deve possuir formulários para criação e atualização de seus itens.
- deve permitir a deleção de qualquer item de sua lista.
- Barra de navegação entre os CRUDs.
- Links para os outros CRUDs nas listagens (Ex: link para o detalhe do cliente da compra na lista de pedidos de compra)
A modelagem inicial para a implementação solução é a seguinte:
Nome Coluna | Data Type |
---|---|
NumeroPedido | int |
NomeCliente | Varchar(100) |
CPF | char(11) |
nchar(10) | |
DtPedido | smalldatetime |
CodBarras | varchar(20) |
NomeProduto | varchar(100) |
ValorUnitario | money |
Quantidade | int |
Além disso, a implementação deste modelo em um banco de dados relacional deve ser realizada levando em consideração os seguintes requisitos:
- O banco de dados deve ser criado utilizando Migrations do framework Laravel, e também utilizar Seeds e Factorys para popular as informações no banco de dados.
- Implementação das validações necessárias na camada que julgar melhor.
Devem ser utilizadas as seguintes tecnologias:
- HTML
- CSS
- Javascript
- Framework Laravel (PHP)
- Docker (se souber para montar o ambiente de dev)
- Para iniciar o teste, faça um fork deste repositório;
- Crie uma branch com o seu nome;
- Altere o arquivo readme.md com as informações necessárias para executar o seu teste e caso queira colocar alguma instrução a mais;
- Depois de finalizado, envie-nos o pull request;
- Permitir que o usuário mude o número de itens por página.
- Implementar a camada de Front-End utilizando a biblioteca javascript Bootstrap e ser responsiva.
- API Rest JSON para todos os CRUDS listados acima.
- Organização do código;
- Aplicação de design patterns;
- Separação de módulos e componentes;