feat(transport) : filtre archivedOnly sur le repertoire (coherence M1/M2/M3)

Aligne CarrierProvider/DoctrineCarrierRepository sur Client/Supplier/Provider :
?archivedOnly=true n'expose que les archives (prioritaire sur includeArchived),
pour que le toggle « Voir les archives » du front (ERP-173/ERP-164) soit operant.
Parametre optionnel en fin de signature : retro-compatible avec les appels existants.
This commit is contained in:
Matthieu
2026-06-16 14:38:33 +02:00
parent dc75945f3e
commit aa23189fe1
3 changed files with 19 additions and 2 deletions
@@ -23,6 +23,8 @@ use Symfony\Component\DependencyInjection\Attribute\Autowire;
* Collection (GET /api/carriers) :
* - exclut par defaut les archives (is_archived = true) ET les soft-deletes ;
* - ?includeArchived=true reintegre les archives (soft-deletes toujours exclus) ;
* - ?archivedOnly=true n'expose QUE les archives (prioritaire sur includeArchived,
* aligne sur Client/Supplier/Provider — toggle « Voir les archives » ERP-173) ;
* - filtres ?search= (fuzzy name) et ?certificationType= (repetable) ;
* - tri par defaut name ASC ; pagination Hydra (regle n°13) + echappatoire
* ?pagination=false.
@@ -58,6 +60,7 @@ final class CarrierProvider implements ProviderInterface
{
$filters = $context['filters'] ?? [];
$includeArchived = $this->readBool($filters['includeArchived'] ?? false);
$archivedOnly = $this->readBool($filters['archivedOnly'] ?? false);
$search = $filters['search'] ?? null;
$certificationTypes = $this->readStringList($filters['certificationType'] ?? []);
@@ -65,11 +68,12 @@ final class CarrierProvider implements ProviderInterface
$includeArchived,
is_string($search) ? $search : null,
$certificationTypes,
$archivedOnly,
);
// Echappatoire ?pagination=false : collection complete (selects front).
if (!$this->pagination->isEnabled($operation, $context)) {
/** @var list<Carrier> $carriers */
// @var list<Carrier> $carriers
return $qb->getQuery()->getResult();
}