Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
GiftMessageManager.php
Go to the documentation of this file.
1 <?php
8 
10 
12 {
16  protected $messageFactory;
17 
21  public function __construct(
22  \Magento\GiftMessage\Model\MessageFactory $messageFactory
23  ) {
24  $this->messageFactory = $messageFactory;
25  }
26 
33  public function add($giftMessages, $quote)
34  {
35  if (!is_array($giftMessages)) {
36  return $this;
37  }
38  // types are 'quote', 'quote_item', etc
39  foreach ($giftMessages as $type => $giftMessageEntities) {
40  foreach ($giftMessageEntities as $entityId => $message) {
41  $giftMessage = $this->messageFactory->create();
42  switch ($type) {
43  case 'quote':
44  $entity = $quote;
45  break;
46  case 'quote_item':
47  $entity = $quote->getItemById($entityId);
48  break;
49  case 'quote_address':
50  $entity = $quote->getAddressById($entityId);
51  break;
52  case 'quote_address_item':
53  $entity = $quote->getAddressById($message['address'])->getItemById($entityId);
54  break;
55  default:
56  $entity = $quote;
57  break;
58  }
59 
60  if ($entity->getGiftMessageId()) {
61  $giftMessage->load($entity->getGiftMessageId());
62  }
63 
64  if (trim($message['message']) == '') {
65  if ($giftMessage->getId()) {
66  try {
67  $giftMessage->delete();
68  $entity->setGiftMessageId(0)->save();
69  } catch (\Exception $e) {
70  }
71  }
72  continue;
73  }
74 
75  try {
76  $giftMessage->setSender(
77  $message['from']
78  )->setRecipient(
79  $message['to']
80  )->setMessage(
81  $message['message']
82  )->setCustomerId(
83  $quote->getCustomerId()
84  )->save();
85 
86  $entity->setGiftMessageId($giftMessage->getId())->save();
87  } catch (\Exception $e) {
88  }
89  }
90  }
91  return $this;
92  }
93 
104  public function setMessage(\Magento\Quote\Model\Quote $quote, $type, $giftMessage, $entityId = null)
105  {
106  $message[$type][$entityId] = [
107  'from' => $giftMessage->getSender(),
108  'to' => $giftMessage->getRecipient(),
109  'message' => $giftMessage->getMessage(),
110  ];
111 
112  try {
113  $this->add($message, $quote);
114  } catch (\Exception $e) {
115  throw new CouldNotSaveException(__("The gift message couldn't be added to Cart."));
116  }
117  }
118 }
$giftMessage
Definition: items.phtml:47
$quote
__()
Definition: __.php:13
$message
$type
Definition: item.phtml:13
__construct(\Magento\GiftMessage\Model\MessageFactory $messageFactory)
setMessage(\Magento\Quote\Model\Quote $quote, $type, $giftMessage, $entityId=null)
$entity
Definition: element.phtml:22