date-poll-api/src/Repository/PollRepository.php

59 lines
1.5 KiB
PHP
Raw Normal View History

2019-10-25 14:59:20 +02:00
<?php
namespace App\Repository;
use App\Entity\Poll;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
2019-10-25 14:59:20 +02:00
/**
2021-04-27 10:22:16 +02:00
* @method Poll|null find( $id, $lockMode = null, $lockVersion = null )
* @method Poll|null findOneBy( array $criteria, array $orderBy = null )
2019-10-25 14:59:20 +02:00
* @method Poll[] findAll()
2021-04-27 10:22:16 +02:00
* @method Poll[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
2019-10-25 14:59:20 +02:00
*/
2021-04-27 10:22:16 +02:00
class PollRepository extends ServiceEntityRepository {
public function __construct(
ManagerRegistry $registry
) {
parent::__construct( $registry, Poll::class );
}
2019-10-25 14:59:20 +02:00
2021-04-27 10:22:16 +02:00
// /**
// * @return Poll[] Returns an array of Poll objects
// */
public function findExpiredPolls() {
return $this->findExpirationPollOfDay( 0 );
}
public function findSoonExpiredPolls() {
return $this->findExpirationPollOfDay( 30 );
2021-04-27 10:22:16 +02:00
}
public function findDeletableExpiredPolls() {
return $this->findExpirationPollOfDay( - 30 );
}
public function findExpirationPollOfDay( $count_of_days){
$today = new \DateTime();
if($count_of_days > -1){
$date_soon = $today->add( new \DateInterval( 'P' . $count_of_days . 'D' ) );
}else{
$date_soon = $today->sub( new \DateInterval( 'P' . abs($count_of_days) . 'D' ) );
}
return $this->createQueryBuilder( 'p' )
->andWhere( 'p.expiracyDate < :date_soon' )
->setParameter( 'date_soon', $date_soon )
->orderBy( 'p.id', 'ASC' )
->getQuery()
->getResult();
2021-04-27 10:22:16 +02:00
}
2019-10-25 14:59:20 +02:00
}