From a69b2ee7dc3c50f07cc42b77c1b321af4ba5051c Mon Sep 17 00:00:00 2001 From: David Remer Date: Thu, 6 Apr 2023 13:30:21 +0300 Subject: [PATCH] Query for tasks by type and subscriber [MAILPOET-4934] --- .../Sending/ScheduledTasksRepository.php | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php b/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php index 4c9c06db0b..5cf34c2f31 100644 --- a/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php +++ b/mailpoet/lib/Newsletter/Sending/ScheduledTasksRepository.php @@ -276,6 +276,28 @@ class ScheduledTasksRepository extends Repository { ->getResult(); } + /** + * @param string $type + * @param SubscriberEntity $subscriber + * @return ScheduledTaskEntity[] + * @throws \MailPoetVendor\Doctrine\ORM\NonUniqueResultException + */ + public function findByTypeAndSubscriber(string $type, SubscriberEntity $subscriber): array { + $query = $this->doctrineRepository->createQueryBuilder('st') + ->select('st') + ->join(ScheduledTaskSubscriberEntity::class, 'sts', Join::WITH, 'st = sts.task') + ->where('st.type = :type') + ->andWhere('sts.subscriber = :subscriber') + ->andWhere('st.deletedAt IS NULL') + ->andWhere('st.status = :status') + ->setParameter('type', $type) + ->setParameter('subscriber', $subscriber->getId()) + ->setParameter('status', ScheduledTaskEntity::STATUS_SCHEDULED) + ->getQuery(); + $tasks = $query->getResult(); + return $tasks; + } + public function touchAllByIds(array $ids): void { $now = CarbonImmutable::createFromTimestamp((int)$this->wp->currentTime('timestamp')); $this->entityManager->createQueryBuilder()