<?php

/**
 * This Software is the property of Data Development and is protected
 * by copyright law - it is NOT Freeware.
 *
 * Any unauthorized use of this software without a valid license
 * is a violation of the license agreement and will be prosecuted by
 * civil and criminal law.
 *
 * http://www.shopmodule.com
 *
 * @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
 * @author    D3 Data Development - Daniel Seifert <support@shopmodule.com>
 * @link      http://www.oxidmodule.com
 */

namespace D3\Unzer\Setup;

use D3\Unzer\Application\Model\Webhooks\Handler;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use D3\ModCfg\Application\Model\Install\d3install;
use Doctrine\DBAL\DBALException;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Exception\SystemComponentException;
use OxidEsales\Eshop\Core\Registry;
use RuntimeException;
use UnzerSDK\Exceptions\UnzerApiException;

class Events
{
    /**
     * @throws d3ShopCompatibilityAdapterException
     * @throws DBALException
     * @throws DatabaseConnectionException
     * @throws DatabaseErrorException
     * @throws StandardException
     * @throws SystemComponentException
     */
    public static function onActivate(): void
    {
        d3install::checkUpdateStart();

        try {
            oxNew(Handler::class)->registerShopWebHook();
        } catch (UnzerApiException|RuntimeException) {
        }
    }

    public static function onDeactivate(): void
    {
        try {
            oxNew(Handler::class)->deleteShopWebHooks();
        } catch (UnzerApiException|RuntimeException $e) {
            Registry::getUtilsView()->addErrorToDisplay('delete shop webhooks: '.$e->getMessage());
        }
    }
}
