PickupCancelButton.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Block\Adminhtml\PageAction;
  6. use Magento\Backend\Block\Template\Context;
  7. use Magento\Backend\Block\Widget\Button;
  8. use Temando\Shipping\Model\Pickup\PickupManagementFactory;
  9. use Temando\Shipping\Model\PickupProviderInterface;
  10. use Temando\Shipping\ViewModel\DataProvider\PickupUrl;
  11. /**
  12. * Action Button to Cancel Pickup Action
  13. *
  14. * @api
  15. * @package Temando\Shipping\Block
  16. * @author Christoph Aßmann <christoph.assmann@netresearch.de>
  17. * @author Benjamin Heuer <benjamin.heuer@netresearch.de>
  18. * @license https://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  19. * @link https://www.temando.com/
  20. */
  21. class PickupCancelButton extends Button
  22. {
  23. /**
  24. * @var PickupProviderInterface
  25. */
  26. private $pickupProvider;
  27. /**
  28. * @var PickupManagementFactory
  29. */
  30. private $pickupManagementFactory;
  31. /**
  32. * @var PickupUrl
  33. */
  34. private $pickupUrl;
  35. /**
  36. * @param Context $context
  37. * @param PickupProviderInterface $pickupProvider
  38. * @param PickupManagementFactory $pickupManagementFactory
  39. * @param PickupUrl $pickupUrl
  40. * @param mixed[] $data
  41. */
  42. public function __construct(
  43. Context $context,
  44. PickupProviderInterface $pickupProvider,
  45. PickupManagementFactory $pickupManagementFactory,
  46. PickupUrl $pickupUrl,
  47. array $data = []
  48. ) {
  49. $this->pickupProvider = $pickupProvider;
  50. $this->pickupManagementFactory = $pickupManagementFactory;
  51. $this->pickupUrl = $pickupUrl;
  52. parent::__construct($context, $data);
  53. }
  54. /**
  55. * Add button data
  56. *
  57. * @return string
  58. */
  59. protected function _toHtml()
  60. {
  61. $pickup = $this->pickupProvider->getPickup();
  62. $pickupId = $pickup->getPickupId();
  63. $pickupManagement = $this->pickupManagementFactory->create([
  64. 'pickups' => $this->pickupProvider->getPickups(),
  65. ]);
  66. if (!$pickupManagement->canCancel($pickupId)) {
  67. return '';
  68. }
  69. $cancelPickupUrl = $this->pickupUrl->getDeleteActionUrl([
  70. 'pickup_id' => $pickupId,
  71. 'sales_order_id' => $this->pickupProvider->getOrder()->getEntityId(),
  72. ]);
  73. $this->setData('label', __('Cancel Pickup'));
  74. $this->setData('class', 'cancel');
  75. $this->setData('id', 'pickup-view-cancel-button');
  76. $this->setData('data_attribute', ['url' => $cancelPickupUrl]);
  77. return parent::_toHtml();
  78. }
  79. }