123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?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;
- }
- }
|