feat: ajout du prix au kilo et de l'age moyen bovin + feed bovin via xlsx (!50)
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
- [x] TU/TI/TF rédigée
- [ ] TU/TI/TF OK
- [ ] CHANGELOG modifié

Reviewed-on: #50
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
This commit was merged in pull request #50.
This commit is contained in:
2026-04-28 07:25:31 +00:00
committed by Autin
parent 7b722bdd17
commit 08a17f91b3
25 changed files with 857 additions and 126 deletions

View File

@@ -0,0 +1,53 @@
<?php
declare(strict_types=1);
namespace App\Repository;
use App\Entity\Bovine;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Bovine>
*/
final class BovineRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Bovine::class);
}
/**
* Compteurs des bovins actifs par tranche d'âge.
*
* @return array{total: int, over24: int, between22And24: int, between20And22: int}
*/
public function getInventoryStats(?int $buildingCaseId = null): array
{
$qb = $this->createQueryBuilder('b')
->select(
'COUNT(b.id) AS total',
'SUM(CASE WHEN b.ageMonths >= 24 THEN 1 ELSE 0 END) AS over24',
'SUM(CASE WHEN b.ageMonths >= 22 AND b.ageMonths < 24 THEN 1 ELSE 0 END) AS between22And24',
'SUM(CASE WHEN b.ageMonths >= 20 AND b.ageMonths < 22 THEN 1 ELSE 0 END) AS between20And22',
)
->where('b.exitedAt IS NULL')
;
if (null !== $buildingCaseId) {
$qb->andWhere('b.buildingCase = :caseId')
->setParameter('caseId', $buildingCaseId)
;
}
$row = $qb->getQuery()->getSingleResult();
return [
'total' => (int) ($row['total'] ?? 0),
'over24' => (int) ($row['over24'] ?? 0),
'between22And24' => (int) ($row['between22And24'] ?? 0),
'between20And22' => (int) ($row['between20And22'] ?? 0),
];
}
}