ShipmentService.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Service;
  7. use Magento\Sales\Api\ShipmentManagementInterface;
  8. /**
  9. * Class ShipmentService
  10. */
  11. class ShipmentService implements ShipmentManagementInterface
  12. {
  13. /**
  14. * Repository
  15. *
  16. * @var \Magento\Sales\Api\ShipmentCommentRepositoryInterface
  17. */
  18. protected $commentRepository;
  19. /**
  20. * Search Criteria Builder
  21. *
  22. * @var \Magento\Framework\Api\SearchCriteriaBuilder
  23. */
  24. protected $criteriaBuilder;
  25. /**
  26. * Filter Builder
  27. *
  28. * @var \Magento\Framework\Api\FilterBuilder
  29. */
  30. protected $filterBuilder;
  31. /**
  32. * Repository
  33. *
  34. * @var \Magento\Sales\Api\ShipmentRepositoryInterface
  35. */
  36. protected $repository;
  37. /**
  38. * Shipment Notifier
  39. *
  40. * @var \Magento\Shipping\Model\ShipmentNotifier
  41. */
  42. protected $notifier;
  43. /**
  44. * Constructor
  45. *
  46. * @param \Magento\Sales\Api\ShipmentCommentRepositoryInterface $commentRepository
  47. * @param \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder
  48. * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
  49. * @param \Magento\Sales\Api\ShipmentRepositoryInterface $repository
  50. * @param \Magento\Shipping\Model\ShipmentNotifier $notifier
  51. */
  52. public function __construct(
  53. \Magento\Sales\Api\ShipmentCommentRepositoryInterface $commentRepository,
  54. \Magento\Framework\Api\SearchCriteriaBuilder $criteriaBuilder,
  55. \Magento\Framework\Api\FilterBuilder $filterBuilder,
  56. \Magento\Sales\Api\ShipmentRepositoryInterface $repository,
  57. \Magento\Shipping\Model\ShipmentNotifier $notifier
  58. ) {
  59. $this->commentRepository = $commentRepository;
  60. $this->criteriaBuilder = $criteriaBuilder;
  61. $this->filterBuilder = $filterBuilder;
  62. $this->repository = $repository;
  63. $this->notifier = $notifier;
  64. }
  65. /**
  66. * Returns shipment label
  67. *
  68. * @param int $id
  69. * @return string
  70. */
  71. public function getLabel($id)
  72. {
  73. return (string)$this->repository->get($id)->getShippingLabel();
  74. }
  75. /**
  76. * Returns list of comments attached to shipment
  77. * @param int $id
  78. * @return \Magento\Sales\Api\Data\ShipmentCommentSearchResultInterface
  79. */
  80. public function getCommentsList($id)
  81. {
  82. $this->criteriaBuilder->addFilters(
  83. [$this->filterBuilder->setField('parent_id')->setValue($id)->setConditionType('eq')->create()]
  84. );
  85. $searchCriteria = $this->criteriaBuilder->create();
  86. return $this->commentRepository->getList($searchCriteria);
  87. }
  88. /**
  89. * Notify user
  90. *
  91. * @param int $id
  92. * @return bool
  93. */
  94. public function notify($id)
  95. {
  96. $shipment = $this->repository->get($id);
  97. return $this->notifier->notify($shipment);
  98. }
  99. }