123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\SalesRule\Controller\Adminhtml\Promo\Quote;
- use Magento\Framework\App\Action\HttpPostActionInterface;
- use Magento\SalesRule\Model\CouponGenerator;
- /**
- * Generate promo quote
- */
- class Generate extends \Magento\SalesRule\Controller\Adminhtml\Promo\Quote implements HttpPostActionInterface
- {
- /**
- * @var CouponGenerator
- */
- private $couponGenerator;
- /**
- * Generate constructor.
- * @param \Magento\Backend\App\Action\Context $context
- * @param \Magento\Framework\Registry $coreRegistry
- * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
- * @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter
- * @param CouponGenerator|null $couponGenerator
- */
- public function __construct(
- \Magento\Backend\App\Action\Context $context,
- \Magento\Framework\Registry $coreRegistry,
- \Magento\Framework\App\Response\Http\FileFactory $fileFactory,
- \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter,
- CouponGenerator $couponGenerator = null
- ) {
- parent::__construct($context, $coreRegistry, $fileFactory, $dateFilter);
- $this->couponGenerator = $couponGenerator ?:
- $this->_objectManager->get(CouponGenerator::class);
- }
- /**
- * Generate Coupons action
- *
- * @return void
- */
- public function execute()
- {
- if (!$this->getRequest()->isAjax()) {
- $this->_forward('noroute');
- return;
- }
- $result = [];
- $this->_initRule();
- $rule = $this->_coreRegistry->registry(\Magento\SalesRule\Model\RegistryConstants::CURRENT_SALES_RULE);
- if (!$rule->getId()) {
- $result['error'] = __('Rule is not defined');
- } else {
- try {
- $data = $this->getRequest()->getParams();
- if (!empty($data['to_date'])) {
- $inputFilter = new \Zend_Filter_Input(['to_date' => $this->_dateFilter], [], $data);
- $data = $inputFilter->getUnescaped();
- }
- $couponCodes = $this->couponGenerator->generateCodes($data);
- $generated = count($couponCodes);
- $this->messageManager->addSuccessMessage(__('%1 coupon(s) have been generated.', $generated));
- $this->_view->getLayout()->initMessages();
- $result['messages'] = $this->_view->getLayout()->getMessagesBlock()->getGroupedHtml();
- } catch (\Magento\Framework\Exception\InputException $inputException) {
- $result['error'] = __('Invalid data provided');
- } catch (\Magento\Framework\Exception\LocalizedException $e) {
- $result['error'] = $e->getMessage();
- } catch (\Exception $e) {
- $result['error'] = __(
- 'Something went wrong while generating coupons. Please review the log and try again.'
- );
- $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
- }
- }
- $this->getResponse()->representJson(
- $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($result)
- );
- }
- }
|