Files
Starseed/src/Module/Transport/Domain/Repository/QualimatCarrierRepositoryInterface.php
T
Matthieu 456c6682b0 feat(transport) : endpoint recherche QualimatCarrier (ERP-156)
GET /api/qualimat_carriers?search= pour la saisie assistee du nom (RG-4.01,
spec-back § 4.7) : recherche fuzzy sur name (+ siret), restreinte aux lignes
actives (is_active = true), triee name ASC, paginee (regle n°13).

- QualimatCarrierRepositoryInterface + DoctrineQualimatCarrierRepository :
  QueryBuilder de recherche (forcage is_active cote serveur, fuzzy multi-champs).
- QualimatCarrierSearchProvider : provider de la GetCollection (pagination Hydra
  + echappatoire ?pagination=false), branche uniquement sur la collection.
- ApiResource : provider custom sur GetCollection, retrait des ApiFilter natifs
  (incapables d'unifier name/siret sous ?search= ni d'imposer l'actif). Mapping
  ORM inchange (schema:update reste no-op). Aucune ecriture exposee.
- Tests : actifs seuls, tri name, match siret, pagination Hydra, 403 sans perm.
2026-06-16 08:34:28 +02:00

26 lines
870 B
PHP

<?php
declare(strict_types=1);
namespace App\Module\Transport\Domain\Repository;
use Doctrine\ORM\QueryBuilder;
/**
* Contrat du repository du referentiel QUALIMAT (M4, lecture seule). Implementation
* Doctrine : App\Module\Transport\Infrastructure\Doctrine\DoctrineQualimatCarrierRepository.
*
* La table `qualimat_carrier` est alimentee/soft-deletee EXCLUSIVEMENT par la
* commande console `app:qualimat:sync` : ce contrat n'expose que de la lecture.
*/
interface QualimatCarrierRepositoryInterface
{
/**
* QueryBuilder de la saisie assistee (§ 4.7 / RG-4.01). Restreint aux lignes
* actives (is_active = true), recherche fuzzy sur name (+ siret), tri name ASC.
*
* @param null|string $search texte de recherche libre (fuzzy name + siret)
*/
public function createSearchQueryBuilder(?string $search = null): QueryBuilder;
}