Esse projeto tem como intenção simular algumas operações bancárias, de maneira simplificada com ações como: Depositar, Sacar e Pagar.
Foi construído usando .NET 8 e MySQL.
Para testar a aplicação basta executar o seguinte comando na pasta raiz:
$ docker-compose build && docker-compose up -d
A aplicação é constituída de duas principais partes, frontend e api. Após a compilação, quando banco e aplicação estiverem no ar, poderá ser acessada pelo seguinte endereço:
http://localhost:8080/index.html
A aplicação tem duas contas pré cadastradas com IDs 1001 e 1002
Também é possível interagir com a aplicação vida API:
POST /api/account/deposit
Request body:
{
"accountNo": 0,
"amount": 0
}
$ curl -X POST "http://localhost:8080/api/account/deposit" \
-H "accept: */*" -H "Content-Type: application/json" -d "{\"accountNo\":1002,\"amount\":100}"
POST /api/account/withdraw
Request body:
{
"accountNo": 0,
"amount": 0
}
$ curl -X POST "http://localhost:8080/api/account/withdraw" \
-H "accept: */*" -H "Content-Type: application/json" -d "{\"accountNo\":1002,\"amount\":100}"
POST api/account/payment
Request body:
{
"accountNo": number,
"invoice": {
"number": 0,
"amount": 0.00,
"dueDate": "2021-03-23T23:14:52.526Z"
}
}
$ curl -X POST "http://localhost:8080/api/account/payment" \
-H "accept: */*" -H "Content-Type: application/json" \
-d "{\"accountNo\":1002,\"invoice\":{\"number\":123,\"amount\":500,\"dueDate\":\"2021-03-23T23:14:52.526Z\"}}"
GET /api/account/{id}/statement
Response body
{
"accountNo": 0,
"title": "string",
"balance": 0,
"statements": [
{
"accountNo": 0,
"date": "2021-03-23T23:18:59.576Z",
"operation": "string",
"amount": 0,
"description": "string"
}
]
}
$ curl -X GET "http://localhost:8080/api/account/{id}/statement" -H "accept: text/plain"
É possível ainda fazer com que a conta tenha rendimentos diários, essa é a api para fazer render a conta
PUT /api/account/calculateIncome
Request body
{
"forDate": "2021-03-24T01:29:18.508Z",
"interestRate": 2.3
}
curl -X PUT "http://localhost:8080/api/account/calculateIncome" \
-H "accept: */*" -H "Content-Type: application/json" -d "{\"forDate\":\"2021-03-24T01:29:18.508Z\",\"interestRate\":2.3}"
O projeto também conta com cobertura de testes unitários e testes de integração. Para executar os testes, incluindo os resultados de cobertura, executar o comando:
$ dotnet test /p:CollectCoverage=true