PickupCollectedButton.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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 Pickup Collected 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. */
  22. class PickupCollectedButton extends Button
  23. {
  24. /**
  25. * @var PickupProviderInterface
  26. */
  27. private $pickupProvider;
  28. /**
  29. * @var PickupManagementFactory
  30. */
  31. private $pickupManagementFactory;
  32. /**
  33. * @var PickupUrl
  34. */
  35. private $pickupUrl;
  36. /**
  37. * @param Context $context
  38. * @param PickupProviderInterface $pickupProvider
  39. * @param PickupManagementFactory $pickupManagementFactory
  40. * @param PickupUrl $pickupUrl
  41. * @param mixed[] $data
  42. */
  43. public function __construct(
  44. Context $context,
  45. PickupProviderInterface $pickupProvider,
  46. PickupManagementFactory $pickupManagementFactory,
  47. PickupUrl $pickupUrl,
  48. array $data = []
  49. ) {
  50. $this->pickupProvider = $pickupProvider;
  51. $this->pickupManagementFactory = $pickupManagementFactory;
  52. $this->pickupUrl = $pickupUrl;
  53. parent::__construct($context, $data);
  54. }
  55. /**
  56. * Add button data
  57. *
  58. * @return string
  59. */
  60. protected function _toHtml()
  61. {
  62. $pickup = $this->pickupProvider->getPickup();
  63. $pickupId = $pickup->getPickupId();
  64. $pickupManagement = $this->pickupManagementFactory->create([
  65. 'pickups' => $this->pickupProvider->getPickups(),
  66. ]);
  67. if (!$pickupManagement->canCollect($pickupId)) {
  68. return '';
  69. }
  70. $pickupCollectedUrl = $this->pickupUrl->getCollectedActionUrl([
  71. 'pickup_id' => $pickupId,
  72. 'sales_order_id' => $this->pickupProvider->getOrder()->getEntityId(),
  73. ]);
  74. $this->setData('label', __('Mark as Picked Up'));
  75. $this->setData('class', 'primary');
  76. $this->setData('type', 'submit');
  77. $this->setData('onclick', sprintf("setLocation('%s')", $pickupCollectedUrl));
  78. return parent::_toHtml();
  79. }
  80. }