File: /var/www/dvpis2026/dvpis.kaunokolegija.lt/src/Repository/TmmvLecturerRepository.php
<?php
namespace App\Repository;
use App\Entity\Lecturer;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\NonUniqueResultException;
/**
* TmmvLecturerRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class TmmvLecturerRepository extends EntityRepository
{
public function findAll(): array
{
return $this->getEntityManager()
->createQuery(
"SELECT tml, l, d, au, tmmv
FROM App:TmmvLecturer tml
JOIN tml.tmmv tmmv
JOIN tml.lecturer l
JOIN l.department d
JOIN d.academicUnit au
ORDER BY l.surname ASC, l.name ASC"
)
->getResult();
}
public function findAllLecturerSum(Lecturer $lecturer)
{
try {
return $this->getEntityManager()
->createQuery(
"SELECT SUM(tml.hours) as tmmvHours
FROM App:TmmvLecturer tml
JOIN tml.lecturer l
WHERE tml.lecturer = :lecturer
ORDER BY l.surname ASC, l.name ASC"
)
->setParameter(':lecturer', $lecturer)
->getOneOrNullResult();
} catch (NonUniqueResultException $e) {
return null;
}
}
public function getLecturerTmmvPlanHoursGroupByLecturer($filter = null)
{
$query = $this->createQueryBuilder('tmmv')
->join('tmmv.lecturer', 'l')
->groupBy('tmmv.lecturer')
->select('
SUM(COALESCE(tmmv.hours,0)) as sumTmmvPlan,
SUM(COALESCE(tmmv.hoursFact,0)) as sumTmmvFact,
l.id as lecturerId
');
$results = $query->getQuery()->getResult();
$return = [];
foreach ($results as $result) {
$return[$result['lecturerId']] = $result;
}
return $return;
}
public function getLecturerTmmvPlanHoursActivityPlan(Lecturer $lecturer)
{
$query = $this->createQueryBuilder('tmmv')
->join('tmmv.lecturer', 'l')
->join('tmmv.tmmv', 'tmm')
->where('tmmv.lecturer = :lecturer')
->setParameter(':lecturer', $lecturer)
->select(
'tmm.name as name,'
. 'COALESCE(tmmv.hours,0) as hours,'
. 'tmmv.description as description'
);
return $query->getQuery()->getResult();
}
public function getLecturerTmmvPlanFactHoursActivityPlan(Lecturer $lecturer)
{
$query = $this->createQueryBuilder('tmmv')
->join('tmmv.lecturer', 'l')
->join('tmmv.tmmv', 'tmm')
->where('tmmv.lecturer = :lecturer')
->setParameter(':lecturer', $lecturer)
->select(
'tmm.name as name,'
. 'COALESCE(tmmv.hours,0) AS hours,'
. 'COALESCE(tmmv.hoursFact,0) AS hoursFact,'
. 'tmmv.description AS description,'
. 'tmmv.descriptionFact AS descriptionFact'
);
return $query->getQuery()->getResult();
}
public function deleteAll()
{
return $this->getEntityManager()
->createQuery(
"DELETE App:TmmvLecturer t"
)
->execute();
}
}