docGeneratorTemplateRepository = $docGeneratorTemplateRepository; $this->serializer = $serializer; $this->paginatorFactory = $paginatorFactory; } /** * @Route("/api/1.0/person/docgen/template/by-evaluation/{id}.{_format}", * requirements={"format": "json"}) */ public function listTemplateByEvaluation(Evaluation $evaluation, string $_format): JsonResponse { if ('json' !== $_format) { throw new BadRequestHttpException('format not supported'); } $evaluations = array_filter( $this->docGeneratorTemplateRepository ->findByEntity(AccompanyingPeriodWorkEvaluation::class), static function (DocGeneratorTemplate $t) use ($evaluation) { $ids = $t->getOptions()['evaluations'] ?? []; return in_array($evaluation->getId(), $ids, true); } ); $paginator = $this->paginatorFactory->create(count($evaluations)); $paginator->setItemsPerPage(count($evaluations)); return new JsonResponse($this->serializer->serialize( new Collection($evaluations, $paginator), 'json', [ AbstractNormalizer::GROUPS => ['read'], ] ), JsonResponse::HTTP_OK, [], true); } }