/** * @return void */ public function install() { if ($this->queryContainer->queryNewsletterType()->count() > 0) { return; } $this->installNewsletterTypes(); }
/** * @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\NewsletterSubscriptionRequestTransfer $newsletterSubscriptionRequest * * @throws \Exception * * @return \Generated\Shared\Transfer\NewsletterSubscriptionResponseTransfer */ public function processNewsletterUnsubscriptions(NewsletterSubscriptionRequestTransfer $newsletterSubscriptionRequest) { $subscriptionResponse = $this->createSubscriptionResponse(); $connection = $this->queryContainer->getConnection(); $connection->beginTransaction(); try { $newsletterSubscriberTransfer = $newsletterSubscriptionRequest->getNewsletterSubscriber(); foreach ($newsletterSubscriptionRequest->getNewsletterTypes() as $newsletterTypeTransfer) { $isSuccess = $this->subscriptionManager->unsubscribe($newsletterSubscriberTransfer, $newsletterTypeTransfer); $subscriptionResult = $this->createSubscriptionResultTransfer($newsletterTypeTransfer, $isSuccess); $subscriptionResponse->addSubscriptionResult($subscriptionResult); } $connection->commit(); } catch (\Exception $e) { $connection->rollBack(); throw $e; } return $subscriptionResponse; }
/** * @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; }