security->isGranted('ROLE_ADMIN')) { throw new AccessDeniedException('Access denied: ROLE_ADMIN required.'); } $prestataire = $this->prestataireRepository->findById($id); if (null === $prestataire) { throw new InvalidArgumentException(sprintf('Prestataire with ID %d not found.', $id)); } $payload = Serializer::prestataire($prestataire); $payload['contacts'] = array_map( fn ($c) => Serializer::contact($c), $this->contactRepository->findBy(['prestataire' => $prestataire], ['lastName' => 'ASC']) ); $payload['addresses'] = array_map( fn ($a) => Serializer::address($a), $this->addressRepository->findBy(['prestataire' => $prestataire], ['id' => 'ASC']) ); $payload['reports'] = array_map( fn ($r) => Serializer::commercialReport($r), $this->reportRepository->findBy(['prestataire' => $prestataire], ['occurredAt' => 'DESC']) ); return json_encode($payload); } }