123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /**
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Checkout\Controller\Cart;
- use Magento\Checkout\Model\Cart as CustomerCart;
- use Magento\Framework\Escaper;
- use Magento\Framework\App\ObjectManager;
- use Magento\Sales\Model\Order\Item;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class Addgroup extends \Magento\Checkout\Controller\Cart
- {
- /**
- * @var Escaper
- */
- private $escaper;
- /**
- * @param \Magento\Framework\App\Action\Context $context
- * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
- * @param \Magento\Checkout\Model\Session $checkoutSession
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
- * @param CustomerCart $cart
- * @param Escaper|null $escaper
- */
- public function __construct(
- \Magento\Framework\App\Action\Context $context,
- \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
- \Magento\Checkout\Model\Session $checkoutSession,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator,
- CustomerCart $cart,
- Escaper $escaper = null
- ) {
- $this->escaper = $escaper ?: ObjectManager::getInstance()->get(\Magento\Framework\Escaper::class);
- parent::__construct($context, $scopeConfig, $checkoutSession, $storeManager, $formKeyValidator, $cart);
- }
- /**
- * @return \Magento\Framework\Controller\Result\Redirect
- */
- public function execute()
- {
- $orderItemIds = $this->getRequest()->getPost('order_items');
- if (is_array($orderItemIds)) {
- $itemsCollection = $this->_objectManager->create(\Magento\Sales\Model\Order\Item::class)
- ->getCollection()
- ->addIdFilter($orderItemIds)
- ->load();
- /* @var $itemsCollection \Magento\Sales\Model\ResourceModel\Order\Item\Collection */
- foreach ($itemsCollection as $item) {
- try {
- $this->addOrderItem($item);
- } catch (\Magento\Framework\Exception\LocalizedException $e) {
- if ($this->_checkoutSession->getUseNotice(true)) {
- $this->messageManager->addNoticeMessage($e->getMessage());
- } else {
- $this->messageManager->addErrorMessage($e->getMessage());
- }
- } catch (\Exception $e) {
- $this->messageManager->addExceptionMessage(
- $e,
- __('We can\'t add this item to your shopping cart right now.')
- );
- $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
- return $this->_goBack();
- }
- }
- $this->cart->save();
- }
- return $this->_goBack();
- }
- /**
- * Add item to cart.
- *
- * Add item to cart only if it's belongs to customer.
- *
- * @param Item $item
- * @return void
- */
- private function addOrderItem(Item $item)
- {
- /** @var \Magento\Customer\Model\Session $session */
- $session = $this->cart->getCustomerSession();
- if ($session->isLoggedIn()) {
- $orderCustomerId = $item->getOrder()->getCustomerId();
- $currentCustomerId = $session->getCustomer()->getId();
- if ($orderCustomerId == $currentCustomerId) {
- $this->cart->addOrderItem($item, 1);
- if (!$this->cart->getQuote()->getHasError()) {
- $message = __(
- 'You added %1 to your shopping cart.',
- $this->escaper->escapeHtml($item->getName())
- );
- $this->messageManager->addSuccessMessage($message);
- }
- }
- }
- }
- }
|