Skip to content

almeidaalex/bank

Repository files navigation

Banco Simples

Coverage Status

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

Dados de Teste

A aplicação tem duas contas pré cadastradas com IDs 1001 e 1002

API do Banco

Também é possível interagir com a aplicação vida API:

Depositar

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}"

Saque

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}"

Pagamento:

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\"}}"

Extrato

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"

Conta com Rendimento

É 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}"

Testes Unitários e Integração

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