/**
  * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber
  *
  * @return \Generated\Shared\Transfer\NewsletterSubscriptionApprovalResultTransfer
  */
 public function approveSubscriberByKey(NewsletterSubscriberTransfer $newsletterSubscriber)
 {
     $result = new NewsletterSubscriptionApprovalResultTransfer();
     $subscriberEntity = $this->queryContainer->querySubscriber()->findOneBySubscriberKey($newsletterSubscriber->getSubscriberKey());
     if ($subscriberEntity === null) {
         $result->setIsSuccess(false);
         $result->setErrorMessage(Messages::INVALID_SUBSCRIBER_KEY);
         return $result;
     }
     $subscriberEntity->setIsConfirmed(true);
     $subscriberEntity->save();
     $result->setIsSuccess(true);
     return $result;
 }
 /**
  * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber
  *
  * @return bool
  */
 public function send(NewsletterSubscriberTransfer $newsletterSubscriber)
 {
     $config = $this->getFactory()->getConfig();
     $mailTransfer = $this->createMailTransfer();
     $mailTransfer->setTemplateName($config->getDoubleOptInConfirmationTemplateName());
     $this->addMailRecipient($mailTransfer, $newsletterSubscriber->getEmail());
     $this->setMailTransferFrom($mailTransfer, $config);
     $this->setMailTransferSubject($mailTransfer, $config);
     $globalMergeVars = $this->getMailGlobalMergeVars($config->getDoubleOptInApproveTokenUrl($newsletterSubscriber->getSubscriberKey()));
     $this->setMailMergeData($mailTransfer, $globalMergeVars);
     $mailFacade = $this->getFactory()->getMailFacade();
     $responses = $mailFacade->sendMail($mailTransfer);
     $result = $mailFacade->isMailSent($responses);
     return $result;
 }
 /**
  * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber
  * @param \Generated\Shared\Transfer\NewsletterTypeTransfer $newsletterType
  *
  * @return \Orm\Zed\Newsletter\Persistence\SpyNewsletterSubscription|null
  */
 protected function getSubscription(NewsletterSubscriberTransfer $newsletterSubscriber, NewsletterTypeTransfer $newsletterType)
 {
     if ($newsletterSubscriber->getSubscriberKey() !== null) {
         $subscriptionEntity = $this->queryContainer->querySubscriptionBySubscriberKeyAndNewsletterTypeName($newsletterSubscriber->getSubscriberKey(), $newsletterType->getName())->findOne();
         return $subscriptionEntity;
     }
     if ($newsletterSubscriber->getFkCustomer() !== null) {
         $subscriptionEntity = $this->queryContainer->querySubscriptionByIdCustomerAndNewsletterTypeName($newsletterSubscriber->getFkCustomer(), $newsletterType->getName())->findOne();
         return $subscriptionEntity;
     }
     return null;
 }