Prepare.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. /**
  3. * Refer to LICENSE.txt distributed with the Temando Shipping module for notice of license
  4. */
  5. namespace Temando\Shipping\Controller\Adminhtml\Pickup;
  6. use Magento\Backend\App\Action;
  7. use Magento\Backend\App\Action\Context;
  8. use Magento\Framework\Controller\ResultFactory;
  9. use Temando\Shipping\Model\Pickup\PickupLoader;
  10. use Temando\Shipping\Model\Pickup\PickupManagementFactory;
  11. use Temando\Shipping\Model\PickupInterface;
  12. /**
  13. * Prepare Pickup Page
  14. *
  15. * @package Temando\Shipping\Controller
  16. * @author Sebastian Ertner <sebastian.ertner@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 Prepare extends Action
  22. {
  23. const ADMIN_RESOURCE = 'Temando_Shipping::pickups';
  24. /**
  25. * @var PickupLoader
  26. */
  27. private $pickupLoader;
  28. /**
  29. * @var PickupManagementFactory
  30. */
  31. private $pickupManagementFactory;
  32. /**
  33. * Prepare constructor.
  34. *
  35. * @param Context $context
  36. * @param PickupLoader $pickupLoader
  37. * @param PickupManagementFactory $pickupManagementFactory
  38. */
  39. public function __construct(
  40. Context $context,
  41. PickupLoader $pickupLoader,
  42. PickupManagementFactory $pickupManagementFactory
  43. ) {
  44. $this->pickupLoader = $pickupLoader;
  45. $this->pickupManagementFactory = $pickupManagementFactory;
  46. parent::__construct($context);
  47. }
  48. /**
  49. * @return \Magento\Framework\Controller\ResultInterface
  50. */
  51. public function execute()
  52. {
  53. $orderId = $this->getRequest()->getParam('sales_order_id', 0);
  54. $pickupId = $this->getRequest()->getParam('pickup_id', '');
  55. // load pickups for current request parameters
  56. $pickups = $this->pickupLoader->load($orderId, $pickupId);
  57. // check if there is a pickup in "pickup requested" state amongst them
  58. $pickupManagement = $this->pickupManagementFactory->create([
  59. 'pickups' => $pickups,
  60. ]);
  61. $requestedPickups = $pickupManagement->getPickupsByState(PickupInterface::STATE_REQUESTED);
  62. if (empty($requestedPickups)) {
  63. /** @var \Magento\Framework\Controller\Result\Forward $notFoundForward */
  64. $notFoundForward = $this->resultFactory->create(ResultFactory::TYPE_FORWARD);
  65. $notFoundForward->forward('noroute');
  66. $this->messageManager->addErrorMessage('No pickup fulfillment found to prepare.');
  67. return $notFoundForward;
  68. }
  69. // register pickups for further processing
  70. $requestedPickup = current($requestedPickups);
  71. $this->pickupLoader->register($pickups, $orderId, $requestedPickup->getPickupId());
  72. /** @var \Magento\Backend\Model\View\Result\Page $resultPage */
  73. $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
  74. $resultPage->setActiveMenu('Temando_Shipping::pickups');
  75. $resultPage->getConfig()->getTitle()->prepend(__('Prepare for Pickup'));
  76. $resultPage->addBreadcrumb(__('Prepare for Pickup'), __('Prepare for Pickup'), $this->getUrl('temando/pickup'));
  77. return $resultPage;
  78. }
  79. }