feat(overtime-contingent) : findByEmployeesAndYears + repo non-final pour les tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 17:02:32 +02:00
parent d2122aa9c0
commit 0ef1577ccd
@@ -12,7 +12,7 @@ use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<EmployeeRttPayment>
*/
final class EmployeeRttPaymentRepository extends ServiceEntityRepository
class EmployeeRttPaymentRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
@@ -60,4 +60,31 @@ final class EmployeeRttPaymentRepository extends ServiceEntityRepository
->getResult()
;
}
/**
* Paiements de plusieurs employés sur plusieurs exercices (fetch groupé,
* évite le N+1 sur l'export PDF). Jointure employé chargée.
*
* @param list<Employee> $employees
* @param list<int> $years années d'exercice
*
* @return EmployeeRttPayment[]
*/
public function findByEmployeesAndYears(array $employees, array $years): array
{
if ([] === $employees || [] === $years) {
return [];
}
return $this->createQueryBuilder('p')
->andWhere('p.employee IN (:employees)')
->andWhere('p.year IN (:years)')
->setParameter('employees', $employees)
->setParameter('years', $years)
->innerJoin('p.employee', 'e')
->addSelect('e')
->getQuery()
->getResult()
;
}
}