<?php
namespace JF\JuridicusBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* PruefungsamtRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class PruefungsamtRepository extends EntityRepository
{
/**
*
* @param integer $bundesland_id
* @param integer $examen
* @return \JF\JuridicusBundle\Entity\Pruefungsamt|null
*/
public function findByBundeslandAndExamen($bundesland_id, $examen)
{
$qb = $this->createQueryBuilder('pa')
->join('pa.bundeslaender', 'b')
->where('b = :bundesland')
->andWhere('pa.examen = :examen')
->setParameter('bundesland', $bundesland_id)
->setParameter('examen', $examen)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
*
* @param string $kuerzel
* @param integer $examen
* @return \JF\JuridicusBundle\Entity\Pruefungsamt|null
*/
public function findByKuerzelAndExamen($kuerzel, $examen)
{
$qb = $this->createQueryBuilder('pa')
->select(array('pa', 'b', 'p'))
->leftJoin('pa.pruefer', 'p')
->join('pa.bundeslaender', 'b')
->where('b.kuerzel = :kuerzel')
->andWhere('pa.examen = :examen')
->andWhere('p.alias_for IS NULL')
->setParameter('kuerzel', $kuerzel)
->setParameter('examen', $examen)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
*
* @param integer $examen
* @param string $bslug
* @return \JF\JuridicusBundle\Entity\Pruefungsamt|null
*/
public function findByExamenAndBSlug($examen, $bslug)
{
$qb = $this->createQueryBuilder('pa')
->select(array('pa', 'b'))
->join('pa.bundeslaender', 'b', 'WITH', 'b.slug = :bslug')
->where('pa.examen = :examen')
->setParameter('examen', $examen)
->setParameter('bslug', $bslug)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
*
* @param string $kuerzel
* @return array
*/
public function findByKuerzel($kuerzel)
{
$qb = $this->getEntityManager()->createQueryBuilder()
->select('p')
->from('JFJuridicusBundle:Pruefungsamt', 'p', 'p.examen')
->join('p.bundeslaender', 'b')
->where('b.kuerzel = :kuerzel')
->setParameter('kuerzel', $kuerzel)
;
return $qb->getQuery()->getResult();
}
/**
*
* @param integer $user_id
* @return \JF\JuridicusBundle\Entity\Pruefungsamt|null
*/
public function findOneByUser($user_id)
{
$qb = $this->createQueryBuilder('pa')
->join('pa.bundeslaender', 'bl')
->join('bl.kunden', 'k')
->join('k.user', 'u')
->where('u.id = :uid')
->andWhere('pa.examen = k.examen')
->setParameter('uid', $user_id)
;
return $qb->getQuery()->getOneOrNullResult();
}
/**
*
* @return array
*/
public function findWithPrueferAndProtokoll()
{
$qb = $this->createQueryBuilder('pa')
->select(array('pa', 'bl', 'p'))
->join('pa.bundeslaender', 'bl')
->join('pa.pruefer', 'p')
->join('p.pdf_protokollmappe_pruefer', 'pdf')
->where('pdf.anzahl_protokolle > 0')
;
return $qb->getQuery()->getResult();
}
/**
*
* @return array
*/
public function countProtokolle()
{
$qb = $this->createQueryBuilder('pa')
->select(array(
'pa.bezeichnung',
'SUM(pdf.anzahl_protokolle) AS anzahl_protokolle'
))
->leftJoin('pa.pruefer', 'p')
->leftJoin('p.pdf_protokollmappe_pruefer', 'pdf', 'WITH',
'pdf.examen = pa.examen')
->groupBy('pa.bezeichnung')
->orderBy('pa.id', 'ASC')
;
return $qb->getQuery()->getResult();
}
}