Olá, desafiante! Este é o nosso desafio final da Hackathon. Estamos ansiosos para ver suas habilidades em ação!
Neste desafio, queremos ver como você lida com novas tecnologias e resolve problemas. Vamos observar:
-
Habilidade de adaptação e aprendizado
- Como você se adapta a novas ferramentas e recursos para criar soluções?
-
Resolução de problemas
- Como você lida com problemas técnicos e encontra soluções eficazes?
-
Capacidade de comunicação
- Como você faz perguntas e tira-dúvidas com o nosso time.
Para o nosso desafio, iremos utilizar um aplicativo de cadastro de fornecedores. Este mini sistema possui as seguintes funcionalidades:
- Listagem dos fornecedores
- Inclusão e edição de fornecedores.
Para a construção deste sistema foram utilizadas as seguintes tecnologias:
- Spring Boot
- Spring Data JPA
- Java 11
- Wicket
- Maven
O Contexto:
O aplicativo está funcional, estamos buscando melhorias e correções para torná-lo ainda melhor. Queremos que você aplique seu conhecimento e criatividade para enfrentar estes desafios.
- Faça um fork deste projeto no GitHub.
- Crie um novo branch com o seu nome.
- Faça o push da branch para o repositório.
- Fazer commit e push de todas as etapas do desafio. Exemplo: Danilo finalizou o desafio 1, antes de ir para etapa seguinte já faça o push das alterações!
- Fique atento ao tempo! Teremos pouco tempo para implementar o desafio, então é fundamental que se consiga conciliar o tempo entre desenvolver os desafios e ajudar os colegas.
- O desafio está numerado de 1 a 3, mas pode ser implementado em qualquer ordem.
- Não fique travado, tire suas dúvidas!
Durante a implementação do cadastro de fornecedores, um dos campos não havia sido especificado. Porém, ao apresentar o cadastro para o cliente, sentiu-se falta do campo "Nome do contato".
- Incluir o campo "Nome do Contato" no cadastro de fornecedor.
- Incluir a coluna na tabela FORNECEDOR, arquivo schema.sql (observe que pode-se alterar o próprio script de criação, não sendo via
alter table). - Atualizar script de carga para inclusão de valores ao novo campo, arquivo data.sql.
- Incluir o campo na entidade FornecedorEntity e criar os getters/ setters.
- Incluir o campo na listagem de fornecedores (ListarFornecedorPage).
- Incluir o campo na tela de edição de fornecedores (EditarFornecedorPage).
Que haja um novo campo na listagem e edição de fornecedores, e que seja possível salvar e alterar o novo campo.
Durante o cadastro de um fornecedor, é necessário informar o endereço da empresa. Uma maneira de acelerar o preenchimento e reduzir a entrada de dados inconsistentes é preencher automaticamente os campos a partir do CEP. Um serviço interessante para realizar essa tarefa é o VIACEP (https://viacep.com.br/).
- Preencher os dados do endereço utilizando o CEP.
- Já deixamos pronto o ponto de criação do serviço, a classe
org.opensingular.hackathon.service.ViaCepIntegracaoService. Aqui, você deve implementar o métodoEnderecoDTO buscar(String cep), que atualmente retorna um endereço vazio. - Para implementar esse método, você deve utilizar alguma biblioteca de chamada HTTP. Recomendamos o uso do
RestTemplatedo Spring Framework. - No entanto, apenas implementar o método não resolverá 100% do problema. É necessário analisar mais dois pontos:
- Quem chama o método
org.opensingular.hackathon.service.ViaCepIntegracaoService.buscar? - A tela
org.opensingular.hackathon.view.fornecedor.EditarFornecedorPagejá está preparada para atualizar a página com os novos dados?
- Quem chama o método
- Caso esteja tudo OK, os dados de endereço devem ser preenchidos automaticamente assim que o usuário preencher e sair do campo "CEP".
Durante o cadastro de um fornecedor, é necessário informar o CEP e CNPJ. Uma maneira de reduzir a entrada de dados inconsistentes é aplicar máscaras aos campos.
- Instalar e configurar o jQuery Mask Plugin para adicionar máscaras aos campos "CEP" e "CNPJ".
- Criar uma nova classe que será um Behavior do Wicket (
JQueryMaskBehaviour). - Instalar a biblioteca jQuery Mask Plugin. Uma dica é sobrescrever o método 'renderHead', e um exemplo de instalação está disponível na classe
SweetAlertFeedbackBehaviour. - Incluir o script de inicialização também no
renderHead.
- O campo CNPJ deve estar com a máscara aplicada automaticamente.
- Deve ser possível adicionar máscaras de forma fácil a qualquer outro campo. Por exemplo:
new TextField('cep').add(new JQueryMaskBehaviour('00000-000')); new TextField('cpf').add(new JQueryMaskBehaviour('000.000.000-00'));
Para enviar seu código, crie um pull-request neste projeto.