Comment.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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\Sales\Model\ResourceModel\EntityAbstract;
  8. use Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot;
  9. use Magento\Sales\Model\Spi\ShipmentCommentResourceInterface;
  10. /**
  11. * Flat sales order shipment comment resource
  12. *
  13. * @author Magento Core Team <core@magentocommerce.com>
  14. */
  15. class Comment extends EntityAbstract implements ShipmentCommentResourceInterface
  16. {
  17. /**
  18. * Event prefix
  19. *
  20. * @var string
  21. */
  22. protected $_eventPrefix = 'sales_order_shipment_comment_resource';
  23. /**
  24. * Validator
  25. *
  26. * @var \Magento\Sales\Model\Order\Shipment\Comment\Validator
  27. */
  28. protected $validator;
  29. /**
  30. * @param \Magento\Framework\Model\ResourceModel\Db\Context $context
  31. * @param \Magento\Sales\Model\ResourceModel\Attribute $attribute
  32. * @param \Magento\SalesSequence\Model\Manager $sequenceManager
  33. * @param Snapshot $entitySnapshot
  34. * @param \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite $entityRelationComposite
  35. * @param \Magento\Sales\Model\Order\Shipment\Comment\Validator $validator
  36. * @param string $connectionName
  37. */
  38. public function __construct(
  39. \Magento\Framework\Model\ResourceModel\Db\Context $context,
  40. Snapshot $entitySnapshot,
  41. \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite $entityRelationComposite,
  42. \Magento\Sales\Model\ResourceModel\Attribute $attribute,
  43. \Magento\SalesSequence\Model\Manager $sequenceManager,
  44. \Magento\Sales\Model\Order\Shipment\Comment\Validator $validator,
  45. $connectionName = null
  46. ) {
  47. $this->validator = $validator;
  48. parent::__construct(
  49. $context,
  50. $entitySnapshot,
  51. $entityRelationComposite,
  52. $attribute,
  53. $sequenceManager,
  54. $connectionName
  55. );
  56. }
  57. /**
  58. * Model initialization
  59. *
  60. * @return void
  61. */
  62. protected function _construct()
  63. {
  64. $this->_init('sales_shipment_comment', 'entity_id');
  65. }
  66. /**
  67. * Performs validation before save
  68. *
  69. * @param \Magento\Framework\Model\AbstractModel $object
  70. * @return $this
  71. * @throws \Magento\Framework\Exception\LocalizedException
  72. */
  73. protected function _beforeSave(\Magento\Framework\Model\AbstractModel $object)
  74. {
  75. /** @var \Magento\Sales\Model\Order\Shipment\Comment $object */
  76. if (!$object->getParentId() && $object->getShipment()) {
  77. $object->setParentId($object->getShipment()->getId());
  78. }
  79. parent::_beforeSave($object);
  80. $errors = $this->validator->validate($object);
  81. if (!empty($errors)) {
  82. throw new \Magento\Framework\Exception\LocalizedException(
  83. __("Cannot save comment:\n%1", implode("\n", $errors))
  84. );
  85. }
  86. return $this;
  87. }
  88. }