Este projeto foi desenvolvido por Igor de Campos com o objetivo de testar suas habilidades lógicas e experiências em programação.
A API de Contra Cheques é uma solução empresarial que permite que qualquer funcionário de uma empresa possa consultar seus contra cheques de maneira fácil e acessível, disponível 24 horas por dia. Ela oferece funcionalidades como a pesquisa de contra cheques em uma data específica, a possibilidade de fazer o download do contra cheque ou de visualizá-lo online.
A collection com endpoints de exemplos se encontra na pasta collection
do projeto.
Para que o projeto funcione, seja localmente ou no Docker, é necessário definir os valores para as variáveis:
AWS_ACCESS_KEY
AWS_SECRET_KEY
AWS_REGION
AWS_BUCKET_NAME
Defina essas variáveis no arquivo application.yml
se estiver utilizando localmente, ou no arquivo docker-compose.yml
se estiver utilizando o Docker.
-
Execute os seguintes comandos:
docker compose up -d database
-
Aguarde até o processo de instalação do docker finalizar, depois,execute o projeto.
-
Execute:
docker compose up
-
Aguarde até o processo de instalação finalizar.
Vamos entender com mais facilidade,como pode ser desenvolvido o frontend do projeto,para que ele possa se conectar posivitamente com o backend do projeto.
-
Funcionários :
- O funcionário acessa a tela de registro e faz o registro com o seu cpf e senha. clique aqui
- O funcionário loga no sistema pela tela de login com as suas credenciais. clique aqui
- Após o sistema armazenar as informações do usuário retornadas na rota de login,ele é redirecionado para o menu principal.
- Usuário clica em um botão escrito "Ver contraCheques e o sistema lista previamente cada contra cheque". clique aqui
- Usuário decide visualizar um contraCheque especifico, clica em um dos pdfs que possuem visualização prévia,e o sistema renderiza online o pdf para o funcionário visualizar. clique aqui
- O usuário decide efetuar um "logout" apertando em um botão referente,então o frontend deve apagar as informações salvas no cache e não permitir que o usuário acesse mais as suas rotas.
-
Administradores:
- O administrador efetua o login na tela de login. clique aqui
- O administrador decide listar os funcionários dessa api. clique aqui
- Dado que o administrador sabe que o funcionário X não possui o contraCheque do Mês,o administrador acessa uma tela ao clicar em "enviar contra Cheque", preenche o campo: nome do usuário, data do contraCheque e envia para o backend. clique aqui
- Dado que o administrador notou uma indiferença relatada por algum funcionário,ele decide atualizar o contra cheque do mês x, acessa a tela ao clicar: "atualizar contra Cheque",e coloca: nome do usuário, data do contraCheque e envia para o backend. clique aqui
- Usuário decide efetuar o "logout" clicando no botão de sair,então o sistema deve limpar as credenciais armazenadas no cache.
- docker: 80
- local: 8085
- dev: 80
- hml: 8081
- prd: 8083
Esta rota é utilizada para efetuar o login do funcionário. A existência do funcionário na empresa é verificada com base no seu cpf e senha.
Este é uma descrição de uma tela interativa para o usuário fazer login. Ela contém dois campos: CPF e senha. Após o usuário preencher esses campos, faremos uma pequena validação:
-
Validação do CPF: Aceitaremos CPFs tanto com pontuação (como "123.456.789-01") quanto sem pontuação (como "12345678901"). A decisão sobre a formatação ficará a cargo do frontend.
-
Envio de Dados para o Backend: Os dados preenchidos serão enviados via JSON para o backend.
-
Retorno do Backend:
-
Se a validação for bem-sucedida, o backend retornará um objeto com as seguintes informações:
{ "id": "Id UUID do usuário", "paychecks": 1, "name": "Igor de Campos", "profession": "REPOSITOR", "token": "{token de acesso do usuário}" }
-
O token de acesso permitirá que o usuário acesse outras rotas.
-
-
Redirecionamento para a Tela Principal: Após o login, podemos redirecionar o usuário para a tela principal, exibindo uma frase de boas-vindas. Além disso, usaremos os dados retornados do login para informar o número de contracheques disponíveis.
-
Atente-se aos erros: muitos deles estão tratados e o backend pode retornar, como Usuário inexistente e outros.
Nesta rota, o funcionário pode criar sua conta para receber seus contra cheques online. Para isso, ele precisará especificar o código do cpf e senha, nesse contexto,as informacões restantes desse usuário serão pegos de uma tabela principal,como se fosse uma tabela de todos os funcionários
Este é uma descrição de uma tela interativa para o usuário fazer o registro. Ela contém dois campos: CPF e senha. Após o usuário preencher esses campos, faremos uma pequena validação:
-
Validação do CPF: Aceitaremos CPFs tanto com pontuação (como "123.456.789-01") quanto sem pontuação (como "12345678901"). A decisão sobre a formatação ficará a cargo do frontend.
-
Envio de Dados para o Backend: Os dados preenchidos serão enviados via JSON para o backend.
-
Retorno do Backend:
- Se a validação for bem-sucedida, o backend retornará uma mensagem indicando que o cadastro foi bem sucedido:
-
Redirecionamento para a Tela login: Após o registro, podemos redirecionar o usuário para a tela de login.
-
Atente-se aos erros: muitos deles estão tratados e o backend pode retornar, como Usuário inexistente e outros.
Nesta rota, o ID do funcionário é recebido através da rota e todos os contra cheques são retornados em ordem de data para visualização do funcionário. As informações retornadas incluem a data do contra cheque.
Este é um exemplo de uma tela interativa que permite aos usuários visualizar os nomes dos contracheques.
-
Botão ou Ícone de Acesso aos Contracheques: Após o usuário fazer login e ser redirecionado para o menu principal, haverá um botão ou ícone de acessibilidade que permitirá ao usuário ver seus contracheques. Ao clicar nesse elemento, o frontend pegará o ID do usuário e enviará uma requisição para a rota correspondente.
-
Rota para Listar Todos os Contracheques:
- A rota receberá o ID do usuário como parâmetro.
- O backend retornará os dados de todos os contracheques associados a esse usuário.
- Os dados serão formatados de maneira interativa e interessante no frontend.
-
Renderização Simplificada:
- após o usuário ter clicado no icone, o frontend renderizará uma versão simplificada das informações desses contracheques.
- Essa rota específica servirá para exibir detalhes simples de todos os contraCheques.
Nesta rota, o ID do funcionário e a data do contra cheque são recebidos. A rota retorna as informações do contra cheque em bytes, permitindo que a interface do usuário torne visível o contra cheque do funcionário.
-
id do usuario, ex:
- a53cc484-8e68-40a4-8701-47cb38ad0bd6
-
data do arquivo, seguindo a convensão, ex:
- 03-2023 (mes-ano)
-
Ideia de Tela:
- Imagine que o funcionário efetuou o login e está na tela de menu principal.
- Então o funcionário clicou na opção de pré visualizar os contracheques (já citado em outro endpoint)
- E ele clica em um contraCheque que ele precisa visualizar
- O front deve pegar os parametros que o backend precisa: id desse funcionario, o seu token, e a data (que é o nome do contraCheque) e enviar para o backend
- O endpoint retorna o conteudo do arquivo em bytes,que deve ser formatado e gerado a moda que permite que o funcionário o visualize.
Esta rota é utilizada para efetuar o login do administrador. A existência do administrador na empresa é verificada com base no seu nome, profissão e senha.
Este é uma descrição de uma tela interativa para o usuário fazer login. Ela contém dois campos: CPF e senha. Após o usuário preencher esses campos, faremos uma pequena validação:
-
Validação do CPF: Aceitaremos CPFs tanto com pontuação (como "123.456.789-01") quanto sem pontuação (como "12345678901"). A decisão sobre a formatação ficará a cargo do frontend.
-
Envio de Dados para o Backend: Os dados preenchidos serão enviados via JSON para o backend.
-
Retorno do Backend:
-
Se a validação for bem-sucedida, o backend retornará um objeto com as seguintes informações:
{ "name": "Igor de Campos", "token": "{token de acesso do usuário}" }
-
O token de acesso permitirá que o administrador acesse e use recursos mais avançados .
-
-
Redirecionamento para a Tela Principal: Após o login, podemos redirecionar o administrador para a tela principal, exibindo uma frase de boas-vindas.
-
Atente-se aos erros: muitos deles estão tratados e o backend pode retornar, como Usuário inexistente e outros.
multipart
: contra cheque
Nesta rota, o arquivo do contra cheque é enviado como um multipartFile para o funcionário especificado pelo ID e a data do contra cheque.
-
id do usuario, ex:
- a53cc484-8e68-40a4-8701-47cb38ad0bd6
-
data do arquivo, seguindo a convensão, ex:
- 03-2023 (mes,ano)
-
Arquivo pdf.
- Ideia de Tela:
- Imagine que o administrador efetuou o login e está na tela de menu principal.
- O administrador pode ter um botão que ao clicar,abre uma tela em que ele pode preencher os campos: data do contraCheque(formato: MM-AAAA), nome do usuário e arquivo do contraCheque no formato PDF.
- Então o Frontend deve,por outros meios,obter o id do Funcionário, e utilizar de todos esses dados para enviar para o backend
- Atente-se as mensagens de retorno
Esta rota é utilizada para obter uma lista de todos os funcionários. O retorno incluirá o ID, nome do funcionário e profissão.
-
Obtendo o Token da Rota de Login:
- Após o administrador fazer o login, o token deve ser armazenado no frontend de tal forma que ele possa ser usado em rotas como esta.
-
Retorno do Backend:
- Após enviar a solicitação para o backend com o token de administrador (que não está expirado, pois o token dura 24 horas), o retorno será o seguinte:
[ { "id": "375b8220-819d-4ebb-a2d6-4d2be54ace75", "name": "admin", "profession": "GERENTE_DE_LOJA" }, { "id": "5f44c9ca-2a18-48dd-8d21-c534739bd72f", "name": "Igor de Campos", "profession": "REPOSITOR" } ]
- O token de acesso permitirá que o administrador acesse e utilize recursos mais avançados.
- Após enviar a solicitação para o backend com o token de administrador (que não está expirado, pois o token dura 24 horas), o retorno será o seguinte:
-
Ideia de Tela:
- Imagine que o administrador efetuou o login e está na tela de menu principal.
- O administrador pode ter um botão que permite obter essas informações e renderizá-las na tela do frontend para ele.
Nesta rota, o ID do funcionário e a data do contra cheque são recebidos, juntamente com um novo arquivo de contra cheque. Com base nessas informações, o contra cheque especificado é atualizado.
-
id do usuario, ex:
- a53cc484-8e68-40a4-8701-47cb38ad0bd6
-
data do arquivo, seguindo a convensão, ex:
- 03-2023 (mes-ano)
-
Ideia de Tela:
- Imagine que o administrador efetuou o login e está na tela de menu principal.
- O administrador pode ter um botão que permite inserir o nome do funcionária e o mês do contraCheque e o arquivo do contracheque
- O front deve utilizar outros métodos para pegar o id desse funcionário pelo nome, e enviar uma requisição para o backend
- Atente-se as mensagens de retorno.
-
id do usuario, ex:
- a53cc484-8e68-40a4-8701-47cb38ad0bd6
-
data do arquivo, seguindo a convensão, ex:
- 03-2023 (mes,ano)
-
Ideia de Tela:
- Imagine que o administrador efetuou o login e está na tela de menu principal.
- O administrador pode ter um botão que permite inserir o nome do funcionária e o mês do contraCheque
- O front deve utilizar outros métodos para pegar o id desse funcionário pelo nome, e enviar uma requisição para o backend