For send SMS , I used the Twilio SDK.
This API was made for the challenge of the company Tgid - Transform and grow in digital
- O sistema deve conter ao menos dois usuários: Empresa e Cliente
- CPF (para Cliente) e CNPJ (para Empresa) devem ser validados
- Para cada Empresa, deve haver ao menos um tipo de taxa de sistema que será incidida no momento da transação (seja saque ou depósito)
- As Empresas devem ter um saldo que advém dos depósitos e saques realizados por Clientes na sua empresa, e já com o abate das taxas de administração (sistema)
- Clientes podem fazer depósitos e saques pelas Empresas (a depender dos saldos das empresas)
- No momento em que a transação é realizada, deve ser enviado um callback para Empresa informando a transação (essa informação pode dar erro caso o sistema esteja instável, utilize o site webhook.site para simular envio), e algum tipo de notificação para o Cliente (seja e-mail, SMS ou algo do tipo).
- Download PostgreSQL or the PostgreSQL image of Docker.
- Clone the repository:
git clone https://github.com/LeonardoSnows/Teste-Java-Developer-tgid.git
- Install dependencies with Maven
- Start the application with Maven
- The API will be accessible at http://localhost:8080
- To use the Swagger, access the url: http://localhost:8080/swagger-ui/index.html#/
The API provides the following endpoints:
CLIENT
POST /servico/cliente/transacao/deposito - make the deposit
POST /servico/cliente/transacao/saque - make the withdrawal
POST /servico/cliente/registrar - register client
GET /servico/cliente - get all clients
COMPANY
POST /servico/empresa/transacao/deposito - make deposit to other company
POST /servico/empresa/transacao/saque - make the withdrawal
POST /servico/empresa/registrar - register company
GET /servico/empresa - get all companys
CLIENT
/servico/cliente/transacao/deposito and /servico/cliente/transacao/saque
Cliente and Empresa are the IDs.
{
"Valor": 10,
"Cliente": 1,
"Empresa": 1:
}
POST /servico/cliente/registrar
{
"Nome": "Test",
"Nome Social": "Cliente",
"Saldo": 100,
"CPF": "375.628.390-93",
"Celular":"+65982669889",
"Empresa":[{
"id": 1,
"nameCompany": "TesteE 3",
"cnpj": "60.701.190/0001-04",
"taxas": 2.80,
"balance": 97.20
}]
}
POST /servico/empresa/registrar - register company
{
"Empresa": "TesteCompany",
"CNPJ": "60.701.190/0001-04",
"Saldo": 100,
"Clientes": []
}
POST /servico/empresa/transacao/deposito
{
"Valor": 10,
"ID Cliente": 30,
"Empresa": 30,
"Empresa Alvo": 2
}
POST /servico/empresa/transacao/saque
{
"Valor": 10,
"ID Cliente": 2,
"Empresa": 30
}
For sending SMS:
- Create an account in: https://www.twilio.com/pt-br
- Get your SID and your token.
- Create a number in Twilio.
- Put the values in resource/application.properties:
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_NUMBER=
version: "3.8"
services:
postgres-compose:
image: postgres
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "challenge"
volumes:
- <where you want to save>:/var/lib/postgresql/data
ports:
- "5432:5432"