![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/app/code/Webkul/PrivateShop/Model/Queue/ |
<?php /** * Webkul Software * * @category Webkul * @package Webkul_PrivateShop * @author Webkul Software Private Limited * @copyright Webkul Software Private Limited (https://webkul.com) * @license https://store.webkul.com/license.html */ namespace Webkul\PrivateShop\Model\Queue; use Webkul\PrivateShop\Api\Data\MessageInterface; use Webkul\PrivateShop\Api\Data\MessageInterfaceFactory; use Webkul\PrivateShop\Api\Queue\MessageRepositoryInterface; use Webkul\PrivateShop\Model\ResourceModel\Queue\Message as ResourceModel; use Magento\Framework\Exception\CouldNotSaveException; use Webkul\PrivateShop\Model\ResourceModel\Queue\Message\CollectionFactory as CollectionFactory; class MessageRepository implements MessageRepositoryInterface { /** * @var MessageInterfaceFactory */ protected $queueMessageFactory; /** * @var ResourceModel */ protected $resourceModel; /** * @var CollectionFactory */ protected $collectionFactory; /** * @var int */ protected $maxRetries; /** * @param MessageInterfaceFactory $queueMessageFactory * @param ResourceModel $resourceModel * @param CollectionFactory $collectionFactory * @param int $maxRetries */ public function __construct( MessageInterfaceFactory $queueMessageFactory, ResourceModel $resourceModel, CollectionFactory $collectionFactory, $maxRetries = 5 ) { $this->queueMessageFactory = $queueMessageFactory; $this->resourceModel = $resourceModel; $this->collectionFactory = $collectionFactory; $this->maxRetries = $maxRetries; } /** * @inheritdoc */ public function create(MessageInterface $message) { try { $group = json_decode($message->getMessageContent(), true); $groupID = isset($group['group_id']) ? $group['group_id'] : 0; $message->setGroupId($groupID); $this->resourceModel->save($message); } catch (\Exception $exception) { throw new CouldNotSaveException(__( 'Could not save the message: %1', $exception->getMessage() )); } return $message; } /** * @inheritdoc */ public function next() { // Create collection instance and apply filter $collection = $this->collectionFactory->create() ->addFieldToFilter('status', 0) ->setOrder('updated_at', 'ASC') ->setCurPage(1) ->setPageSize(1); return $collection->getLastItem(); } /** * @inheritdoc */ public function get($id) { if (!$id) { throw new \Magento\Framework\Exception\LocalizedException( __('No id specified in queue message get') ); } $queueMessage = $this->queueMessageFactory->create(); $this->resourceModel->load($queueMessage, $id); if ($id != $queueMessage->getId()) { throw new \Magento\Framework\Exception\LocalizedException( __('Queue message not found') ); } return $queueMessage; } /** * @inheritdoc */ public function requeue(MessageInterface $message) { // Trigger date update $message->setUpdatedAt(null); // Increase retries count $message->setRetries($message->getRetries() + 1); if ($message->getRetries() >= $this->maxRetries) { $message->setStatus(MessageInterface::STATUS_MAX_RETRIES_EXCEEDED); } $this->resourceModel->save($message); } /** * @inheritdoc */ public function remove(MessageInterface $message) { $this->resourceModel->delete($message); } }