src/Controller/DefaultController.php line 551

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Repository\CategoriesRepository;
  7. use App\Repository\AlertesRepository;
  8. use App\Repository\AnnoncesRepository;
  9. use App\Repository\FavorisRepository;
  10. use App\Repository\PaysRepository;
  11. use App\Repository\VillesRepository;
  12. use App\Repository\UserRepository;
  13. use App\Repository\CommandesRepository;
  14. use App\Repository\FacturesRepository;
  15. use App\Repository\NotesEnseignesRepository;
  16. use App\Repository\NotesAnnoncesRepository;
  17. use App\Entity\Commandes;
  18. use App\Entity\Factures;
  19. use App\Entity\Alertes;
  20. use App\Entity\Villes;
  21. use App\Entity\Categories;
  22. use Datetime;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Spipu\Html2Pdf\Html2Pdf;
  25. use App\Entity\Favoris;
  26. use Stripe\Stripe;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Knp\Component\Pager\PaginatorInterface;
  29. use Doctrine\ORM\EntityManagerInterface;
  30. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  31. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  32. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  33. use App\Entity\User;
  34. use Symfony\Component\Form\Extension\Core\Type\TextType;
  35. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  36. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  37. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  38. use Symfony\Component\HttpFoundation\File\UploadedFile;
  39. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  40. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  41. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  42. use Symfony\Component\Form\Extension\Core\Type\FileType;
  43. use Symfony\Component\Form\Extension\Core\Type\DateType;
  44. use Symfony\Component\Validator\Constraints\NotBlank;
  45. use Symfony\Component\Validator\Constraints\Length;
  46. use DansMaCulotte\Monetico\Monetico;
  47. use DansMaCulotte\Monetico\Requests\PurchaseRequest;
  48. use DansMaCulotte\Monetico\Resources\BillingAddressResource;
  49. use DansMaCulotte\Monetico\Resources\ShippingAddressResource;
  50. use DansMaCulotte\Monetico\Resources\ClientResource;
  51. class DefaultController extends AbstractController
  52. {
  53.     private $entityManager;
  54.     private $stripeSecretKey;
  55.     public function __construct(EntityManagerInterface $entityManager,string $stripeSecretKey)
  56.     {
  57.         $this->entityManager $entityManager;
  58.         $this->stripeSecretKey $stripeSecretKey;
  59.     }
  60.     /**
  61.      * @Route("/loginPopup", name="custom_login")
  62.      */
  63.     public function loginPopup(Request $requestUserPasswordEncoderInterface $passwordEncoder)
  64.     {
  65.         $referer $request->headers->get('referer');
  66.         if ($this->getUser()) {
  67.             return $this->redirectToRoute(' ');
  68.         }
  69.         if ($request->isMethod('POST')) {
  70.             $email $request->request->get('email');
  71.             $password $request->request->get('password');
  72.             $user $this->getDoctrine()->getRepository(User::class)->findOneBy(['email' => $email]);
  73.             if (!$user) {
  74.                 throw new AuthenticationException('Adresse e-mail ou mot de passe incorrect.');
  75.             }
  76.             $isPasswordValid $passwordEncoder->isPasswordValid($user$password);
  77.             if (!$isPasswordValid) {
  78.                 throw new AuthenticationException('Adresse e-mail ou mot de passe incorrect.');
  79.             }
  80.             $token = new UsernamePasswordToken($user$user->getPassword(), 'main'$user->getRoles());
  81.             $this->get('security.token_storage')->setToken($token);
  82.             return $this->redirect($referer);
  83.         }
  84.     }
  85.     /**
  86.      * @Route("/", name="app_default")
  87.      */
  88.     public function index(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  89.     {
  90.         $session $request->getSession();
  91.         $session->set('type''part');
  92.         $user $this->getUser();
  93.         $alertes $alertesRepository->findBy(['User' => $user]);
  94.         $categories $categoriesRepository->findAll();
  95.         return $this->render('default/index.html.twig', [
  96.             'alertes' => $alertes,
  97.             'categories' => $categories,
  98.         ]);
  99.     }
  100.     /**
  101.      * @Route("/gestion-des-cookies", name="app_cookie")
  102.      */
  103.     public function cookie(AlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  104.     {
  105.         $user $this->getUser();
  106.         $alertes $alertesRepository->findBy(['User' => $user]);
  107.         $categories $categoriesRepository->findAll();
  108.         return $this->render('default/cookie.html.twig', [
  109.             'alertes' => $alertes,
  110.             'categories' => $categories,
  111.         ]);
  112.     }
  113.     /**
  114.      * @Route("/mentions-legales", name="app_mention")
  115.      */
  116.     public function mention(AlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  117.     {
  118.         $user $this->getUser();
  119.         $alertes $alertesRepository->findBy(['User' => $user]);
  120.         $categories $categoriesRepository->findAll();
  121.         return $this->render('default/mention.html.twig', [
  122.             'alertes' => $alertes,
  123.             'categories' => $categories,
  124.         ]);
  125.     }
  126.     /**
  127.      * @Route("/protection-des-donnees", name="app_protection")
  128.      */
  129.     public function protection(AlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  130.     {
  131.         $user $this->getUser();
  132.         $alertes $alertesRepository->findBy(['User' => $user]);
  133.         $categories $categoriesRepository->findAll();
  134.         return $this->render('default/protection.html.twig', [
  135.             'alertes' => $alertes,
  136.             'categories' => $categories,
  137.         ]);
  138.     }
  139.     /**
  140.      * @Route("/professionnels", name="professionnels")
  141.      */
  142.     public function professionnels(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  143.     {
  144.         $session $request->getSession();
  145.         $session->set('type''pro');
  146.         $user $this->getUser();
  147.         $alertes $alertesRepository->findBy(['User' => $user]);
  148.         $categories $categoriesRepository->findAll();
  149.         return $this->render('default/indexPro.html.twig', [
  150.             'alertes' => $alertes,
  151.             'categories' => $categories,
  152.         ]);
  153.     }
  154.     /**
  155.      * @Route("/achatCredit", name="achatCredit")
  156.      */
  157.     public function achatCredit(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  158.     {
  159.         $user $this->getUser();
  160.         $alertes $alertesRepository->findBy(['User' => $user]);
  161.         $categories $categoriesRepository->findAll();
  162.         return $this->render('default/achatCredit.html.twig', [
  163.             'alertes' => $alertes,
  164.             'categories' => $categories,
  165.         ]);
  166.     }
  167.     /**
  168.      * @Route("/achatRecap", name="achatRecap")
  169.      */
  170.     public function achatRecap(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  171.     {
  172.         $qt $request->request->get('quantite');
  173.         $user $this->getUser();
  174.         $alertes $alertesRepository->findBy(['User' => $user]);
  175.         $categories $categoriesRepository->findAll();
  176.         return $this->render('default/achatRecap.html.twig', [
  177.             'qt' => $qt,
  178.             'alertes' => $alertes,
  179.             'categories' => $categories,
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("/paiementStripeForm", name="paiementStripeForm")
  184.      */
  185.     public function paiementStripeForm(Request $requestCommandesRepository $commandesRepoAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  186.     {
  187.         $uniq uniqid();
  188.         $session $request->getSession();
  189.         $session->set('orderIdTemp'$uniq);
  190.         $user $this->getUser();
  191.         $qt $request->request->get('qt');
  192.         $total $qt;
  193.         $commandes = new Commandes();
  194.         $commandes->setCreated(new DateTime());
  195.         $commandes->setQuantite($qt);
  196.         $commandes->setTotal($total);
  197.         $commandes->setUser($user);
  198.         $commandes->setUniqId($uniq);
  199.         $commandesRepo->add($commandestrue);
  200.         $alertes $alertesRepository->findBy(['User' => $user]);
  201.         $categories $categoriesRepository->findAll();
  202.         return $this->render('default/paiement.html.twig', [
  203.             'alertes' => $alertes,
  204.             'categories' => $categories,
  205.         ]);
  206.     }
  207.     /**
  208.      * @Route("/stripe", name="stripe")
  209.      */
  210.     public function stripe(Request $requestCommandesRepository $commandesRepoAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  211.     {
  212.         $session $request->getSession();
  213.         $uniq $session->get('orderIdTemp');
  214.         $commandes $commandesRepo->findOneBy(array('UniqId'=>$uniq));
  215.         $total $commandes->getTotal() * 100;
  216.         $description 'commande numéro '.$commandes->getId();
  217.         $token json_decode($request->getContent(), true)['token'];
  218.         Stripe::setApiKey($this->stripeSecretKey);
  219.         try {
  220.             $charge = \Stripe\Charge::create([
  221.                 'amount' => $total,
  222.                 'currency' => 'eur',
  223.                 'source' => $token,
  224.                 'description' => $description,
  225.             ]);
  226.             return $this->json(['message' => 'Paiement effectué avec succès']);
  227.         } catch (CardException $e) {
  228.             return $this->json(['error' => $e->getMessage()], Response::HTTP_BAD_REQUEST);
  229.         } catch (ApiErrorException $e) {
  230.             return $this->json(['error' => 'Une erreur est survenue lors du traitement du paiement. Veuillez réessayer.'], Response::HTTP_INTERNAL_SERVER_ERROR);
  231.         }
  232.     }
  233.     /**
  234.      * @Route("/retourStripe/{etat}", name="retourStripe")
  235.      */
  236.     public function retourStripe(Request $request$etatCommandesRepository $commandesRepoFacturesRepository $facturesRepoUserRepository $userRepoAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  237.     {
  238.         $session $request->getSession();
  239.         $uniq $session->get('orderIdTemp');
  240.         $commandes $commandesRepo->findOneBy(array('UniqId'=>$uniq));
  241.         if($etat == 'success') {
  242.             if(!$commandes->isPaye()) {
  243.                 $commandes->setPaye(1);
  244.                 $commandesRepo->add($commandestrue);
  245.                 $user $this->getUser();
  246.                 $credit $user->getCredits() + $commandes->getQuantite();
  247.                 $user->setCredits($credit);
  248.                 $userRepo->add($usertrue);
  249.                 $factureNew = new Factures();
  250.                 $factureNew->setCreated(new DateTime());
  251.                 $factureNew->setCommandes($commandes);
  252.                 $factureNew->setUser($user);
  253.                 $facturesRepo->add($factureNewtrue);
  254.                 $template $this->renderView('default/facturesPdf.html.twig', [
  255.                     'facture' => $factureNew
  256.                 ]);
  257.                 $numero date('Y').$factureNew->getId();
  258.                 $html2pdf = new Html2Pdf();
  259.                 $html2pdf->writeHTML($template);
  260.                 $html2pdf->output('/var/www/vhosts/modixom.fr/httpdocs/public/factures/' $numero '.pdf''F');
  261.             }
  262.         }
  263.         $alertes $alertesRepository->findBy(['User' => $this->getUser()]);
  264.         $categories $categoriesRepository->findAll();
  265.         return $this->render('default/retourStripe.html.twig', [
  266.             'etat' => $etat,
  267.             'alertes' => $alertes,
  268.             'categories' => $categories,
  269.         ]);
  270.     }
  271.     /**
  272.      * @Route("/testpdf", name="testpdf")
  273.      */
  274.     public function testpdf(Request $requestFacturesRepository $facturesRepoAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  275.     {
  276.         $facture $facturesRepo->findOneById(1);
  277.         $template $this->renderView('default/facturesPdf.html.twig', [
  278.             'facture' => $facture
  279.         ]);
  280.         $html2pdf = new Html2Pdf();
  281.         $html2pdf->writeHTML($template);
  282.         $html2pdf->output('test.pdf');
  283.     }
  284.     /**
  285.      * @Route("/achatGenerationFacture", name="achatGenerationFacture")
  286.      */
  287.     public function achatGenerationFacture(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  288.     {
  289.         $user $this->getUser();
  290.         $alertes $alertesRepository->findBy(['User' => $user]);
  291.         $categories $categoriesRepository->findAll();
  292.         return $this->render('default/achatGenerationFacture.html.twig', [
  293.             'alertes' => $alertes,
  294.             'categories' => $categories,
  295.         ]);
  296.     }
  297.     /**
  298.      * @Route("/annonces", name="annonces")
  299.      */
  300.     public function annonces(CategoriesRepository $categoriesRepositoryFavorisRepository $favorisRepositoryRequest $requestAnnoncesRepository $annoncesRepositoryVillesRepository $villesRepositoryPaginatorInterface $paginatorNotesEnseignesRepository $notesEnseignesRepositoryAlertesRepository $alertesRepository): Response
  301.     {
  302.         $categoriesSearch '';
  303.         $citiesRes '';
  304.         $user $this->getUser();
  305.         $alertes $alertesRepository->findBy(['User' => $user]);
  306.         if (isset($_GET['tri'])) {
  307.             $triSearch $_GET['tri'];
  308.         } else {
  309.             $triSearch '';
  310.         }
  311.         if (isset($_GET['nbParPage'])) {
  312.             $nbParPage $_GET['nbParPage'];
  313.         } else {
  314.             $nbParPage 25;
  315.         }
  316.         if (isset($_GET['pro'])) {
  317.             $pro $_GET['pro'];
  318.         } else {
  319.             $pro 0;
  320.         }
  321.         if (isset($_GET['motscles'])) {
  322.             $motscles $_GET['motscles'];
  323.         } else {
  324.             $motscles '';
  325.         }
  326.         $villes = array();
  327.         $citiesRes = array();
  328.         $em $this->getDoctrine()->getManager();
  329.         $session $request->getSession();
  330.         $user $this->getUser();
  331.         $favorisUser = array();
  332.         if (empty($session->get('type'))) {
  333.             $session->set('type''part');
  334.         }
  335.         if ($user) {
  336.             $session->set('type'$user->getType());
  337.             $favoris $favorisRepository->findBy(array('User'=>$user));
  338.             foreach($favoris as $res) {
  339.                 array_push($favorisUser,$res->getAnnonces()->getId());
  340.             }
  341.         }
  342.         if (isset($_GET['categories'])) {
  343.             $categoriesSearch $_GET['categories'];
  344.         } else {
  345.             $categoriesSearch = array();
  346.         }
  347.         if (isset($_GET['ville'])) {
  348.             $ville $_GET['ville'];
  349.         } else {
  350.             $ville '';
  351.         }
  352.         $villes $villesRepository->findOneById($ville);
  353.         if (isset($_GET['rayon'])) {
  354.             $distance $_GET['rayon'];
  355.         } else {
  356.             $distance 50;
  357.         }
  358.         if (!empty($villes)) {
  359.             $lat $villes->getVilleLatitudeDeg();
  360.             $lng $villes->getVilleLongitudeDeg();
  361.             $formule '(6371 * ACOS(COS(RADIANS(:lat)) * COS(RADIANS(c.VilleLatitudeDeg)) * COS(RADIANS(c.VilleLongitudeDeg) - RADIANS(:lng)) + SIN(RADIANS(:lat)) * SIN(RADIANS(c.VilleLatitudeDeg))))';
  362.             $query $em->createQuery("
  363.                     SELECT c.id,c.VilleNom, $formule as dist 
  364.                     FROM App\Entity\Villes c
  365.                     WHERE $formule  <= :distance order by dist asc  ")->setParameters([
  366.                 'lat' => $lat,
  367.                 'lng' => $lng,
  368.                 'distance' => $distance,
  369.             ]);
  370.             $cities $query->getResult();
  371.             foreach ($cities as $resVille) {
  372.                 array_push($citiesRes$resVille['id']);
  373.             }
  374.         }
  375.         $annoncesReq $annoncesRepository->findByMultiCriteres($categoriesSearch$citiesRes$pro$triSearch$motscles);
  376.         $annonces = array();
  377.         $i = -1;
  378.         foreach ($annoncesReq as $res) {
  379.             $i++;
  380.             $annonces[$i]['id'] = $res->getId();
  381.             $annonces[$i]['booste'] = $res->isBooster();
  382.             $annonces[$i]['titre'] = $res->getTitre();
  383.             $annonces[$i]['enseigne'] = $res->getUser()->getRaisonSociale();
  384.             $images $res->getImages();
  385.             $annonces[$i]['images'] = (count($images) > 0) ? $images[0]->getLien() : 'default.jpg'// Chemin de l'image par défaut
  386.             $annonces[$i]['pourcentRemise'] = $res->getPourcentRemise();
  387.             $annonces[$i]['prix'] = $res->getPrix();
  388.             $pourcent $res->getPourcentRemise() / 100;
  389.             $annonces[$i]['newprix'] = $res->getPrix() * $pourcent;
  390.             $fin strtotime($res->getDateFin()->format('Y-m-d H:i:s'));
  391.             $debut strtotime(date('Y-m-d H:i:s'));
  392.             $diff abs($debut $fin);
  393.             $retour = array();
  394.             $tmp $diff;
  395.             $retour['second'] = $tmp 60;
  396.             $tmp floor(($tmp $retour['second']) / 60);
  397.             $retour['minute'] = $tmp 60;
  398.             $tmp floor(($tmp $retour['minute']) / 60);
  399.             $retour['hour'] = $tmp 24;
  400.             $tmp floor(($tmp $retour['hour'])  / 24);
  401.             $retour['day'] = $tmp 24;
  402.             $annonces[$i]['heures'] = $tmp 24 $retour['hour'];
  403.             $annonces[$i]['minutes'] = $retour['minute'];
  404.             $annonces[$i]['secondes'] = $retour['second'];
  405.             $sum 0;
  406.             $moy 0;
  407.             $y 0;
  408.             foreach ($res->getNotesAnnonces() as $res2) {
  409.                 $y++;
  410.                 $sum $sum $res2->getNote();
  411.             }
  412.             if ($y 0) {
  413.                 $moy $sum $y;
  414.                 $moyAnnonce = (round($moy 2) / 2);
  415.             } else {
  416.                 $moyAnnonce 0;
  417.             }
  418.             $annonces[$i]['moyAnnonce'] = $moyAnnonce;
  419.             $sum 0;
  420.             $moy 0;
  421.             $y 0;
  422.             $notesEns $notesEnseignesRepository->findBy(array('Enseigne'=>$res->getUser()));
  423.             foreach ($notesEns as $res2) {
  424.                 $y++;
  425.                 $sum $sum $res2->getNote();
  426.             }
  427.             $maxNote $y 5;
  428.             if ($maxNote 0) {
  429.                 $noteEnseigne = ($sum 100) / $maxNote;
  430.             } else {
  431.                 $noteEnseigne 0;
  432.             }
  433.             $annonces[$i]['moyEnseigne'] = $noteEnseigne;
  434.         }
  435.         $pagination $paginator->paginate(
  436.             $annonces,
  437.             $request->query->getInt('page'1),
  438.             $nbParPage
  439.         );
  440.         $categories $categoriesRepository->findAll();
  441.         return $this->render('default/annonces.html.twig', [
  442.             'categories' => $categories,
  443.             'annonces' => $pagination,
  444.             'ville' => $ville,
  445.             'distance' => $distance,
  446.             'categoriesSearch' => $categoriesSearch,
  447.             'triSearch' => $triSearch,
  448.             'nbParPage' => $nbParPage,
  449.             'pro' => $pro,
  450.             'motscles' => $motscles,
  451.             'favorisUser' => $favorisUser,
  452.             'alertes' => $alertes,
  453.         ]);
  454.     }
  455.     /**
  456.      * @Route("/detailAnonnce/{id}", name="detailAnonnce")
  457.      */
  458.     public function detailAnonnce(CategoriesRepository $categoriesRepositoryRequest $request$idAnnoncesRepository $annoncesRepositoryAlertesRepository $alertesRepositoryNotesEnseignesRepository $notesEnseignesRepository): Response
  459.     {
  460.         $session $request->getSession();
  461.         $user $this->getUser();
  462.         $alertes $alertesRepository->findBy(['User' => $user]);
  463.         $categories $categoriesRepository->findAll();
  464.         if (empty($session->get('type'))) {
  465.             $session->set('type''part');
  466.         }
  467.         if ($user) {
  468.             $session->set('type'$user->getType());
  469.         }
  470.         if (!$this->getUser()) {
  471.             return $this->redirectToRoute('app_login');
  472.         }
  473.         $annoncesReq $annoncesRepository->findOneById($id);
  474.         $annoncesReq->setNbvues($annoncesReq->getNbVues() + 1);
  475.         $annoncesRepository->add($annoncesReqtrue);
  476.         $annonces['id'] = $annoncesReq->getId();
  477.         $annonces['booste'] = $annoncesReq->isBooster();
  478.         $annonces['titre'] = $annoncesReq->getTitre();
  479.         $annonces['enseigne'] = $annoncesReq->getUser()->getRaisonSociale();
  480.         $annonces['logo'] = $annoncesReq->getUser()->getLogo();
  481.         $annonces['adresse'] = $annoncesReq->getUser()->getAdresse();
  482.         $annonces['cp'] = $annoncesReq->getVilles()->getVilleCodePostal();
  483.         $annonces['telephone'] = $annoncesReq->getUser()->getTelephone();
  484.         $annonces['ville'] = $annoncesReq->getVilles()->getVilleNom();
  485.         $images $annoncesReq->getImages();
  486.         $annonces['images'] = (count($images) > 0) ? $images[0]->getLien() : 'default.jpg'// Utilisez une image par défaut si aucune image n'est disponible
  487.         $annonces['pourcentRemise'] = $annoncesReq->getPourcentRemise();
  488.         $annonces['prix'] = $annoncesReq->getPrix();
  489.         $annonces['description'] = $annoncesReq->getDescription();
  490.         $annonces['quantite'] = $annoncesReq->getQuantite();
  491.         $annonces['debut'] = $annoncesReq->getDateDebut()->format('d-m-Y H:i');
  492.         $annonces['fin'] = $annoncesReq->getDateFin()->format('d-m-Y H:i');
  493.         $pourcent $annoncesReq->getPourcentRemise() / 100;
  494.         $annonces['newprix'] = $annoncesReq->getPrix() * $pourcent;
  495.         $fin strtotime($annoncesReq->getDateFin()->format('Y-m-d H:i:s'));
  496.         $debut strtotime(date('Y-m-d H:i:s'));
  497.         $diff abs($debut $fin);
  498.         $retour = array();
  499.         $tmp $diff;
  500.         $retour['second'] = $tmp 60;
  501.         $tmp floor(($tmp $retour['second']) / 60);
  502.         $retour['minute'] = $tmp 60;
  503.         $tmp floor(($tmp $retour['minute']) / 60);
  504.         $retour['hour'] = $tmp 24;
  505.         $tmp floor(($tmp $retour['hour'])  / 24);
  506.         $retour['day'] = $tmp 24;
  507.         $annonces['heures'] = $tmp 24 $retour['hour'];
  508.         $annonces['minutes'] = $retour['minute'];
  509.         $annonces['secondes'] = $retour['second'];
  510.         $sum 0;
  511.         $moy 0;
  512.         $y 0;
  513.         foreach ($annoncesReq->getNotesAnnonces() as $res2) {
  514.             $y++;
  515.             $sum $sum $res2->getNote();
  516.         }
  517.         if ($y 0) {
  518.             $moy $sum $y;
  519.             $moyAnnonce = (round($moy 2) / 2);
  520.         } else {
  521.             $moyAnnonce 0;
  522.         }
  523.         $annonces['moyAnnonce'] = $moyAnnonce;
  524.         $sum 0;
  525.         $moy 0;
  526.         $y 0;
  527.         $notesEns $notesEnseignesRepository->findBy(array('Enseigne' => $annoncesReq->getUser()));
  528.         foreach ($notesEns as $res2) {
  529.             $y++;
  530.             $sum $sum $res2->getNote();
  531.         }
  532.         $maxNote $y 5;
  533.         if ($maxNote 0) {
  534.             $noteEnseigne = ($sum 100) / $maxNote;
  535.         } else {
  536.             $noteEnseigne 0;
  537.         }
  538.         $annonces['moyEnseigne'] = $noteEnseigne;
  539.         return $this->render('default/detailAnonnce.html.twig', [
  540.             'annonce' => $annoncesReq,
  541.             'alertes' => $alertes,
  542.             'categories' => $categories,
  543.             'res' => $annonces
  544.         ]);
  545.     }
  546.     /**
  547.      * @Route("/inscription", name="inscription")
  548.      */
  549.     public function inscription(Request $requestPaysRepository $paysRepositoryUserRepository $userRepositoryVillesRepository $villesRepositoryAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  550.     {
  551.         $session $request->getSession();
  552.         $session->set('type'$request->query->get('type'));
  553.         $type $request->query->get('type') == 'pro' 'pro' 'part';
  554.         $role $type == 'pro' ? ["ROLE_PRO"] : ["ROLE_PART"];
  555.         $credit $type == 'pro' 100 0;
  556.         $client = new User();
  557.         if ($type == 'part') {
  558.             $formClient $this->createFormBuilder($client)
  559.                 ->add('nom'TextType::class, array('label' => false))
  560.                 ->add('prenom'TextType::class, array('label' => false))
  561.                 ->add('adresse'TextType::class, array('label' => false))
  562.                 ->add('codePostal'TextType::class, array('label' => false))
  563.                 ->add('telephone'TextType::class, array('label' => false))
  564.                 ->add('email'EmailType::class, array('label' => false))
  565.                 ->add('password'PasswordType::class, array('label' => false))
  566.                 ->getForm();
  567.         } else {
  568.             $formClient $this->createFormBuilder($client)
  569.                 ->add('nom'TextType::class, array('label' => false))
  570.                 ->add('prenom'TextType::class, array('label' => false))
  571.                 ->add('adresse'TextType::class, array('label' => false))
  572.                 ->add('codePostal'TextType::class, array('label' => false))
  573.                 ->add('telephone'TextType::class, array('label' => false))
  574.                 ->add('email'EmailType::class, array('label' => false))
  575.                 ->add('logo'FileType::class, array('label' => false))
  576.                 ->add('password'PasswordType::class, array('label' => false))
  577.                 ->add('raisonSociale'TextType::class, array('label' => false))
  578.                 ->add('siret'TextType::class, array('label' => false))
  579.                 ->add('tva'TextType::class, array('label' => false))
  580.                 ->getForm();
  581.         }
  582.         $formClientView $formClient->createView();
  583.         $formClient->handleRequest($request);
  584.         if ($formClient->isSubmitted()) {
  585.             $ville $villesRepository->findOneById($request->request->get('ville'));
  586.             $pays $paysRepository->findOneById($request->request->get('pays'));
  587.             $clientExist $userRepository->findOneBy(array('email' => $request->request->get('form')['email']));
  588.             if ($type == 'pro') {
  589.                 $file $formClient->get('logo')->getData();
  590.                 if ($file != 'null') {
  591.                     $path '/';
  592.                     $fileName uniqid() . '-' $file->getClientOriginalName();
  593.                     $file->move($this->getParameter('logos_directory') . $path$fileName);
  594.                     $client->setLogo($fileName);
  595.                 }
  596.             }
  597.             if (!empty($clientExist)) {
  598.                 return $this->redirectToRoute('inscription', ['erreur' => 'email''type' => $type], Response::HTTP_SEE_OTHER);
  599.             }
  600.             $pass password_hash($request->request->get('form')['password'], PASSWORD_BCRYPT);
  601.             $client->setPassword($pass);
  602.             $client->setType($type);
  603.             $client->setRoles($role);
  604.             $client->setCivilite($request->request->get('genre'));
  605.             $client->setPays($pays);
  606.             $client->setVilles($ville);
  607.             $client->setCredits($credit);
  608.             $client->setCreated(new DateTime());
  609.             $userRepository->add($clienttrue);
  610.             return $this->redirectToRoute('app_login', [], Response::HTTP_SEE_OTHER);
  611.         }
  612.         $alertes $alertesRepository->findBy(['User' => $this->getUser()]);
  613.         $categories $categoriesRepository->findAll();
  614.         return $this->render('default/inscription.html.twig', [
  615.             'form' => $formClientView,
  616.             'pays' => $paysRepository->findAll(),
  617.             'alertes' => $alertes,
  618.             'categories' => $categories,
  619.         ]);
  620.     }
  621.     /**
  622.      * @Route("/profil", name="profil")
  623.      */
  624.     public function profil(
  625.         Request $request,
  626.         PaysRepository $paysRepository,
  627.         UserRepository $userRepository,
  628.         VillesRepository $villesRepository,
  629.         CategoriesRepository $categoriesRepository,
  630.         AlertesRepository $alertesRepository,
  631.         EntityManagerInterface $entityManager
  632.     ): Response {
  633.         $client $this->getUser();
  634.         $oldLogo $client->getLogo();
  635.         $type $client->getType();
  636.         
  637.         if ($type == 'part') {
  638.             $formClient $this->createFormBuilder($client)
  639.                 ->add('nom'TextType::class, array('label' => false))
  640.                 ->add('prenom'TextType::class, array('label' => false))
  641.                 ->add('adresse'TextType::class, array('label' => false))
  642.                 ->add('codePostal'TextType::class, array('label' => false))
  643.                 ->add('telephone'TextType::class, array('label' => false))
  644.                 ->add('email'EmailType::class, array('label' => false))
  645.                 ->getForm();
  646.         } else {
  647.             $formClient $this->createFormBuilder($client)
  648.                 ->add('nom'TextType::class, array('label' => false))
  649.                 ->add('prenom'TextType::class, array('label' => false))
  650.                 ->add('adresse'TextType::class, array('label' => false))
  651.                 ->add('codePostal'TextType::class, array('label' => false))
  652.                 ->add('telephone'TextType::class, array('label' => false))
  653.                 ->add('email'EmailType::class, array('label' => false))
  654.                 ->add('logo'FileType::class, array('label' => false'data_class' => null'required'=>false))
  655.                 ->add('raisonSociale'TextType::class, array('label' => false))
  656.                 ->add('siret'IntegerType::class, array('label' => false'required'=>false))
  657.                 ->add('tva'TextType::class, array('label' => false'required'=>false))
  658.                 ->getForm();
  659.         }
  660.     
  661.         $formClientView $formClient->createView();
  662.         $formClient->handleRequest($request);
  663.     
  664.         if ($formClient->isSubmitted()) {
  665.             $ville $villesRepository->findOneById($request->request->get('ville'));
  666.             $pays $paysRepository->findOneById($request->request->get('pays'));
  667.     
  668.             $clientExist $userRepository->findOneBy(array('email' => $request->request->get('form')['email']));
  669.             if (!empty($clientExist) && $clientExist->getId() != $client->getId()) {
  670.                 return $this->redirectToRoute('profil', ['erreur' => 'email'], Response::HTTP_SEE_OTHER);
  671.             }
  672.     
  673.             if ($type == 'pro') {
  674.                 // Gérer la suppression du logo
  675.                 if ($request->request->get('remove_logo') == '1') {
  676.                     $client->setLogo(null);
  677.                 } else {
  678.                     $file $formClient->get('logo')->getData();
  679.                     if ($file) {
  680.                         $fileName uniqid() . '-' $file->getClientOriginalName();
  681.                         $file->move($this->getParameter('logos_directory'), $fileName);
  682.                         $client->setLogo($fileName);
  683.                     } else {
  684.                         $client->setLogo($oldLogo);
  685.                     }
  686.                 }
  687.             }
  688.     
  689.             $client->setPays($pays);
  690.             $client->setVilles($ville);
  691.             $userRepository->add($clienttrue);
  692.     
  693.             return $this->redirectToRoute('profil', [], Response::HTTP_SEE_OTHER);
  694.         }
  695.     
  696.         if ($request->request->get('new1')) {
  697.             $pass password_hash($request->request->get('new1'), PASSWORD_BCRYPT);
  698.             $client->setPassword($pass);
  699.             $userRepository->add($clienttrue);
  700.         }
  701.     
  702.         $alertes $alertesRepository->findBy(['User' => $client]);
  703.         $categories $categoriesRepository->findAll();
  704.     
  705.         return $this->render('default/profil.html.twig', [
  706.             'pays' => $paysRepository->findAll(),
  707.             'form' => $formClientView,
  708.             'alertes' => $alertes,
  709.             'categories' => $categories
  710.         ]);
  711.     }
  712.     
  713.     /**
  714.      * @Route("/favoris", name="favoris")
  715.      */
  716.     public function favoris(Request $requestAnnoncesRepository $annoncesRepositoryFavorisRepository $favorisRepositoryAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  717.     {
  718.         $session $request->getSession();
  719.         $session->set('type''part');
  720.         $user $this->getUser();
  721.         $alertes $alertesRepository->findBy(['User' => $user]);
  722.         $categories $categoriesRepository->findAll();
  723.         $annoncesRes $favorisRepository->findBy(['User' => $user]);
  724.         $annonces = array();
  725.         $i = -1;
  726.         foreach ($annoncesRes as $res) {
  727.             $i++;
  728.             $annonces[$i]['id'] = $res->getAnnonces()->getId();
  729.             $annonces[$i]['booste'] = $res->getAnnonces()->isBooster();
  730.             $annonces[$i]['titre'] = $res->getAnnonces()->getTitre();
  731.             $annonces[$i]['enseigne'] = $res->getUser()->getRaisonSociale();
  732.             $annonces[$i]['images'] = $res->getAnnonces()->getImages()[0]->getLien();
  733.             $annonces[$i]['pourcentRemise'] = $res->getAnnonces()->getPourcentRemise();
  734.             $annonces[$i]['prix'] = $res->getAnnonces()->getPrix();
  735.             $pourcent $res->getAnnonces()->getPourcentRemise() / 100;
  736.             $annonces[$i]['newprix'] = $res->getAnnonces()->getPrix() * $pourcent;
  737.             $fin strtotime($res->getAnnonces()->getDateFin()->format('Y-m-d H:i:s'));
  738.             $debut strtotime(date('Y-m-d H:i:s'));
  739.             $diff abs($debut $fin);
  740.             $retour = array();
  741.             $tmp $diff;
  742.             $retour['second'] = $tmp 60;
  743.             $tmp floor(($tmp $retour['second']) / 60);
  744.             $retour['minute'] = $tmp 60;
  745.             $tmp floor(($tmp $retour['minute']) / 60);
  746.             $retour['hour'] = $tmp 24;
  747.             $tmp floor(($tmp $retour['hour'])  / 24);
  748.             $retour['day'] = $tmp 24;
  749.             $annonces[$i]['heures'] = $tmp 24 $retour['hour'];
  750.             $annonces[$i]['minutes'] = $retour['minute'];
  751.             $annonces[$i]['secondes'] = $retour['second'];
  752.             $sum 0;
  753.             $moy 0;
  754.             $y 0;
  755.             foreach ($res->getAnnonces()->getNotesAnnonces() as $res2) {
  756.                 $y++;
  757.                 $sum $sum $res2->getNote();
  758.             }
  759.             if ($y 0) {
  760.                 $moy $sum $y;
  761.                 $moyAnnonce = (round($moy 2) / 2);
  762.             } else {
  763.                 $moyAnnonce 0;
  764.             }
  765.             $annonces[$i]['moyAnnonce'] = $moyAnnonce;
  766.             $sum 0;
  767.             $moy 0;
  768.             $y 0;
  769.             foreach ($res->getUser()->getNotesEnseignes() as $res2) {
  770.                 $y++;
  771.                 $sum $sum $res2->getNote();
  772.             }
  773.             $maxNote $y 5;
  774.             if ($maxNote 0) {
  775.                 $noteEnseigne = ($sum 100) / $maxNote;
  776.             } else {
  777.                 $noteEnseigne 0;
  778.             }
  779.             $annonces[$i]['moyEnseigne'] = $noteEnseigne;
  780.         }
  781.         return $this->render('default/favoris.html.twig', [
  782.             'annonce' => $annonces,
  783.             'alertes' => $alertes,
  784.             'categories' => $categories
  785.         ]);
  786.     }
  787.     /**
  788.      * @Route("/addFavoris", name="addFavoris")
  789.      */
  790.     public function addFavoris(Request $requestAnnoncesRepository $annoncesRepositoryFavorisRepository $favorisRepository): Response
  791.     {
  792.         $user $this->getUser();
  793.         $id $request->request->get('id');
  794.         $etat $request->request->get('etat');
  795.         $annonce $annoncesRepository->findOneById($id);
  796.         if($etat == 'non active') {
  797.             $favoris = new Favoris();
  798.             $favoris->setUser($user);
  799.             $favoris->setDate(new Datetime);
  800.             $favoris->setAnnonces($annonce);
  801.             $favorisRepository->add($favoristrue);
  802.         } else {
  803.             $favoris $favorisRepository->findOneBy(array('User'=>$user,'Annonces'=>$annonce));
  804.             $favorisRepository->remove($favoristrue);
  805.         }
  806.         return new Response('ok');
  807.     }
  808.     /**
  809.      * @Route("/contact", name="contact")
  810.      */
  811.     public function contact(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  812.     {
  813.         $lienAnnonce $request->query->get('id') ? $request->headers->get('referer') : '';
  814.         $user $this->getUser();
  815.         $alertes $alertesRepository->findBy(['User' => $user]);
  816.         $categories $categoriesRepository->findAll();
  817.         return $this->render('default/contact.html.twig', [
  818.             'lienAnnonce' => $lienAnnonce,
  819.             'alertes' => $alertes,
  820.             'categories' => $categories,
  821.         ]);
  822.     }
  823.     /**
  824.      * @Route("/contact1", name="contact1")
  825.      */
  826.     public function contact1(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  827.     {
  828.         $user $this->getUser();
  829.         $alertes $alertesRepository->findBy(['User' => $user]);
  830.         $categories $categoriesRepository->findAll();
  831.         return $this->render('default/contact1.html.twig', [
  832.             'alertes' => $alertes,
  833.             'categories' => $categories,
  834.         ]);
  835.     }
  836.     /**
  837.      * @Route("/achatFacture", name="achatFacture")
  838.      */
  839.     public function achatFacture(Request $requestAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  840.     {
  841.         $user $this->getUser();
  842.         $alertes $alertesRepository->findBy(['User' => $user]);
  843.         $categories $categoriesRepository->findAll();
  844.         return $this->render('default/achatGenerationFacture.html.twig', [
  845.             'alertes' => $alertes,
  846.             'categories' => $categories,
  847.         ]);
  848.     }
  849.     /**
  850.      * @Route("/notesEnseignes", name="notesEnseignes")
  851.      */
  852.     public function notesEnseignes(Request $requestNotesEnseignesRepository $notesEnseignesRepositoryAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  853.     {
  854.         $notes $notesEnseignesRepository->findBy(['Enseigne' => $this->getUser()], ['Date' => 'desc']);
  855.         $sum 0;
  856.         $moy 0;
  857.         $y 0;
  858.         $noteEnseigne 0;
  859.         foreach ($notes as $res2) {
  860.             $y++;
  861.             $sum $sum $res2->getNote();
  862.         }
  863.         if ($y 0) {
  864.             $noteEnseigne $sum $y;
  865.         }
  866.         $alertes $alertesRepository->findBy(['User' => $this->getUser()]);
  867.         $categories $categoriesRepository->findAll();
  868.         return $this->render('default/notesEnseignes.html.twig', [
  869.             'notes' => $notes,
  870.             'noteEnseigne' => $noteEnseigne,
  871.             'alertes' => $alertes,
  872.             'categories' => $categories,
  873.         ]);
  874.     }
  875.     /**
  876.      * @Route("/notesAnnonces/{id}", name="notesAnnonces")
  877.      */
  878.     public function notesAnnonces(Request $requestNotesAnnoncesRepository $notesAnnoncesRepository$idAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  879.     {
  880.         $notes $notesAnnoncesRepository->findBy(['Annonces' => $id], ['Date' => 'desc']);
  881.         $sum 0;
  882.         $moy 0;
  883.         $y 0;
  884.         $noteAnnonces 0;
  885.         foreach ($notes as $res2) {
  886.             $y++;
  887.             $sum $sum $res2->getNote();
  888.         }
  889.         if ($y 0) {
  890.             $noteAnnonces $sum $y;
  891.         }
  892.         $alertes $alertesRepository->findBy(['User' => $this->getUser()]);
  893.         $categories $categoriesRepository->findAll();
  894.         return $this->render('default/notesAnnonces.html.twig', [
  895.             'notes' => $notes,
  896.             'noteAnnonces' => $noteAnnonces,
  897.             'alertes' => $alertes,
  898.             'categories' => $categories,
  899.         ]);
  900.     }
  901.     /**
  902.      * @Route("/mesAnnonces/{type}", name="mesAnnonces")
  903.      */
  904.     public function mesAnnonces(Request $requestAnnoncesRepository $annoncesRepositoryFavorisRepository $favorisRepository$typeAlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  905.     {
  906.         $user $this->getUser();
  907.         $alertes $alertesRepository->findBy(['User' => $user]);
  908.         $categories $categoriesRepository->findAll();
  909.         $annoncesRes $type == 'encours'
  910.             $annoncesRepository->findByAnnoncesEnCours($user->getId())
  911.             : $annoncesRepository->findByAnnoncesExpire($user->getId());
  912.         $annonces = array();
  913.         $i = -1;
  914.         foreach ($annoncesRes as $res) {
  915.             $i++;
  916.             $annonces[$i]['id'] = $res->getId();
  917.             $annonces[$i]['booste'] = $res->isBooster();
  918.             $annonces[$i]['titre'] = $res->getTitre();
  919.             $annonces[$i]['enseigne'] = $res->getUser()->getRaisonSociale();
  920.             $image $res->getImages()[0] ?? null;
  921.             $annonces[$i]['images'] = $image $image->getLien() : null;
  922.             $annonces[$i]['pourcentRemise'] = $res->getPourcentRemise();
  923.             $annonces[$i]['prix'] = $res->getPrix();
  924.             $annonces[$i]['nbVues'] = $res->getNbVues();
  925.             $pourcent $res->getPourcentRemise() / 100;
  926.             $annonces[$i]['newprix'] = $res->getPrix() * $pourcent;
  927.             $fin strtotime($res->getDateFin()->format('Y-m-d H:i:s'));
  928.             $debut strtotime(date('Y-m-d H:i:s'));
  929.             $diff abs($debut $fin);
  930.             $retour = array();
  931.             $tmp $diff;
  932.             $retour['second'] = $tmp 60;
  933.             $tmp floor(($tmp $retour['second']) / 60);
  934.             $retour['minute'] = $tmp 60;
  935.             $tmp floor(($tmp $retour['minute']) / 60);
  936.             $retour['hour'] = $tmp 24;
  937.             $tmp floor(($tmp $retour['hour'])  / 24);
  938.             $retour['day'] = $tmp 24;
  939.             $annonces[$i]['heures'] = $tmp 24 $retour['hour'];
  940.             $annonces[$i]['minutes'] = $retour['minute'];
  941.             $annonces[$i]['secondes'] = $retour['second'];
  942.             $sum 0;
  943.             $moy 0;
  944.             $y 0;
  945.             foreach ($res->getNotesAnnonces() as $res2) {
  946.                 $y++;
  947.                 $sum $sum $res2->getNote();
  948.             }
  949.             if ($y 0) {
  950.                 $moy $sum $y;
  951.                 $moyAnnonce = (round($moy 2) / 2);
  952.             } else {
  953.                 $moyAnnonce 0;
  954.             }
  955.             $annonces[$i]['moyAnnonce'] = $moyAnnonce;
  956.             $sum 0;
  957.             $moy 0;
  958.             $y 0;
  959.             foreach ($res->getUser()->getNotesEnseignes() as $res2) {
  960.                 $y++;
  961.                 $sum $sum $res2->getNote();
  962.             }
  963.             $maxNote $y 5;
  964.             if ($maxNote 0) {
  965.                 $noteEnseigne = ($sum 100) / $maxNote;
  966.             } else {
  967.                 $noteEnseigne 0;
  968.             }
  969.             $annonces[$i]['moyEnseigne'] = $noteEnseigne;
  970.         }
  971.         return $this->render('default/mesAnnonces.html.twig', [
  972.             'annonces' => $annonces,
  973.             'type' => $type,
  974.             'alertes' => $alertes,
  975.             'categories' => $categories,
  976.         ]);
  977.     }
  978.     /**
  979.      * @Route("/addAlertes", name="addAlertes", methods={"POST"})
  980.      */
  981.     public function addAlertes(Request $requestEntityManagerInterface $entityManagerVillesRepository $villesRepositoryCategoriesRepository $categoriesRepository): Response
  982.     {
  983.         $alerte = new Alertes();
  984.         $alerte->setUser($this->getUser());
  985.         $texte $request->request->get('texte');
  986.         if ($texte) {
  987.             $alerte->setTexte($texte);
  988.         }
  989.         $categorieId $request->request->get('categorie');
  990.         if ($categorieId) {
  991.             $categorie $categoriesRepository->find($categorieId);
  992.             $alerte->setCategories($categorie);
  993.         }
  994.         $villeId $request->request->get('ville');
  995.         if ($villeId) {
  996.             $ville $villesRepository->find($villeId);
  997.             $alerte->setVilles($ville);
  998.         }
  999.         $rayon $request->request->get('rayon');
  1000.         if ($rayon) {
  1001.             $alerte->setRayon($rayon);
  1002.         }
  1003.         $entityManager->persist($alerte);
  1004.         $entityManager->flush();
  1005.         return $this->redirectToRoute('profil');
  1006.     }
  1007.     /**
  1008.      * @Route("/delete-alert/{id}", name="delete_alert", methods={"DELETE"})
  1009.      */
  1010.     public function deleteAlert($idAlertesRepository $alertesRepositoryEntityManagerInterface $entityManager): JsonResponse
  1011.     {
  1012.         $alerte $alertesRepository->find($id);
  1013.         if (!$alerte || $alerte->getUser() !== $this->getUser()) {
  1014.             return new JsonResponse(['error' => 'Alerte non trouvée ou accès non autorisé'], Response::HTTP_NOT_FOUND);
  1015.         }
  1016.         $entityManager->remove($alerte);
  1017.         $entityManager->flush();
  1018.         return new JsonResponse(['success' => 'Alerte supprimée'], Response::HTTP_OK);
  1019.     }
  1020.     /**
  1021.      * @Route("/paiement", name="paiement")
  1022.      */
  1023.     public function paiement(AlertesRepository $alertesRepositoryCategoriesRepository $categoriesRepository): Response
  1024.     {
  1025.         $date date('d/m/Y:h:i:s');
  1026.         $contextCmd 'ewogICAiYmlsbGluZyI6ewogICAgICAiZmlyc3ROYW1lIjoiSsOpcsOpbXkiLAogICAgICAibGFzdE5hbWUiOiJHcmltbSIsCiAgICAgICJhZGRyZXNzTGluZTEiOiIzIHJ1ZSBkZSBsJ8OpZ2l
  1027. zZSIsCiAgICAgICJjaXR5IjoiT3N0aGVpbSIsCiAgICAgICJwb3N0YWxDb2RlIjoiNjgxNTAiLAogICAgICAiY291bnRyeSI6IkZSIiwKICAgfSwKICAgInNoaXBwaW5nIjp7CiAgICAgICJmaXJzdE5hbWUiOiJKw6lyw6lteSIsCiAgICAgICJsYXN0TmFtZSI6IkdyaW1tIiwKICAgICAgImFkZHJlc3NMaW5lMSI6IjMgcnVlIGRlIGwnw6lnbGlzZSIsCiAgICAgICJjaXR5IjoiT3N0aGVpbSIsCiAgICAgICJwb3N0YWxDb2RlIjoiNjgxNTAiLAogICAgICAiY291bnRyeSI6IkZSIiwKICAgICAgImVtYWlsIjoiamVyZW02OEBob3RtYWlsLmNvbSIsCiAgICAgICJwaG9uZSI6IiszMy02MTIzNDU2NzgiLAogICAgICAic2hpcEluZGljYXRvciI6ImJpbGxpbmdfYWRkcmVzcyIsCiAgICAgICJkZWxpdmVyeVRpbWVmcmFtZSI6InR3b19kYXkiLAogICAgICAiZmlyc3RVc2VEYXRlIjoiMjAxNy0wMS0yNSIsCiAgICAgICJtYXRjaEJpbGxpbmdBZGRyZXNzIjp0cnVlCiAgIH0sCiAgICJjbGllbnQiOnsKICAgICAgImVtYWlsIjoiamVyZW02OEBob3RtYWlsLmNvbSIsCiAgICAgICJtb2JpbGVQaG9uZSI6IiszMy02MTIzNDU2NzgiLAogICAgICAiYmlydGhDaXR5IjoiQ29sbWFyIiwKICAgICAgImJpcnRoUG9zdGFsQ29kZSI6IjY4MDAwIiwKICAgICAgImJpcnRoQ291bnRyeSI6IkZSIiwKICAgICAgImJpcnRoZGF0ZSI6IjE5ODctMDMtMjciCiAgIH0KfQ==';
  1028.         $cle_secrete '9CC0C314AA4843441B1E1FB90A1BD992D4AD4A94';
  1029.         $mac "TPE=7199003*contexte_commande=".$contextCmd."*date=".$date."*lgue=FR*mail=contact@modixom.fr*montant=62.73EUR*reference=MODIXOM1234*societe=modixom*texte-libre=ExempleTexteLibre*version=3.0";
  1030.         $sceau_mac hash_hmac('sha1'$mac$cle_secrete,false);
  1031.         $alertes $alertesRepository->findBy(['User' => $this->getUser()]);
  1032.         $categories $categoriesRepository->findAll();
  1033.         return $this->render('default/paiement.html.twig', [
  1034.             "mac" => $sceau_mac,
  1035.             'date' => $date,
  1036.             'contextCmd' => $contextCmd,
  1037.             'alertes' => $alertes,
  1038.             'categories' => $categories,
  1039.         ]);
  1040.     }
  1041.     /**
  1042.      * @Route("/retourpaiement", name="retourpaiement")
  1043.      */
  1044.     public function retourpaiement(): Response
  1045.     {
  1046.         dd('ok');
  1047.     }
  1048.     /**
  1049.      * @Route("/test-geonames-api", name="test_geonames_api")
  1050.      */
  1051.     public function testGeoNamesApi(): Response
  1052.     {
  1053.         return $this->render('tests/GeoNamesApiTest.html.twig');
  1054.     }
  1055. }