Giter Club home page Giter Club logo

template-teste-tecnico's Introduction

Introdução

Este teste é parte do processo seletivo aqui no Asaas para posições na Engenharia. O que você precisa fazer, é clonar o repositório, fazer o projeto rodar seguindo as instruções aqui contidas, e implementar as mudanças propostas. Uma vez que tenha concluído, abra um PR apontando para a branch main deste repositório.

A aplicação é construída em Grails, um framework web baseado em Groovy, construído a partir do Spring Boot. Este framework é bastante amigável e simples de configurar, portanto você não deve enfrentar nenhuma dificuldade ao colocar o projeto para rodar.

O que vamos avaliar

Nossa intenção com este teste, é avaliar sua capacidade de modificar e adicionar funcionalidades a um projeto existente, mantendo os padrões existentes e aplicando as melhores práticas de desenvolvimento.

Ao revisar seu código vamos avaliar os seguintes pontos:

  • Organização do código.
  • Respeito as regras de negócio e modificações propostas.
  • Código bem escrito, limpo e coeso.
  • Uso correto do versionamento do git.

Rodando o projeto

São necessárias apenas 2 coisas para que este projeto rode: JDK 8 e Grails 4.0.5. Para instalar o Java e o Grails siga as instruções contidas aqui.

Esta aplicação vem pré-configurada para rodar utilizando banco em memória, porém recomendamos utilizar o MySQL pois a cada recompilação o banco em memória é limpo. Basta baixar a última versão do MySQL aqui, e configurar o username e password corretos no arquivo application.yml.

Seguidas estas instruções, você já deve conseguir subir a aplicação acessando a pasta do projeto e executando o comando grails run-app, e acessar a interface através de http://localhost:8080

O que precisa ser implementado

Neste projeto, já há um cadastro funcional de clientes (Customer.groovy) e cobranças (Bill.groovy), além de algumas regras de negócio implementadas. A partir do que já existe, você deve modificar ou adicionar funcionalidades conforme descrito a seguir.

Mudanças a serem implementadas

  1. Incluir CPF/CNPJ no cadastro do cliente e tornar obrigatório. Validar a algoritmo para que não sejam inseridos clientes com CPF/CNPJ inválido.
  2. Incluir forma de pagamento no cadastro da cobrança e tornar obrigatório. As formas de pagamentos são: Boleto Bancário, Cartão de Crédito ou Transferência Bancária.
  3. Soft Delete: atualmente, ao remover um cliente ou cobrança, o registro é fisicamente removido do banco. Este comportamento deve ser mudado para soft-delete afim de ser possível manter histórico dos registros. Criar um atributo deleted nos domínios, e defini-lo como true ao remover um registro. Uma vez removido, o registro não deve mais ser exibido em nenhum lugar pela aplicação.
  4. Possibilitar definir uma cobrança como paga e armazenar a data de pagamento. Não permitir exclusão de cobranças pagas.
  5. Criar um job que rode de segunda sexta, que defina como Vencida todas as cobranças com data de vencimento anterior a hoje e que estejam com situação Pendente.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.