* @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\Zone\CommandHandler; use PrestaShop\PrestaShop\Core\Domain\Zone\Command\BulkDeleteZoneCommand; use PrestaShop\PrestaShop\Core\Domain\Zone\CommandHandler\BulkDeleteZoneHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Zone\Exception\DeleteZoneException; use PrestaShop\PrestaShop\Core\Domain\Zone\Exception\ZoneNotFoundException; use Zone; /** * Handles command that bulk delete zones */ final class BulkDeleteZoneHandler implements BulkDeleteZoneHandlerInterface { /** * {@inheritdoc} */ public function handle(BulkDeleteZoneCommand $command): void { foreach ($command->getZoneIds() as $zoneId) { $zone = new Zone($zoneId->getValue()); if (0 >= $zone->id) { throw new ZoneNotFoundException(sprintf('Unable to find zone with id "%d" for deletion', $zoneId->getValue())); } if (!$zone->delete()) { throw new DeleteZoneException(sprintf('An error occurred when deleting zone with id "%d"', $zoneId->getValue()), DeleteZoneException::FAILED_BULK_DELETE); } } } }