/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber * @param \Generated\Shared\Transfer\NewsletterTypeTransfer $newsletterType * * @return bool */ public function isAlreadySubscribed(NewsletterSubscriberTransfer $newsletterSubscriber, NewsletterTypeTransfer $newsletterType) { $newsletterSubscriber->requireEmail(); $newsletterType->requireName(); $subscriptionCount = $this->queryContainer->querySubscriptionByEmailAndNewsletterTypeName($newsletterSubscriber->getEmail(), $newsletterType->getName())->count(); return $subscriptionCount > 0; }
/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriberTransfer * * @return bool */ public function assignCustomerToExistingSubscriber(NewsletterSubscriberTransfer $newsletterSubscriberTransfer) { $newsletterSubscriberTransfer->requireEmail()->requireFkCustomer(); $subscriberEntity = $this->queryContainer->querySubscriber()->findOneByEmail($newsletterSubscriberTransfer->getEmail()); if ($subscriberEntity === null) { return false; } $subscriberEntity->setFkCustomer($newsletterSubscriberTransfer->getFkCustomer()); return (bool) $subscriberEntity->save(); }
/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $subscriberTransfer * * @return \Orm\Zed\Newsletter\Persistence\SpyNewsletterSubscriber|null */ protected function findSubscriberEntity(NewsletterSubscriberTransfer $subscriberTransfer) { $subscriberQuery = $this->queryContainer->querySubscriber(); $idNewsletterSubscriber = $subscriberTransfer->getIdNewsletterSubscriber(); if ($idNewsletterSubscriber !== null) { return $subscriberQuery->findOneByIdNewsletterSubscriber($idNewsletterSubscriber); } $email = $subscriberTransfer->getEmail(); if ($email !== null) { return $subscriberQuery->findOneByEmail($email); } return null; }
/** * @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 $newsletterSubscriberTransfer * * @throws \Spryker\Zed\Newsletter\Business\Exception\MissingNewsletterSubscriberEmailException * * @return \Generated\Shared\Transfer\NewsletterSubscriberTransfer */ protected function getNewsletterSubscriber(NewsletterSubscriberTransfer $newsletterSubscriberTransfer) { $email = $newsletterSubscriberTransfer->getEmail(); if ($newsletterSubscriberTransfer->getEmail() === null) { throw new MissingNewsletterSubscriberEmailException('Missing newsletter subscriber email.'); } $loadedNewsletterSubscriberTransfer = $this->subscriberManager->loadSubscriberByEmail($email); $this->subscriberExists = true; if ($loadedNewsletterSubscriberTransfer === null) { $loadedNewsletterSubscriberTransfer = $this->subscriberManager->createSubscriberFromTransfer($newsletterSubscriberTransfer); $this->subscriberExists = false; } return $loadedNewsletterSubscriberTransfer; }