Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace Magebay\Marketplace\Controller\Product\Compare;
- use Magento\Catalog\Api\ProductRepositoryInterface;
- use Magento\Framework\App\ResponseInterface;
- use Magento\Framework\Data\Form\FormKey\Validator;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Catalog\Controller\Product\Compare;
- use Magento\Framework\Controller\ResultInterface;
- use Magento\Framework\Controller\Result\JsonFactory;
- use Magento\Framework\App\Action\Context;
- use Magento\Framework\View\Result\PageFactory;
- use Magento\Catalog\Model\Product\Compare\ItemFactory;
- use Magento\Catalog\Model\ResourceModel\Product\Compare\Item\CollectionFactory;
- use Magento\Catalog\Model\ResourceModel\Product\Compare\Item\Collection as CompareCollection;
- use Magento\Customer\Model\Session;
- use Magento\Customer\Model\Visitor;
- use Magento\Catalog\Model\Product\Compare\ListCompare;
- use Magento\Store\Model\StoreManagerInterface;
- use Magento\Framework\Webapi\Exception;
- use Magento\Catalog\Helper\Product\Compare as CompareHelper;
- use Magento\Framework\Escaper;
- /**
- * Class Add
- *
- * @package Compare
- */
- class Add extends Compare
- {
- /**
- * Result page factory
- *
- * @var JsonFactory;
- */
- protected $resultJsonFactory;
- /**
- * @var CompareHelper
- */
- protected $compareHelper;
- /**
- * @var Validator
- */
- protected $formKeyValidator;
- /**
- * @var Visitor
- */
- protected $customerVisitor;
- /**
- * @var Session
- */
- protected $customerSession;
- /**
- * @var StoreManagerInterface
- */
- protected $storeManager;
- /**
- * @var ListCompare
- */
- protected $catalogProductCompareList;
- /**
- * @var Escaper
- */
- protected $escaper;
- /**
- * Add constructor.
- * @param JsonFactory $resultJsonFactory
- * @param Context $context
- * @param ItemFactory $compareItemFactory
- * @param CollectionFactory $itemCollectionFactory
- * @param Session $customerSession
- * @param Visitor $customerVisitor
- * @param ListCompare $catalogProductCompareList
- * @param \Magento\Catalog\Model\Session $catalogSession
- * @param StoreManagerInterface $storeManager
- * @param Validator $formKeyValidator
- * @param PageFactory $resultPageFactory
- * @param ProductRepositoryInterface $productRepository
- * @param CompareHelper $compareHelper
- * @param Escaper $escaper
- */
- public function __construct(
- JsonFactory $resultJsonFactory,
- Context $context,
- ItemFactory $compareItemFactory,
- CollectionFactory $itemCollectionFactory,
- Session $customerSession,
- Visitor $customerVisitor,
- ListCompare $catalogProductCompareList,
- \Magento\Catalog\Model\Session $catalogSession,
- StoreManagerInterface $storeManager,
- Validator $formKeyValidator,
- PageFactory $resultPageFactory,
- ProductRepositoryInterface $productRepository,
- CompareHelper $compareHelper,
- Escaper $escaper
- ) {
- parent::__construct(
- $context,
- $compareItemFactory,
- $itemCollectionFactory,
- $customerSession,
- $customerVisitor,
- $catalogProductCompareList,
- $catalogSession,
- $storeManager,
- $formKeyValidator,
- $resultPageFactory,
- $productRepository
- );
- $this->resultJsonFactory = $resultJsonFactory;
- $this->compareHelper = $compareHelper;
- $this->formKeyValidator = $formKeyValidator;
- $this->customerVisitor = $customerVisitor;
- $this->customerSession = $customerSession;
- $this->storeManager = $storeManager;
- $this->catalogProductCompareList = $catalogProductCompareList;
- $this->escaper = $escaper;
- }
- /**
- * @return ResponseInterface|ResultInterface
- * @throws NoSuchEntityException
- */
- public function execute()
- {
- $resultJson = $this->resultJsonFactory->create();
- if (!$this->formKeyValidator->validate($this->getRequest())) {
- $resultJson->setHttpResponseCode(Exception::HTTP_INTERNAL_ERROR);
- return $resultJson->setData(['response' => 'Not valid data']);
- }
- $productId = (int)$this->getRequest()->getParam('product');
- if ($productId && ($this->customerVisitor->getId()
- || $this->customerSession->isLoggedIn())
- ) {
- $storeId = $this->storeManager->getStore()->getId();
- try {
- $product = $this->productRepository
- ->getById($productId, false, $storeId);
- } catch (NoSuchEntityException $e) {
- $product = null;
- }
- if ($product) {
- if ($this->findCompare($productId)) {
- $resultJson->setHttpResponseCode(201);
- $this->messageManager->addNoticeMessage(
- 'addCompareSuccessMessage',
- [
- 'product_name' => $this->escaper
- ->escapeHtml($product->getName()),
- 'compare_list_url' => $this->_url->getUrl(
- 'catalog/product_compare'
- )
- ]
- );
- return $resultJson->setData(['response' => 'All right!']);
- }
- $this->catalogProductCompareList->addProduct($product);
- $this->messageManager->addComplexSuccessMessage(
- 'addCompareSuccessMessage',
- [
- 'product_name' => $this->escaper
- ->escapeHtml($product->getName()),
- 'compare_list_url' => $this->_url->getUrl(
- 'catalog/product_compare'
- )
- ]
- );
- $this->_eventManager
- ->dispatch(
- 'catalog_product_compare_add_product', [
- 'product' => $product
- ]
- );
- }
- $this->compareHelper->calculate();
- }
- $resultJson->setHttpResponseCode(200);
- return $resultJson->setData(['response' => 'All right!']);
- }
- /**
- * @param int $productId
- * @return bool
- */
- protected function findCompare(int $productId): bool
- {
- $productsCollection = $this->getCompareOrderCollectionByCustomerId(4);
- $isset = false;
- $count = count($productsCollection);
- $sdfdsf = 23;
- foreach ($productsCollection as $product) {
- $product;
- if ($product === $productId) {
- $isset = true;
- break;
- }
- }
- return $isset;
- }
- /**
- * @param int $customerId
- * @return CompareCollection
- */
- public function getCompareOrderCollectionByCustomerId(int $customerId)
- {
- /** @var CompareCollection $collection */
- $collection = $this->_itemCollectionFactory->create();
- $collection
- ->addStoreFilter()
- ->_addJoinToSelect()
- ->addAttributeToFilter('customer_id',$customerId);
- $collection->load();
- return $collection;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement