registry = $registry; $this->entityWorkflowRepository = $entityWorkflowRepository; $this->metadataExtractor = $metadataExtractor; } /** * @param AccompanyingPeriodWork $object * * @throws ExceptionInterface * * @return array|ArrayObject|bool|float|int|string|null */ public function normalize($object, ?string $format = null, array $context = []) { $initial = $this->normalizer->normalize($object, $format, array_merge( $context, [self::IGNORE_WORK => spl_object_hash($object)] )); // then, we add normalization for things which are not into the entity $initial['workflows_availables'] = $this->metadataExtractor->availableWorkflowFor( AccompanyingPeriodWork::class, $object->getId() ); $initial['workflows_availables_evaluation'] = $this->metadataExtractor->availableWorkflowFor( AccompanyingPeriodWorkEvaluation::class ); $workflows = $this->entityWorkflowRepository->findBy([ 'relatedEntityClass' => AccompanyingPeriodWork::class, 'relatedEntityId' => $object->getId(), ]); $initial['workflows'] = $this->normalizer->normalize($workflows, 'json', $context); return $initial; } public function supportsNormalization($data, ?string $format = null, array $context = []): bool { return 'json' === $format && $data instanceof AccompanyingPeriodWork && !array_key_exists(self::IGNORE_WORK, $context); } }