MassDelete.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventoryAdminUi\Controller\Adminhtml\Stock;
  8. use Magento\Backend\App\Action;
  9. use Magento\Backend\App\Action\Context;
  10. use Magento\Framework\Controller\ResultInterface;
  11. use Magento\Framework\Exception\CouldNotDeleteException;
  12. use Magento\InventoryAdminUi\Ui\Component\MassAction\Filter;
  13. use Magento\InventoryApi\Api\StockRepositoryInterface;
  14. use Magento\Framework\App\Action\HttpPostActionInterface;
  15. /**
  16. * MassDelete Controller
  17. */
  18. class MassDelete extends Action implements HttpPostActionInterface
  19. {
  20. /**
  21. * @see _isAllowed()
  22. */
  23. const ADMIN_RESOURCE = 'Magento_InventoryApi::stock';
  24. /**
  25. * @var StockRepositoryInterface
  26. */
  27. private $stockRepository;
  28. /**
  29. * @var Filter
  30. */
  31. private $massActionFilter;
  32. /**
  33. * @param Context $context
  34. * @param StockRepositoryInterface $stockRepository
  35. * @param Filter $massActionFilter
  36. */
  37. public function __construct(
  38. Context $context,
  39. StockRepositoryInterface $stockRepository,
  40. Filter $massActionFilter
  41. ) {
  42. parent::__construct($context);
  43. $this->stockRepository = $stockRepository;
  44. $this->massActionFilter = $massActionFilter;
  45. }
  46. /**
  47. * @inheritdoc
  48. */
  49. public function execute(): ResultInterface
  50. {
  51. if ($this->getRequest()->isPost() !== true) {
  52. $this->messageManager->addErrorMessage(__('Wrong request.'));
  53. return $this->resultRedirectFactory->create()->setPath('*/*');
  54. }
  55. $deletedItemsCount = 0;
  56. foreach ($this->massActionFilter->getIds() as $id) {
  57. try {
  58. $id = (int)$id;
  59. $this->stockRepository->deleteById($id);
  60. $deletedItemsCount++;
  61. } catch (CouldNotDeleteException $e) {
  62. $errorMessage = __('[ID: %1] ', $id) . $e->getMessage();
  63. $this->messageManager->addErrorMessage($errorMessage);
  64. }
  65. }
  66. $this->messageManager->addSuccessMessage(__('You deleted %1 Stock(s).', $deletedItemsCount));
  67. return $this->resultRedirectFactory->create()->setPath('*/*');
  68. }
  69. }