src/JuridicusBundle/Repository/PdfZeitschriftZARepository.php line 30

Open in your IDE?
  1. <?php
  2. namespace JF\JuridicusBundle\Repository;
  3. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  4. use Doctrine\ORM\EntityRepository;
  5. use JF\JuridicusBundle\Entity\PdfZeitschriftZA;
  6. use JF\JuridicusBundle\Entity\AboZeitraum;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. /**
  9. * PdfZeitschriftZARepository
  10. *
  11. * This class was generated by the Doctrine ORM. Add your own custom
  12. * repository methods below.
  13. */
  14. class PdfZeitschriftZARepository extends ServiceEntityRepository
  15. {
  16. public function __construct(ManagerRegistry $registry)
  17. {
  18. parent::__construct($registry, PdfZeitschriftZA::class);
  19. }
  20. /**
  21. * findArchivSince
  22. *
  23. * @param \DateTime $date
  24. * @return PdfZeitschriftZA[]
  25. */
  26. public function findArchivSince(\DateTime $date)
  27. {
  28. $qb = $this->createQueryBuilder('pdf')
  29. ->where('pdf.released_at < :date')
  30. ->setParameter('date', $date->format('Y-m-d'))
  31. ->orderBy('pdf.released_at', 'ASC')
  32. ;
  33. $entities = $qb->getQuery()->getResult();
  34. $byYear = array();
  35. foreach ($entities as $entity) {
  36. $byYear[$entity->getReleasedAt()->format('Y')][] = $entity;
  37. }
  38. return $byYear;
  39. }
  40. /**
  41. * @param \DateTime $date
  42. * @return PdfZeitschriftZA[]
  43. */
  44. public function findThreeBefore(\DateTime $date)
  45. {
  46. $qb = $this->createQueryBuilder('pdf')
  47. ->where('pdf.released_at < :date')
  48. ->setParameter('date', $date->format('Y-m-d'))
  49. ->orderBy('pdf.released_at', 'DESC')
  50. ->setMaxResults(3)
  51. ;
  52. return $qb->getQuery()->getResult();
  53. }
  54. /**
  55. *
  56. * @param \DateTime $date
  57. * @return PdfZeitschriftZA|null
  58. */
  59. public function findLastBefore(\DateTime $date)
  60. {
  61. $qb = $this->createQueryBuilder('pdf')
  62. ->where('pdf.released_at < :date')
  63. ->setParameter('date', $date->format('Y-m-d'))
  64. ->orderBy('pdf.released_at', 'DESC')
  65. ->setMaxResults(1)
  66. ;
  67. return $qb->getQuery()->getOneOrNullResult();
  68. }
  69. /**
  70. *
  71. * @return PdfZeitschriftZA|null
  72. */
  73. public function findLast()
  74. {
  75. $qb = $this->createQueryBuilder('pdf')
  76. ->orderBy('pdf.released_at', 'DESC')
  77. ->setMaxResults(1)
  78. ;
  79. return $qb->getQuery()->getOneOrNullResult();
  80. }
  81. /**
  82. * @param \DateTime $monat
  83. * @return PdfZeitschriftPR|null
  84. */
  85. public function findByMonat(\DateTime $monat)
  86. {
  87. $qb = $this->createQueryBuilder('pdf')
  88. ->where(':date1 <= pdf.released_at AND pdf.released_at <= :date2')
  89. ->setParameter('date1', $monat->format('Y-m-01'))
  90. ->setParameter('date2', $monat->format('Y-m-t'))
  91. ;
  92. return $qb->getQuery()->getOneOrNullResult();
  93. }
  94. /**
  95. *
  96. * @param \JF\JuridicusBundle\Repository\AboZeitraum $zeitraum
  97. * @return PdfZeitschriftZA[]
  98. */
  99. public function findByAboZeitraum(AboZeitraum $zeitraum)
  100. {
  101. $qb = $this->createQueryBuilder('pdf')
  102. ->where('pdf.released_at >= :date1 AND pdf.released_at <= :date2')
  103. ->setParameter('date1', $zeitraum->getDatumStart()->format('Y-m-d'))
  104. ->setParameter('date2', $zeitraum->getDatumEnde()->format('Y-m-d'))
  105. ->orderBy('pdf.released_at', 'ASC')
  106. ;
  107. $return = array();
  108. foreach ($qb->getQuery()->getResult() as $pdf) {
  109. /* @var $pdf PdfZeitschriftZA */
  110. $return[$pdf->getReleasedAt()->format('m/Y')] = $pdf;
  111. }
  112. return $return;
  113. }
  114. }