UpdateItemQty.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Checkout\Controller\Sidebar;
  7. use Magento\Checkout\Model\Sidebar;
  8. use Magento\Framework\App\Action\Action;
  9. use Magento\Framework\App\Action\Context;
  10. use Magento\Framework\App\Response\Http;
  11. use Magento\Framework\Exception\LocalizedException;
  12. use Magento\Framework\Json\Helper\Data;
  13. use Psr\Log\LoggerInterface;
  14. class UpdateItemQty extends Action
  15. {
  16. /**
  17. * @var Sidebar
  18. */
  19. protected $sidebar;
  20. /**
  21. * @var LoggerInterface
  22. */
  23. protected $logger;
  24. /**
  25. * @var Data
  26. */
  27. protected $jsonHelper;
  28. /**
  29. * @param Context $context
  30. * @param Sidebar $sidebar
  31. * @param LoggerInterface $logger
  32. * @param Data $jsonHelper
  33. * @codeCoverageIgnore
  34. */
  35. public function __construct(
  36. Context $context,
  37. Sidebar $sidebar,
  38. LoggerInterface $logger,
  39. Data $jsonHelper
  40. ) {
  41. $this->sidebar = $sidebar;
  42. $this->logger = $logger;
  43. $this->jsonHelper = $jsonHelper;
  44. parent::__construct($context);
  45. }
  46. /**
  47. * @return $this
  48. */
  49. public function execute()
  50. {
  51. $itemId = (int)$this->getRequest()->getParam('item_id');
  52. $itemQty = $this->getRequest()->getParam('item_qty') * 1;
  53. try {
  54. $this->sidebar->checkQuoteItem($itemId);
  55. $this->sidebar->updateQuoteItem($itemId, $itemQty);
  56. return $this->jsonResponse();
  57. } catch (LocalizedException $e) {
  58. return $this->jsonResponse($e->getMessage());
  59. } catch (\Exception $e) {
  60. $this->logger->critical($e);
  61. return $this->jsonResponse($e->getMessage());
  62. }
  63. }
  64. /**
  65. * Compile JSON response
  66. *
  67. * @param string $error
  68. * @return Http
  69. */
  70. protected function jsonResponse($error = '')
  71. {
  72. return $this->getResponse()->representJson(
  73. $this->jsonHelper->jsonEncode($this->sidebar->getResponseData($error))
  74. );
  75. }
  76. }