From d710d4b28a3465f3376f04a4b38a761ee3701118 Mon Sep 17 00:00:00 2001
From: Romain Lebbadi-Breteau <romain@lebbadi.fr>
Date: Sun, 5 Feb 2023 03:48:08 -0500
Subject: [PATCH] Jefferson sucks

---
 src/Controller/ApiController.php | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/Controller/ApiController.php b/src/Controller/ApiController.php
index 555a7cd..5c8312e 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);
     }
-- 
GitLab