RemoveTrack.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Shipping\Controller\Adminhtml\Order\Shipment;
  8. use Magento\Backend\App\Action;
  9. class RemoveTrack extends \Magento\Backend\App\Action
  10. {
  11. /**
  12. * Authorization level of a basic admin session
  13. *
  14. * @see _isAllowed()
  15. */
  16. const ADMIN_RESOURCE = 'Magento_Sales::shipment';
  17. /**
  18. * @var \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader
  19. */
  20. protected $shipmentLoader;
  21. /**
  22. * @param Action\Context $context
  23. * @param \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
  24. */
  25. public function __construct(
  26. Action\Context $context,
  27. \Magento\Shipping\Controller\Adminhtml\Order\ShipmentLoader $shipmentLoader
  28. ) {
  29. $this->shipmentLoader = $shipmentLoader;
  30. parent::__construct($context);
  31. }
  32. /**
  33. * Remove tracking number from shipment
  34. *
  35. * @return void
  36. */
  37. public function execute()
  38. {
  39. $trackId = $this->getRequest()->getParam('track_id');
  40. /** @var \Magento\Sales\Model\Order\Shipment\Track $track */
  41. $track = $this->_objectManager->create(\Magento\Sales\Model\Order\Shipment\Track::class)->load($trackId);
  42. if ($track->getId()) {
  43. try {
  44. $this->shipmentLoader->setOrderId($this->getRequest()->getParam('order_id'));
  45. $this->shipmentLoader->setShipmentId($this->getRequest()->getParam('shipment_id'));
  46. $this->shipmentLoader->setShipment($this->getRequest()->getParam('shipment'));
  47. $this->shipmentLoader->setTracking($this->getRequest()->getParam('tracking'));
  48. $shipment = $this->shipmentLoader->load();
  49. if ($shipment) {
  50. $track->delete();
  51. $this->_view->loadLayout();
  52. $this->_view->getPage()->getConfig()->getTitle()->prepend(__('Shipments'));
  53. $response = $this->_view->getLayout()->getBlock('shipment_tracking')->toHtml();
  54. } else {
  55. $response = [
  56. 'error' => true,
  57. 'message' => __('We can\'t initialize shipment for delete tracking number.'),
  58. ];
  59. }
  60. } catch (\Exception $e) {
  61. $response = ['error' => true, 'message' => __('We can\'t delete tracking number.')];
  62. }
  63. } else {
  64. $response = [
  65. 'error' => true,
  66. 'message' => __('We can\'t load track with retrieving identifier right now.')
  67. ];
  68. }
  69. if (is_array($response)) {
  70. $response = $this->_objectManager->get(\Magento\Framework\Json\Helper\Data::class)->jsonEncode($response);
  71. $this->getResponse()->representJson($response);
  72. } else {
  73. $this->getResponse()->setBody($response);
  74. }
  75. }
  76. }