<?php
namespace JF\JuridicusBundle\Repository;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\EntityRepository;
use JF\JuridicusBundle\Entity\PdfZeitschriftPR;
use JF\JuridicusBundle\Entity\AboZeitraum;
use Doctrine\Persistence\ManagerRegistry;
/**
* PdfZeitschriftPRRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class PdfZeitschriftPRRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, PdfZeitschriftPR::class);
}
/**
* findArchivSince
*
* @param \DateTime $date
* @return array
*/
public function findArchivSince(\DateTime $date)
{
$qb = $this->createQueryBuilder('pdf')
->where('pdf.released_at < :date')->setParameter('date', $date->format('Y-m-d'))
->orderBy('pdf.released_at', 'ASC')
;
$entities = $qb->getQuery()->getResult();
$byYear = array();
foreach ($entities as $entity) {
$byYear[$entity->getReleasedAt()->format('Y')][] = $entity;
}
return $byYear;
}
/**
* @param \DateTime $date
*/
public function findThreeBefore(\DateTime $date)
{
$qb = $this->createQueryBuilder('pdf')
->where('pdf.released_at < :date')
->setParameter('date', $date->format('Y-m-d'))
->orderBy('pdf.released_at', 'DESC')
->setMaxResults(3)
;
return $qb->getQuery()->getResult();
}
/**
* @param \DateTime $date
* @return PdfZeitschriftPR|null
*/
public function findLastBefore(\DateTime $date)
{
$qb = $this->createQueryBuilder('pdf')
->where('pdf.released_at < :date')
->setParameter('date', $date->format('Y-m-d'))
->orderBy('pdf.released_at', 'DESC')
->setMaxResults(1)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
* @return PdfZeitschriftPR|null
*/
public function findLast()
{
$qb = $this->createQueryBuilder('pdf')
->orderBy('pdf.released_at', 'DESC')
->setMaxResults(1)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
* @param \DateTime $monat
* @return PdfZeitschriftPR|null
*/
public function findByMonat(\DateTime $monat)
{
$qb = $this->createQueryBuilder('pdf')
->where('pdf.released_at >= :date1 AND pdf.released_at <= :date2')
->setParameter('date1', $monat->format('Y-m-01'))
->setParameter('date2', $monat->format('Y-m-t'))
->orderBy('pdf.released_at', 'DESC')
->setMaxResults(1)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
*
* @param AboZeitraum $zeitraum
* @return PdfZeitschriftPR[]
*/
public function findByAboZeitraum(AboZeitraum $zeitraum)
{
$qb = $this->createQueryBuilder('pdf')
->where('pdf.released_at >= :date1 AND pdf.released_at <= :date2')
->setParameter('date1', $zeitraum->getDatumStart()->format('Y-m-d'))
->setParameter('date2', $zeitraum->getDatumEnde()->format('Y-m-d'))
->orderBy('pdf.released_at', 'ASC')
;
$return = array();
foreach ($qb->getQuery()->getResult() as $pdf) {
/* @var $pdf PdfZeitschriftPR */
$return[$pdf->getReleasedAt()->format('m/Y')] = $pdf;
}
return $return;
}
}