* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\Hook\CommandHandler; use Hook; use PrestaShop\PrestaShop\Core\Domain\Hook\Command\UpdateHookStatusCommand; use PrestaShop\PrestaShop\Core\Domain\Hook\CommandHandler\UpdateHookStatusCommandHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Hook\Exception\CannotUpdateHookException; use PrestaShop\PrestaShop\Core\Domain\Hook\Exception\HookNotFoundException; /** * @internal */ class UpdateHookStatusCommandHandler implements UpdateHookStatusCommandHandlerInterface { /** * @param UpdateHookStatusCommand $command */ public function handle(UpdateHookStatusCommand $command) { $hookId = $command->getHookId()->getValue(); $hook = new Hook($hookId); if ($hook->id !== $hookId) { throw new HookNotFoundException(sprintf('Hook with id "%d" was not found', $hookId)); } $hook->active = !$command->getStatus(); if (!$hook->save()) { throw new CannotUpdateHookException(sprintf('Cannot update status for hook with id "%d"', $hookId)); } } }