DeleteButton.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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\InventorySalesAdminUi\Ui\Component\Control\Stock;
  8. use Magento\Backend\Ui\Component\Control\DeleteButton as StockDeleteButton;
  9. use Magento\Framework\View\Element\UiComponent\Control\ButtonProviderInterface;
  10. use Magento\InventoryApi\Api\Data\StockInterface;
  11. use Magento\InventoryCatalogApi\Api\DefaultStockProviderInterface;
  12. use Magento\Framework\App\RequestInterface;
  13. use Magento\InventorySalesApi\Model\GetAssignedSalesChannelsForStockInterface;
  14. /**
  15. * Represents delete button with pre-configured options
  16. * Provide an ability to show delete button only when stock id is not default or doesn't have assigned sales channels
  17. */
  18. class DeleteButton implements ButtonProviderInterface
  19. {
  20. /**
  21. * @var StockDeleteButton
  22. */
  23. private $deleteButton;
  24. /**
  25. * @var DefaultStockProviderInterface
  26. */
  27. private $defaultStockProvider;
  28. /**
  29. * @var GetAssignedSalesChannelsForStockInterface
  30. */
  31. private $assignedSalesChannelsForStock;
  32. /**
  33. * @var RequestInterface
  34. */
  35. private $request;
  36. /**
  37. * @param StockDeleteButton $deleteButton
  38. * @param DefaultStockProviderInterface $defaultStockProvider
  39. * @param GetAssignedSalesChannelsForStockInterface $assignedSalesChannelsForStock
  40. * @param RequestInterface $request
  41. */
  42. public function __construct(
  43. StockDeleteButton $deleteButton,
  44. DefaultStockProviderInterface $defaultStockProvider,
  45. GetAssignedSalesChannelsForStockInterface $assignedSalesChannelsForStock,
  46. RequestInterface $request
  47. ) {
  48. $this->deleteButton = $deleteButton;
  49. $this->defaultStockProvider = $defaultStockProvider;
  50. $this->assignedSalesChannelsForStock = $assignedSalesChannelsForStock;
  51. $this->request = $request;
  52. }
  53. /**
  54. * {@inheritdoc}
  55. */
  56. public function getButtonData()
  57. {
  58. $stockId = (int)$this->request->getParam(StockInterface::STOCK_ID);
  59. $assignSalesChannels = $this->assignedSalesChannelsForStock->execute($stockId);
  60. if ($stockId === $this->defaultStockProvider->getId() || count($assignSalesChannels)) {
  61. return [];
  62. }
  63. return $this->deleteButton->getButtonData();
  64. }
  65. }