# Insights Client

![Language](https://img.shields.io/badge/Language-JavaScript-yellow.svg)

Insights and datapoints about user financial information.

## Setup

```javascript
import { InsightsClient } from 'open-banking-pfm-sdk';

//The constructor receives an api key to validate access to all of its functions. This parameter is required. If you want to change the API Server Url you can do it passing it as second parameter.
const SERVER_URL =
  'http://tecbantest@ec2-3-21-18-54.us-east-2.compute.amazonaws.com:8081/api/v1/';
const insightsClient = new InsightsClient('XXXX-XXXX-XXXX', SERVER_URL);
```

## How to use

### Resume

Given a valid user ID, fetches a resume of the financial information of a user. It contains expenses, incomes and balances.

```javascript
const insightsOptions = {
  accountId:525742481,//Mandatory
  dateFrom: number,//Optional
  dateTo: number;//Optional
  }
insightsClient
  .getResume(userId, insightsOptions)
  .then((data) => console.log(data))
  .catch((error) => console.log(error));
```

Output:

```console
Resume {
  _incomes: [],
  _expenses: [
    IncomeExpense {
        _date: 1672552800000,
        _categories: [
          CategoryResume {
      _categoryId: 2,
      _amount: 720.82,
      _subcategories: [ 
        SubcategoryInsights {
          _categoryId: 16,
          _amount: 720.82,
          _transactionsByDate: [ 
            TransactionsByDate {
              _date: 1674194400000,
              _transactions: [ 
                Transaction {
                  _id: 796541939,
                  _date: 1674194400000,
                  _charge: true,
                  _description: 'Clk*Compao Plaza',
                  _amount: 720.82,
                  _categoryId: 16,
                  _dateCreated: 1676572948884,
                  _lastUpdated: 1676981093696
                }
              ]
            }
          ]
        }
      ]
    },
    CategoryResume {
      _categoryId: 4,
      _amount: 433.82,
      _subcategories: [ [SubcategoryInsights] ]
    },
    CategoryResume {
      _categoryId: 7,
      _amount: 369.82,
      _subcategories: [ [SubcategoryInsights] ]
    }
      ],
      _amount: 1524.46
    },
    IncomeExpense {
      _date: 1675231200000,
      _categories: [Array],
      _amount: 12006.02
    }
  ],
  _balances: [
    Balance { _incomes: 0, _expenses: 12006.02, _date: 1675231200000 },
    Balance { _incomes: 0, _expenses: 1524.46, _date: 1672552800000 }
  ]
}

```

### Analysis

Given a valid user ID, fetches an analysis of the financial information of a user. It contains expenses, incomes and balances.

```javascript
const insightsOptions = {
  accountId:525742481,//Mandatory
  dateFrom: number,//Optional
  dateTo: number;//Optional
  }
insightsClient
  .getAnalysis(userId, insightsOptions)
  .then((data) => console.log(data))
  .catch((error) => console.log(error));
```

Output:

```console
[
  Analysis {
    _date: 1672552800000,
    _categories: [ 
      CategoryAnalysis {
        _categoryId: 2, 
        _amount: 720.82,
        _subcategories: [ 
           SubcategoryAnalysis {
              _categoryId: 16,
              _average: 720.82,
              _quantity: 1,
              _amount: 720.82,
              _transactions: [  
                TransactionAnalysis {
                  _description: 'Clk*Compao Plaza',
                  _average: 720.82,
                  _quantity: 1,
                  _amount: 720.82
                }
              ]
            }
         ]
      },
      CategoryAnalysis {
        _categoryId: 4,
        _amount: 433.82,
        _subcategories: [ [SubcategoryAnalysis] ]
      },
      CategoryAnalysis {
        _categoryId: 7,
        _amount: 369.82,
        _subcategories: [ [SubcategoryAnalysis] ]
      }
    ]
  },
  Analysis {
    _date: 1675231200000,
    _categories: [
      [CategoryAnalysis],
      [CategoryAnalysis],
      [CategoryAnalysis],
      [CategoryAnalysis],
      [CategoryAnalysis],
      [CategoryAnalysis],
      [CategoryAnalysis]
    ]
  },
  Analysis {
    _date: 1677650400000,
    _categories: [ [CategoryAnalysis] ]
  }
]

```
