If a guest customer tries to subscribe it get an error "report.CRITICAL: No such entity with customerId = 0"
It will be great to have a configuration field to set Guest Firstname and Guest Lastname, for example:
\Klaviyo\Reclaim\Observer\UserProfileNewsletterSubscribeObserver::execute()
public function execute(\Magento\Framework\Event\Observer $observer)
{
if (!$this->_klaviyoScopeSetting->isEnabled()) {
return;
}
$subscriber = $observer->getDataObject();
if ($subscriber->isStatusChanged()) {
if ($subscriber->getCustomerId() !== 0) {
$customer = $this->customer_repository_interface->getById($subscriber->getCustomerId());
$email = $customer->getEmail();
$firstname = $customer->getFirstname();
$lastname = $customer->getLastname();
} else {
$email = $subscriber->getSubscriberEmail();
$firstname = ''; // get from config
$lastname = ''; // get from config
}
if ($subscriber->isSubscribed()) {
$this->_dataHelper->subscribeEmailToKlaviyoList(
$email,
$firstname,
$lastname
);
} else {
if (isset($customer)) {
$this->_dataHelper->unsubscribeEmailFromKlaviyoList($customer->getEmail());
} else {
$this->_dataHelper->unsubscribeEmailFromKlaviyoList($subscriber->getSubscriberEmail());
}
}
}
}
Or just
public function execute(\Magento\Framework\Event\Observer $observer)
{
if (!$this->_klaviyoScopeSetting->isEnabled()) {
return;
}
$subscriber = $observer->getDataObject();
if ($subscriber->isStatusChanged()) {
if ($subscriber->getCustomerId() !== 0) {
$customer = $this->customer_repository_interface->getById($subscriber->getCustomerId());
}
if ($subscriber->isSubscribed()) {
if (isset($customer)) {
$this->_dataHelper->subscribeEmailToKlaviyoList(
$customer->getEmail(),
$customer->getFirstname(),
$customer->getLastname()
);
} else {
$this->_dataHelper->subscribeEmailToKlaviyoList($subscriber->getSubscriberEmail());
}
} else {
if (isset($customer)) {
$this->_dataHelper->unsubscribeEmailFromKlaviyoList($customer->getEmail());
} else {
$this->_dataHelper->unsubscribeEmailFromKlaviyoList($subscriber->getSubscriberEmail());
}
}
}
}
\Magento\Newsletter\Model\Subscriber::subscribe():487
$this->save();
\Klaviyo\Reclaim\Observer\UserProfileNewsletterSubscribeObserver::execute():33$customer = $this->customer_repository_interface->getById($subscriber->getCustomerId());
If a guest customer tries to subscribe it get an error "report.CRITICAL: No such entity with customerId = 0" It will be great to have a configuration field to set Guest Firstname and Guest Lastname, for example: \Klaviyo\Reclaim\Observer\UserProfileNewsletterSubscribeObserver::execute()
Or just