diff --git a/src/Controller/ApiController.php b/src/Controller/ApiController.php index 555a7cdc6176ef42feb57e32d859cb37c6250ca1..5c8312e02ff1de246a8f50d7dc1502e1ec5b13de 100644 --- a/src/Controller/ApiController.php +++ b/src/Controller/ApiController.php @@ -16,19 +16,36 @@ use App\Entity\Transaction; use App\Entity\User; use Doctrine\Persistence\ManagerRegistry; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; +use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; #[IsGranted('ROLE_USER')] class ApiController extends AbstractController { private Serializer $serializer; + private array $defaultContext; public function __construct() { $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); + $dateNormalizer = new DateTimeNormalizer([DateTimeNormalizer::FORMAT_KEY => "Y-m-d"]); + + $callback = function ($dateTime) { + return $dateTime instanceof string + ? strtotime($dateTime) + : ''; + }; + + $this->defaultContext = [ + AbstractNormalizer::CALLBACKS => [ + 'date' => $callback, + ], + ]; + $encoders = [new JsonEncoder()]; - $normalizers = [new DateTimeNormalizer([DateTimeNormalizer::FORMAT_KEY => "Y-m-d"]), new ObjectNormalizer($classMetadataFactory)]; + $normalizers = [$dateNormalizer, new ObjectNormalizer($classMetadataFactory, null, null, new ReflectionExtractor())]; $this->serializer = new Serializer($normalizers, $encoders); }