Current File : /var/www/vinorea/modules/ps_metrics/vendor/prestashop/prestashop-accounts-installer/README.md
# prestashop-accounts-installer

Utility package to install `ps_accounts` module or present data to trigger manual install from psx configuration page.

This module also give you access to `ps_accounts` services through its module service container dealing with the installation status of the module.

## Installation

This package is available on [Packagist](https://packagist.org/packages/prestashop/prestashop-accounts-installer), 
you can install it via [Composer](https://getcomposer.org).

```shell script
composer require prestashop/prestashop-accounts-installer
```
## Register as a service in your PSx container (recommended)

Example :

```yaml
services:
  ps_accounts.installer:
    class: 'PrestaShop\PsAccountsInstaller\Installer\Installer'
    arguments:
      - '4.0.0'

  ps_accounts.facade:
    class: 'PrestaShop\PsAccountsInstaller\Installer\Facade\PsAccounts'
    arguments:
      - '@ps_accounts.installer'
```

## How to use it 

### Installer

In your module main class `install` method. (Will only do something on PrestaShop 1.7 and above)

```php
    $this->getService('ps_accounts.installer')->install();
```

### Presenter

For example in your main module's class `getContent` method.

```php
    Media::addJsDef([
        'contextPsAccounts' => $this->getService('ps_accounts.facade')
            ->getPsAccountsPresenter()
            ->present($this->name),
    ]);
```

This presenter will serve as default minimal presenter and switch to PsAccountsPresenter data when `ps_accounts` module is installed.

### Accessing PsAccounts Services

Installer class includes accessors to get instances of services from PsAccounts Module :

* getPsAccountsService
* getPsBillingService

The methods above will throw an exception in case `ps_accounts` module is not installed.

Example :

```php
use PrestaShop\PsAccountsInstaller\Installer\Exception\ModuleVersionException;
use PrestaShop\PsAccountsInstaller\Installer\Exception\ModuleNotInstalledException;

try {
    $psAccountsService = $this->getService('ps_accounts.facade')->getPsAccountsService();

    $shopJwt = $psAccountsService->getOrRefreshToken();

    $shopUuid = $psAccountsService->getShopUuidV4();

    $apiUrl = $psAccountsService->getAdminAjaxUrl();

    // Your code here

} catch (ModuleNotInstalledException $e) {

    // You handle exception here

} catch (ModuleVersionException $e) {

    // You handle exception here
}
```