Files
piratepoet/lib/Cron/Workers/StatsNotifications/StatsNotificationsRepository.php
Pavel Dohnal f1934ff880 Use a better name for method
[MAILPOET-2439]
2019-11-05 13:38:51 +00:00

81 lines
2.3 KiB
PHP

<?php
namespace MailPoet\Cron\Workers\StatsNotifications;
use Carbon\Carbon;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\StatsNotificationEntity;
class StatsNotificationsRepository extends Repository {
protected function getEntityClassName() {
return StatsNotificationEntity::class;
}
/**
* @param int $newsletter_id
* @return StatsNotificationEntity[]
*/
public function findByNewsletterId($newsletter_id) {
return $this->doctrine_repository
->createQueryBuilder('stn')
->join('stn.task', 'tasks')
->join('stn.newsletter', 'n')
->addSelect('tasks')
->where('tasks.type = :taskType')
->setParameter('taskType', Worker::TASK_TYPE)
->andWhere('n.id = :newsletterId')
->setParameter('newsletterId', $newsletter_id)
->getQuery()
->getResult();
}
/**
* @param int|null $limit
* @return StatsNotificationEntity[]
*/
public function findDueTasks($limit = null) {
$date = new Carbon();
$query = $this->doctrine_repository
->createQueryBuilder('stn')
->join('stn.task', 'tasks')
->join('stn.newsletter', 'n')
->addSelect('tasks')
->addSelect('n')
->addOrderBy('tasks.priority')
->addOrderBy('tasks.updated_at')
->where('tasks.deleted_at IS NULL')
->andWhere('tasks.status = :status')
->setParameter('status', ScheduledTaskEntity::STATUS_SCHEDULED)
->andWhere('tasks.scheduled_at < :date')
->setParameter('date', $date)
->andWhere('tasks.type = :workerType')
->setParameter('workerType', Worker::TASK_TYPE);
if (is_int($limit)) {
$query->setMaxResults($limit);
}
return $query->getQuery()->getResult();
}
/**
* @return NewsletterEntity[]
*/
public function getDueAutomatedNewsletters() {
return $this->entity_manager
->createQueryBuilder()
->select('n')
->from(NewsletterEntity::class, 'n')
->where('n.status = :status')
->setParameter(':status', NewsletterEntity::STATUS_ACTIVE)
->andWhere('n.deleted_at is null')
->andWhere('n.type IN (:types)')
->setParameter('types', [NewsletterEntity::TYPE_AUTOMATIC, NewsletterEntity::TYPE_WELCOME])
->orderBy('n.subject')
->getQuery()
->getResult();
}
}