HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/dvpis2025/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();
    }
}