*/ final class BovinReturnedDossiersProvider implements ProviderInterface { public function __construct( private BovinApiInterface $bovinApi, private AnimalSummaryMapper $animalSummaryMapper, ) {} public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?BovinReturnedDossiers { $startDateRaw = (string) ($uriVariables['startDate'] ?? ''); if ('' === $startDateRaw) { return null; } try { $startDate = new DateTimeImmutable($startDateRaw); } catch (Exception) { return null; } $dto = $this->bovinApi->getReturnedDossiers($startDate); $resource = new BovinReturnedDossiers(); $resource->startDate = $dto->startDate?->format('Y-m-d') ?? $startDate->format('Y-m-d'); $resource->nbBovins = $dto->nbBovins; foreach ($dto->animals as $animalDto) { $resource->animals[] = $this->animalSummaryMapper->map($animalDto); } return $resource; } }