* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Domain\CustomerService\CommandHandler; use Doctrine\DBAL\Driver\Connection; use PrestaShop\PrestaShop\Core\Domain\CustomerService\Command\UpdateCustomerThreadStatusCommand; use PrestaShop\PrestaShop\Core\Domain\CustomerService\Exception\CustomerServiceException; /** * @internal */ class UpdateCustomerThreadStatusHandler implements UpdateCustomerThreadStatusHandlerInterface { /** * @var Connection */ private $connection; /** * @var string */ private $dbPrefix; /** * @param Connection $connection * @param string $dbPrefix */ public function __construct(Connection $connection, $dbPrefix) { $this->connection = $connection; $this->dbPrefix = $dbPrefix; } /** * {@inheritdoc} */ public function handle(UpdateCustomerThreadStatusCommand $command) { $statement = $this->connection->prepare(' UPDATE ' . $this->dbPrefix . 'customer_thread SET status = :status WHERE id_customer_thread = :id_customer_thread LIMIT 1 '); $statement->bindValue(':status', $command->getCustomerThreadStatus()->getValue()); $statement->bindValue(':id_customer_thread', $command->getCustomerThreadId()->getValue()); if (false === $statement->execute()) { throw new CustomerServiceException('Failed to update customer thread status.', CustomerServiceException::FAILED_TO_UPDATE_STATUS); } } }