CartTotalRepository.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Plugin;
  7. use Magento\Store\Model\StoreManagerInterface;
  8. /**
  9. * Class CartTotalRepository
  10. * @package Magento\SalesRule\Plugin
  11. */
  12. class CartTotalRepository
  13. {
  14. /**
  15. * @var \Magento\Quote\Api\Data\TotalsExtensionFactory
  16. */
  17. private $extensionFactory;
  18. /**
  19. * @var \Magento\SalesRule\Api\RuleRepositoryInterface
  20. */
  21. private $ruleRepository;
  22. /**
  23. * @var \Magento\SalesRule\Model\Coupon
  24. */
  25. private $coupon;
  26. /**
  27. * @var StoreManagerInterface
  28. */
  29. private $storeManager;
  30. /**
  31. * CartTotalRepository constructor.
  32. * @param \Magento\Quote\Api\Data\TotalsExtensionFactory $extensionFactory
  33. * @param \Magento\SalesRule\Api\RuleRepositoryInterface $ruleRepository
  34. * @param \Magento\SalesRule\Model\Coupon $coupon
  35. * @param StoreManagerInterface $storeManager
  36. */
  37. public function __construct(
  38. \Magento\Quote\Api\Data\TotalsExtensionFactory $extensionFactory,
  39. \Magento\SalesRule\Api\RuleRepositoryInterface $ruleRepository,
  40. \Magento\SalesRule\Model\Coupon $coupon,
  41. StoreManagerInterface $storeManager
  42. ) {
  43. $this->extensionFactory = $extensionFactory;
  44. $this->ruleRepository = $ruleRepository;
  45. $this->coupon = $coupon;
  46. $this->storeManager = $storeManager;
  47. }
  48. /**
  49. * @param \Magento\Quote\Model\Cart\CartTotalRepository $subject
  50. * @param \Magento\Quote\Api\Data\TotalsInterface $result
  51. * @return \Magento\Quote\Api\Data\TotalsInterface
  52. *
  53. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  54. */
  55. public function afterGet(
  56. \Magento\Quote\Model\Cart\CartTotalRepository $subject,
  57. \Magento\Quote\Api\Data\TotalsInterface $result
  58. ) {
  59. if ($result->getExtensionAttributes() === null) {
  60. $extensionAttributes = $this->extensionFactory->create();
  61. $result->setExtensionAttributes($extensionAttributes);
  62. }
  63. $extensionAttributes = $result->getExtensionAttributes();
  64. $couponCode = $result->getCouponCode();
  65. if (empty($couponCode)) {
  66. return $result;
  67. }
  68. $this->coupon->loadByCode($couponCode);
  69. $ruleId = $this->coupon->getRuleId();
  70. if (empty($ruleId)) {
  71. return $result;
  72. }
  73. $storeId = $this->storeManager->getStore()->getId();
  74. $rule = $this->ruleRepository->getById($ruleId);
  75. $storeLabel = $storeLabelFallback = null;
  76. /* @var $label \Magento\SalesRule\Model\Data\RuleLabel */
  77. foreach ($rule->getStoreLabels() as $label) {
  78. if ($label->getStoreId() === 0) {
  79. $storeLabelFallback = $label->getStoreLabel();
  80. }
  81. if ($label->getStoreId() == $storeId) {
  82. $storeLabel = $label->getStoreLabel();
  83. break;
  84. }
  85. }
  86. $extensionAttributes->setCouponLabel(($storeLabel) ? $storeLabel : $storeLabelFallback);
  87. $result->setExtensionAttributes($extensionAttributes);
  88. return $result;
  89. }
  90. }