* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PsAccounts\Account\CommandHandler; use Hook; use PrestaShop\Module\PsAccounts\Account\Command\UnlinkShopCommand; use PrestaShop\Module\PsAccounts\Account\LinkShop; use PrestaShop\Module\PsAccounts\Hook\ActionShopAccountUnlinkAfter; use PrestaShop\Module\PsAccounts\Provider\ShopProvider; use PrestaShop\Module\PsAccounts\Service\AnalyticsService; class UnlinkShopHandler { /** * @var LinkShop */ private $linkShop; /** * @var AnalyticsService */ private $analytics; /** * @var ShopProvider */ private $shopProvider; /** * @param LinkShop $linkShop * @param AnalyticsService $analytics * @param ShopProvider $shopProvider */ public function __construct(LinkShop $linkShop, AnalyticsService $analytics, ShopProvider $shopProvider) { $this->linkShop = $linkShop; $this->analytics = $analytics; $this->shopProvider = $shopProvider; } /** * @param UnlinkShopCommand $command * * @return void * * @throws \PrestaShopException * @throws \Exception */ public function handle(UnlinkShopCommand $command) { // FIXME: exec in shop context with $command->shopId $hookData = [ 'shopUuid' => $this->linkShop->getShopUuid(), 'shopId' => $command->shopId, ]; $analyticsData = [ 'ownerUuid' => $this->linkShop->getOwnerUuid(), 'ownerEmail' => $this->linkShop->getOwnerEmail(), 'shopUuid' => $this->linkShop->getShopUuid(), ]; $this->linkShop->delete(); if ($command->errorMsg) { $this->linkShop->setUnlinkedOnError($command->errorMsg); $shop = $this->shopProvider->formatShopData( (array) \Shop::getShop($command->shopId) ); $this->analytics->trackShopUnlinkedOnError( $analyticsData['ownerUuid'], $analyticsData['ownerEmail'], $analyticsData['shopUuid'], $shop->frontUrl, $shop->url, 'ps_accounts', $command->errorMsg ); } Hook::exec(ActionShopAccountUnlinkAfter::getName(), $hookData); } }