feat: amélioration de l'export inventaire bovin (!51)
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled

| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|                  |                 |

## Description de la PR

## Modification du .env

## Check list

- [ ] Pas de régression
- [ ] TU/TI/TF rédigée
- [ ] TU/TI/TF OK
- [ ] CHANGELOG modifié

Reviewed-on: #51
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #51.
This commit is contained in:
2026-04-28 10:03:50 +00:00
committed by Autin
parent 19a29f854e
commit 5bb0aad620
5 changed files with 580 additions and 102 deletions

View File

@@ -13,11 +13,59 @@ use Doctrine\Persistence\ManagerRegistry;
*/
final class BovineRepository extends ServiceEntityRepository
{
public const AGE_RANGE_OVER_24 = 'over24';
public const AGE_RANGE_BETWEEN_22_AND_24 = 'between22And24';
public const AGE_RANGE_BETWEEN_20_AND_22 = 'between20And22';
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Bovine::class);
}
/**
* Liste des bovins actifs pour l'export inventaire.
*
* @param null|list<string> $ageRanges Si null/vide → tous. Sinon filtre OR sur les tranches d'âge demandées.
*
* @return list<Bovine>
*/
public function findActiveForInventoryExport(?array $ageRanges = null): array
{
$qb = $this->createQueryBuilder('b')
->where('b.exitedAt IS NULL')
->orderBy('b.birthDate', 'ASC')
;
if (null !== $ageRanges && [] !== $ageRanges) {
$orX = $qb->expr()->orX();
foreach ($ageRanges as $idx => $range) {
switch ($range) {
case self::AGE_RANGE_OVER_24:
$orX->add('b.ageMonths >= 24');
break;
case self::AGE_RANGE_BETWEEN_22_AND_24:
$orX->add($qb->expr()->andX('b.ageMonths >= 22', 'b.ageMonths < 24'));
break;
case self::AGE_RANGE_BETWEEN_20_AND_22:
$orX->add($qb->expr()->andX('b.ageMonths >= 20', 'b.ageMonths < 22'));
break;
}
}
if ($orX->count() > 0) {
$qb->andWhere($orX);
}
}
return $qb->getQuery()->getResult();
}
/**
* Compteurs des bovins actifs par tranche d'âge.
*