```
✨ feat(UtmEvent): Ajoute le tracking Umami des utilisateurs connectés.
Ajoute l'identification des utilisateurs Umami et enregistre la session.
Implémente une bannière de consentement pour les cookies et gère l'état.
```
This commit is contained in:
@@ -5,11 +5,13 @@ namespace App\Controller;
|
||||
use App\Entity\Account;
|
||||
use App\Entity\AccountResetPasswordRequest;
|
||||
use App\Entity\Customer;
|
||||
use App\Entity\CustomerTracking;
|
||||
use App\Entity\Product;
|
||||
use App\Form\RequestPasswordConfirmType;
|
||||
use App\Form\RequestPasswordRequestType;
|
||||
use App\Logger\AppLogger;
|
||||
use App\Repository\CustomerRepository;
|
||||
use App\Repository\CustomerTrackingRepository;
|
||||
use App\Repository\ProductRepository;
|
||||
use App\Service\Mailer\Mailer;
|
||||
use App\Service\ResetPassword\Event\ResetPasswordConfirmEvent;
|
||||
@@ -60,6 +62,47 @@ class ReserverController extends AbstractController
|
||||
'products' => $products
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/reservation/umami', name: 'reservation_umami', methods: ['POST'])]
|
||||
public function umami(
|
||||
Request $request,
|
||||
CustomerTrackingRepository $customerTrackingRepository,
|
||||
EntityManagerInterface $em
|
||||
): Response {
|
||||
/** @var Customer $user */
|
||||
$user = $this->getUser();
|
||||
if (!$user) {
|
||||
return new JsonResponse(['error' => 'User not found'], Response::HTTP_UNAUTHORIZED);
|
||||
}
|
||||
|
||||
$data = json_decode($request->getContent(), true);
|
||||
$umamiSessionId = $data['umami_session'] ?? null;
|
||||
|
||||
if (!$umamiSessionId) {
|
||||
return new JsonResponse(['error' => 'No session provided'], Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
// On cherche si un tracking existe déjà pour cet ID Umami
|
||||
$track = $customerTrackingRepository->findOneBy(['trackId' => $umamiSessionId]);
|
||||
|
||||
if (!$track) {
|
||||
$track = new CustomerTracking();
|
||||
$track->setTrackId($umamiSessionId);
|
||||
$track->setCreateAT(new \DateTime()); // Utilise Immutable si possible
|
||||
$track->setCustomer($user);
|
||||
|
||||
$em->persist($track);
|
||||
} else {
|
||||
// Si le track existe déjà mais n'était pas lié à l'utilisateur
|
||||
if ($track->getCustomer() !== $user) {
|
||||
$track->setCustomer($user);
|
||||
}
|
||||
}
|
||||
|
||||
$em->flush();
|
||||
|
||||
return new JsonResponse(['status' => 'success']);
|
||||
}
|
||||
#[Route('/reservation/catalogue', name: 'reservation_catalogue')]
|
||||
public function revervationCatalogue(ProductRepository $productRepository): Response
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user