Brak opisu

NewsletterOptionsRepository.php 1.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace MailPoet\Newsletter\Options;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Doctrine\Repository;
  5. use MailPoet\Entities\NewsletterEntity;
  6. use MailPoet\Entities\NewsletterOptionEntity;
  7. use MailPoet\Entities\NewsletterOptionFieldEntity;
  8. /**
  9. * @extends Repository<NewsletterOptionEntity>
  10. */
  11. class NewsletterOptionsRepository extends Repository {
  12. protected function getEntityClassName() {
  13. return NewsletterOptionEntity::class;
  14. }
  15. /**
  16. * @return NewsletterOptionEntity[]
  17. */
  18. public function findWelcomeNotificationsForSegments(array $segmentIds): array {
  19. return $this->entityManager->createQueryBuilder()
  20. ->select('no')
  21. ->from(NewsletterOptionEntity::class, 'no')
  22. ->join('no.newsletter', 'n')
  23. ->join('no.optionField', 'nof')
  24. ->where('n.deletedAt IS NULL')
  25. ->andWhere('n.type = :typeWelcome')
  26. ->andWhere('nof.name = :nameSegment')
  27. ->andWhere('no.value IN (:segmentIds)')
  28. ->setParameter('typeWelcome', NewsletterEntity::TYPE_WELCOME)
  29. ->setParameter('nameSegment', NewsletterOptionFieldEntity::NAME_SEGMENT)
  30. ->setParameter('segmentIds', $segmentIds)
  31. ->getQuery()->getResult();
  32. }
  33. /**
  34. * @return NewsletterOptionEntity[]
  35. */
  36. public function findAutomaticEmailsForSegments(array $segmentIds): array {
  37. return $this->entityManager->createQueryBuilder()
  38. ->select('no')
  39. ->from(NewsletterOptionEntity::class, 'no')
  40. ->join('no.newsletter', 'n')
  41. ->join('no.optionField', 'nof')
  42. ->where('n.deletedAt IS NULL')
  43. ->andWhere('n.type = :typeAutomatic')
  44. ->andWhere('nof.name = :nameSegment')
  45. ->andWhere('no.value IN (:segmentIds)')
  46. ->setParameter('typeAutomatic', NewsletterEntity::TYPE_AUTOMATIC)
  47. ->setParameter('nameSegment', NewsletterOptionFieldEntity::NAME_SEGMENT)
  48. ->setParameter('segmentIds', $segmentIds)
  49. ->getQuery()->getResult();
  50. }
  51. }