Relation.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\ResourceModel\Order\Shipment;
  7. use Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface;
  8. use Magento\Sales\Model\ResourceModel\Order\Shipment\Item as ShipmentItemResource;
  9. use Magento\Sales\Model\ResourceModel\Order\Shipment\Comment as ShipmentCommentResource;
  10. use Magento\Sales\Model\ResourceModel\Order\Shipment\Track as ShipmentTrackResource;
  11. /**
  12. * Class Relation
  13. */
  14. class Relation implements RelationInterface
  15. {
  16. /**
  17. * @var ShipmentItemResource
  18. */
  19. protected $shipmentItemResource;
  20. /**
  21. * @var ShipmentTrackResource
  22. */
  23. protected $shipmentTrackResource;
  24. /**
  25. * @var ShipmentCommentResource
  26. */
  27. protected $shipmentCommentResource;
  28. /**
  29. * @param Item $shipmentItemResource
  30. * @param Track $shipmentTrackResource
  31. * @param Comment $shipmentCommentResource
  32. */
  33. public function __construct(
  34. ShipmentItemResource $shipmentItemResource,
  35. ShipmentTrackResource $shipmentTrackResource,
  36. ShipmentCommentResource $shipmentCommentResource
  37. ) {
  38. $this->shipmentItemResource = $shipmentItemResource;
  39. $this->shipmentTrackResource = $shipmentTrackResource;
  40. $this->shipmentCommentResource = $shipmentCommentResource;
  41. }
  42. /**
  43. * Process relations for Shipment
  44. *
  45. * @param \Magento\Framework\Model\AbstractModel $object
  46. * @return void
  47. * @throws \Exception
  48. */
  49. public function processRelation(\Magento\Framework\Model\AbstractModel $object)
  50. {
  51. /** @var \Magento\Sales\Model\Order\Shipment $object */
  52. if (null !== $object->getItems()) {
  53. foreach ($object->getItems() as $item) {
  54. $item->setParentId($object->getId());
  55. $this->shipmentItemResource->save($item);
  56. }
  57. }
  58. if (null !== $object->getTracks()) {
  59. foreach ($object->getTracks() as $track) {
  60. $track->setParentId($object->getId());
  61. $this->shipmentTrackResource->save($track);
  62. }
  63. }
  64. if (null !== $object->getComments()) {
  65. foreach ($object->getComments() as $comment) {
  66. $comment->setParentId($object->getId());
  67. $this->shipmentCommentResource->save($comment);
  68. }
  69. }
  70. }
  71. }