| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-sales-rule/Plugin/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-sales-rule/Plugin/CartTotalRepository.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\SalesRule\Plugin;
use Magento\Store\Model\StoreManagerInterface;
/**
* Class CartTotalRepository
* @package Magento\SalesRule\Plugin
*/
class CartTotalRepository
{
/**
* @var \Magento\Quote\Api\Data\TotalsExtensionFactory
*/
private $extensionFactory;
/**
* @var \Magento\SalesRule\Api\RuleRepositoryInterface
*/
private $ruleRepository;
/**
* @var \Magento\SalesRule\Model\Coupon
*/
private $coupon;
/**
* @var StoreManagerInterface
*/
private $storeManager;
/**
* CartTotalRepository constructor.
* @param \Magento\Quote\Api\Data\TotalsExtensionFactory $extensionFactory
* @param \Magento\SalesRule\Api\RuleRepositoryInterface $ruleRepository
* @param \Magento\SalesRule\Model\Coupon $coupon
* @param StoreManagerInterface $storeManager
*/
public function __construct(
\Magento\Quote\Api\Data\TotalsExtensionFactory $extensionFactory,
\Magento\SalesRule\Api\RuleRepositoryInterface $ruleRepository,
\Magento\SalesRule\Model\Coupon $coupon,
StoreManagerInterface $storeManager
) {
$this->extensionFactory = $extensionFactory;
$this->ruleRepository = $ruleRepository;
$this->coupon = $coupon;
$this->storeManager = $storeManager;
}
/**
* @param \Magento\Quote\Model\Cart\CartTotalRepository $subject
* @param \Magento\Quote\Api\Data\TotalsInterface $result
* @return \Magento\Quote\Api\Data\TotalsInterface
*
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function afterGet(
\Magento\Quote\Model\Cart\CartTotalRepository $subject,
\Magento\Quote\Api\Data\TotalsInterface $result
) {
if ($result->getExtensionAttributes() === null) {
$extensionAttributes = $this->extensionFactory->create();
$result->setExtensionAttributes($extensionAttributes);
}
$extensionAttributes = $result->getExtensionAttributes();
$couponCode = $result->getCouponCode();
if (empty($couponCode)) {
return $result;
}
$this->coupon->loadByCode($couponCode);
$ruleId = $this->coupon->getRuleId();
if (empty($ruleId)) {
return $result;
}
$storeId = $this->storeManager->getStore()->getId();
$rule = $this->ruleRepository->getById($ruleId);
$storeLabel = $storeLabelFallback = null;
/* @var $label \Magento\SalesRule\Model\Data\RuleLabel */
foreach ($rule->getStoreLabels() as $label) {
if ($label->getStoreId() === 0) {
$storeLabelFallback = $label->getStoreLabel();
}
if ($label->getStoreId() == $storeId) {
$storeLabel = $label->getStoreLabel();
break;
}
}
$extensionAttributes->setCouponLabel(($storeLabel) ? $storeLabel : $storeLabelFallback);
$result->setExtensionAttributes($extensionAttributes);
return $result;
}
}