Código desenvolvido como resposta ao teste da BRy Tecnologia para a vaga de programador full stack PHP/Angular.
Para rodar a aplicação, clone o repositório e execute o script dockerrun.sh
localizado na raiz do repositório.
$ sudo dockerrun.sh
O sript inicializará o container docker da aplicação back-end e realizará a pré configuração necessária. Na sequência inicializará a aplicação web que poderá ser acessada pelo navegador no endereço localhost:4200.
O arquivo bry_api.postman_collection.json contém as requisições realizadas no Postman para testar os serviços CRUD da API REST.
A aplicação está parcialmente desenvolvida.
Dos requisitos solicitados ainda falta um tratamento mais eladorado de erros. Alé disso, o método de criação e remoção do relacionamento entre funcionário e empresa ainda não está implementado. Dessa forma, falta dessa funcionalidade impede a remoção de um funcionário ou empresa que possua um relacionamentos. Por outro lado, a função de remoção funciona corretamente para recursos não relacionados. Caso a relação já exista (inserção manual no banco), os dados são apresentados corretamente, ou seja, o funcionário apresenta uma lista de empresas às quais está relacionado assim como a empresa apresenta uma lista de funcionários vinculados.
Os serviços CRUD estão parcialmente completos. Ao fazer requisições de inserção e atualização (POST e PUT), os dados coletados são passados para o back-end mas em algum momento "se perdem" e não são inseridos no banco. Ainda não consegui identificar a fonte do problema. Por outro lado, o serviço de leitura e remoção (com a limitação informada no back-end) estão funcionando corretamente. Assim como no back-end, ainda falta a implemtação do tratamento de erros. O front-end faz apenas a validação dos capos. Também ainda falta a adição do campo Authorization ao header das requisições.
O objetivo é desenvolver uma API REST em PHP para realizar o gerenciamento de funcionários e empresas. A aplicação deve realizar as operações básicas de um CRUD com os devidor verbos TTP e códigos de retorno. Neste cenário, cada funcionário pode pertencer a uma ou mais empresas, assim como cada empresa pode possuir um ou mais funcionários.
- A exibição dos dados do funcionário deve mostrar as empresas as quais ele está associado;
- A exibição dos dados da empresa deve mostrar os funcionários vinculados à ela;
- Os campos do funcionário são: login, nome, cpf, e-mail, endereço e senha;
- Os campos da empresa são: nome, cnpj e endereço;
- Utilizar padrões de projeto;
- Realizar tratamento de erros adequado.
O objetivo é conectar o serviço desenvolvido na questão 1 a uma aplicação front-end desenvolvida com o framework Angular 9.
- Criar o CRUD de serviços;
- Tratar os erros de forma genérica (preparando-os para mais serviços);
- Impedir o cadastro quando o campo login ou nome possuir acentuação (válido para empresa e funcionário);
- Popular o campo Authorization no header de cada requisição com um valor arbitrário definido na abertura da página;
- Espera-se que o sistema final seja robusto e estável;
- Comentários em código são bem vindos;
- O sistema operacional utilizado deve ser o Linux;
- A linguagem utilizada deverá ser php 7, usando o framework Laravel 6+;
- O banco de dados deve ser Postgres ou MySql;
- Recomenda-se HTTP 2.2 ou superior para o servidor WEB;
- você deve
- Utilizar o Postman para consumir o serviço REST (exportar as requisições em formato .json);
- Criar uma imagem docker ou uma máquina virtual contendo o projeto completo e suas dependências;
- Publicar no GIT ou fazer deploy em algum servidor e disponibilizar o link para acesso.