src/Controller/EspaceAccompagnateurController.php line 1601

Open in your IDE?
  1. <?php
  2. /*
  3.  * To change this license header, choose License Headers in Project Properties.
  4.  * To change this template file, choose Tools | Templates
  5.  * and open the template in the editor.
  6.  */
  7. namespace App\Controller;
  8. use App\Entity\Fonctions;
  9. use App\Entity\ParentSejour;
  10. use App\Entity\Clipart;
  11. use App\Entity\Produit;
  12. use App\Entity\Page;
  13. use App\Entity\Position;
  14. use App\Entity\Attachment;
  15. use App\Entity\Sejour;
  16. use App\Entity\Typeproduit;
  17. use App\Entity\User;
  18. use App\Entity\Typeref;
  19. use App\Entity\PanierProduit;
  20. use App\Entity\Panier;
  21. use App\Entity\Ref;
  22. use App\Entity\Commande;
  23. use App\Entity\Likephoto;
  24. use App\Entity\SejourAttachment;
  25. use App\Entity\TypeProduitConditionnement;
  26. use App\Message\SendEmail;
  27. use App\Service\AttachementService;
  28. use App\Service\CarteService;
  29. use App\Service\ComandeService;
  30. use App\Service\JetonService;
  31. use Dompdf\Dompdf;
  32. use setasign\Fpdi\Fpdi;
  33. use setasign\Fpdi\PdfReader;
  34. use Dompdf\Options;
  35. use Symfony\Component\Routing\Annotation\Route;
  36. use Symfony\Component\HttpFoundation\Response;
  37. use Symfony\Component\HttpFoundation\Request;
  38. use Symfony\Component\HttpFoundation\JsonResponse;
  39. use Symfony\Component\HttpFoundation\Session\Session;
  40. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  41. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  42. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  43. use Twig\Environment;
  44. use App\Service\EmailsCmdService;
  45. use Symfony\Component\Mailer\MailerInterface;
  46. use Symfony\Component\Mime\Address;
  47. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  48. use App\Service\EtablissementService;
  49. use App\Service\SejourService;
  50. use App\Service\SmsService;
  51. use App\Service\TypeProduiteService;
  52. use App\Service\UserService;
  53. use Doctrine\ORM\EntityManagerInterface;
  54. use Doctrine\Persistence\ManagerRegistry;
  55. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  56. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  57. use Symfony\Component\Messenger\MessageBusInterface;
  58. use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
  59. class EspaceAccompagnateurController extends AbstractController
  60. {
  61.     private $em;
  62.     private $session;
  63.     private $templating;
  64.     private $mailer;
  65.     private $EmailServie;
  66.     private $urlGenerator;
  67.     private $sejourService;
  68.     private $userService;
  69.     private $typeProduiteService;
  70.     private $emailsCmdService;
  71.     private $smsService;
  72.     private $attachementService;
  73.     private $carteService;
  74.     private $etablissementService;
  75.     private $CommandeService;
  76.     private $params;
  77.     private MessageBusInterface $messageBus;
  78.     private MailerInterface $newMailer;
  79.     public function __construct(UrlGeneratorInterface $urlGeneratorManagerRegistry $emSessionInterface $session\Swift_Mailer $mailerEnvironment $templatingEmailsCmdService $EmailCommandeServiceSejourService $sejourServiceUserService $userServiceTypeProduiteService $typeProduiteServiceEmailsCmdService $emailsCmdServiceSmsService $smsServiceAttachementService $attachementServiceCarteService $carteServiceEtablissementService $etablissementServiceComandeService $CommandeServiceParameterBagInterface $paramsMessageBusInterface $messageBusMailerInterface $newMailer)
  80.     {
  81.         $this->em $em;
  82.         $this->session $session;
  83.         $this->templating $templating;
  84.         $this->mailer $mailer;
  85.         $this->EmailServie $EmailCommandeService;
  86.         $this->urlGenerator $urlGenerator;
  87.         $this->sejourService $sejourService;
  88.         $this->userService $userService;
  89.         $this->typeProduiteService $typeProduiteService;
  90.         $this->emailsCmdService $emailsCmdService;
  91.         $this->smsService $smsService;
  92.         $this->attachementService $attachementService;
  93.         $this->carteService $carteService;
  94.         $this->etablissementService $etablissementService;
  95.         $this->CommandeService $CommandeService;
  96.         $this->params $params;
  97.         $this->messageBus $messageBus;
  98.         $this->newMailer $newMailer;
  99.     }
  100.     /**
  101.      * @Route("/Accompagnateur", name="headerAcc_Nouvelle")
  102.      */
  103.     public function headerAcc_Ne(): Response
  104.     {
  105.         $produit $this->typeProduiteService;
  106.         $liste $produit->produitlistType();
  107.         $nblikes 0;
  108.         $nbmesssages 0;
  109.         // dd($liste);
  110.         $session $this->session;
  111.         $panierSession $session->get("Panier");
  112.         $destination $session->get("destionation");
  113.         $nbvocal 0;
  114.         $idSejour $session->get("Sejour");
  115.         $sejour null;
  116.         if ($idSejour != null) {
  117.             $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  118.         }
  119.         $Products $session->get("Panier");
  120.         $numSuivi false;
  121.         if ($sejour != null) {
  122.             $Products $session->get("Panier");
  123.             if ($Products == Null) {
  124.                 $Products = [];
  125.             }
  126.             $UserService $this->userService;
  127.             /** @var \App\Entity\User $user */
  128.             $user $this->getUser();
  129.             $iduser $user->getId();
  130.             $containsProduitType20 false;
  131.             $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  132.             $commandes $this->em->getRepository(Commande::class)->findBy(["idSejour" => $idSejour"idUser" => $iduser]);
  133.             $sejourparent $this->em->getRepository(ParentSejour::class)->findOneBy(['idSejour' => $idSejour"idParent" => $iduser]);
  134.             $payment $sejourparent->getPayment();
  135.             // Check commands
  136.             foreach ($commandes as $commande) {
  137.                 $commandCondition $commande->getNumSuivi();
  138.                 $status $commande->getStatut()->getId();
  139.                 if ($commandCondition == && $status == 33) {
  140.                     $containsProduitType20 true;
  141.                     break; // No need to check further if condition is met
  142.                 }
  143.             }
  144.             // Check panierSession if the condition is not met in commandes
  145.             if (!$containsProduitType20 && is_array($panierSession) && !empty($panierSession)) {
  146.                 foreach ($panierSession as $item) {
  147.                     // Access the details of each item in the Panier
  148.                     $condition $item['condition'];
  149.                     $codesejour $item['codesejour'];
  150.                     if ($condition == 16 && $codesejour == $sejour->getCodeSejour()) {
  151.                         $containsProduitType20 true;
  152.                         break; // No need to check further if condition is met
  153.                     }
  154.                 }
  155.             }
  156.             $sejourservice $this->sejourService;
  157.             $messages $sejourservice->getsejourmessage($idSejour);
  158.             $nbmesssages count($messages);
  159.             $listeattachlikephoto =  $sejourservice->getlikephotosejour($iduser$idSejour);
  160.             $nblikes count($listeattachlikephoto);
  161.             $em $this->em;
  162.             $label "Livre_sejour" $sejour->getCodeSejour();
  163.             $idAcc $sejour->getIdAcommp();
  164.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  165.             $livreSej $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  166.             if ($albumAcc == null) {
  167.                 $albumAcc $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Album_sejour"'idsjour' => $sejour]);
  168.             }
  169.             if ($livreSej == null) {
  170.                 $livreSejour $em->getRepository(Produit::class)->findOneBy(['statut' => "Livre_sejour"'idsjour' => $sejour'labele' => $label'version' => "Livre_Admin"]);
  171.             }
  172.             return $this->render('Accompagnateur/headerAcc.html.twig', [
  173.                 'produit' => $liste,
  174.                 'sejour' => $sejour,
  175.                 'livreSejour' => $livreSejour,
  176.                 'Products' => $Products,
  177.                 'destionation' =>  $destination,
  178.                 'nbvocal' =>  $nbmesssages,
  179.                 'albumAcc' => $albumAcc,
  180.                 'nbLikes' => $nblikes,
  181.                 'payment' => $payment
  182.             ]);
  183.         }
  184.         if ($sejour == null) {
  185.             return $this->render('Parent/headerParent2.html.twig');
  186.         }
  187.     }
  188.     /**
  189.      * @Route("/Accompagnateur/AccueilAccompagnateur", name="AccueilAccompagnateur")
  190.      */
  191.     public function AccueilAccompagnateur()
  192.     {
  193.         $sejourservice $this->sejourService;
  194.         $this->session->set('pageMenu''');
  195.         $idSejour $this->session->get("Sejour");
  196.         $sejour $sejourservice->getsejourByAcc($idSejour$this->getUser());
  197.         return $this->render('Accompagnateur/AccueilAccompagnateur.html.twig', ["sejour" => $sejour]);
  198.     }
  199.     /**
  200.      * @Route("/Accompagnateur/SejourAccompagnateur/{id}", name="SejourAccompagnateur")
  201.      */
  202.     public function SejourAccompagnateur($id)
  203.     {
  204.         $session $this->session;
  205.         //$defaultval=0;
  206.         /** @var \App\Entity\User $user */
  207.         $user $this->getUser();
  208.         $userId $user->getId();
  209.         $sejourservice $this->sejourService;
  210.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  211.         $listeattach $sejourservice->getatachmentsejour($id);
  212.         $listeattachM $sejourservice->getsejourmessage($id);
  213.         $listposition $sejourservice->getsejourposition($id);
  214.         $totalParent $sejourservice->getTotalParent($id);
  215.         $totallikes $sejourservice->getTotalLikesSejour($id);
  216.         $counts $sejourservice->countAll($id);
  217.         $listeattachlikephoto $sejourservice->getlikephotosejour($userId$id);
  218.         $date = new \Datetime("midnight");
  219.         // Calculer les variables pour le nouveau dashboard
  220.         $photosManquantes max(025 count($listeattach)); // Seuil de 25 photos pour débloquer l'album
  221.         $progressionAlbum min(100, (count($listeattach) / 25) * 100);
  222.         
  223.         // Calculer les photos du jour actuel uniquement
  224.         $today = new \DateTime('today');
  225.         $photosDuJour 0;
  226.         $messagesDuJour 0;
  227.         
  228.         foreach ($listeattach as $attachment) {
  229.             if (isset($attachment['date_depot_attachement']) && $attachment['date_depot_attachement'] instanceof \DateTime) {
  230.                 if ($attachment['date_depot_attachement']->format('Y-m-d') === $today->format('Y-m-d')) {
  231.                     $photosDuJour++;
  232.                 }
  233.             }
  234.         }
  235.         
  236.         foreach ($listeattachM as $message) {
  237.             if (isset($message['date_depot_attachement']) && $message['date_depot_attachement'] instanceof \DateTime) {
  238.                 if ($message['date_depot_attachement']->format('Y-m-d') === $today->format('Y-m-d')) {
  239.                     $messagesDuJour++;
  240.                 }
  241.             }
  242.         }
  243.         // Logique de comparaison des dates côté backend (plus précise)
  244.         $today = new \DateTime('today');
  245.         $dateDebutSejour $sejour->getDateDebutSejour();
  246.         $dateFinSejour $sejour->getDateFinSejour();
  247.         // Test: afficher le message de fin si aujourd'hui < début du séjour
  248.         $sejourTermine $today $dateDebutSejour;
  249.         return $this->render('Accompagnateur/DashboardAccompagnateur.html.twig', [
  250.             'sejour' => $sejour,
  251.             'photos' => $listeattach,
  252.             'messages' => $listeattachM,
  253.             'positions' => $listposition,
  254.             'dateexpretise' => $date,
  255.             'datefincode' => $sejour->getDateFinCode(),
  256.             'totalParent' => $totalParent,
  257.             'totalLikes' => $totallikes,
  258.             'like' => count($listeattachlikephoto),
  259.             'counts' => $counts,
  260.             'photosManquantes' => $photosManquantes,
  261.             'progressionAlbum' => round($progressionAlbum),
  262.             'sejourTermine' => $sejourTermine,
  263.             'photosDuJour' => $photosDuJour,
  264.             'messagesDuJour' => $messagesDuJour,
  265.         ]);
  266.     
  267.     }
  268.     /**
  269.      * @Route("/", name="headerAccompagnateurDash")
  270.      */
  271.     public function headerAccompagnateurDash(): Response
  272.     {
  273.         $produit $this->typeProduiteService;
  274.         $liste $produit->produitlistType();
  275.         $nblikes 0;
  276.         $nbmesssages 0;
  277.         // dd($liste);
  278.         $session $this->session;
  279.         $destination $session->get("destionation");
  280.         $nbvocal 0;
  281.         $idSejour $session->get("Sejour");
  282.         $sejour null;
  283.         if ($idSejour != null) {
  284.             $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  285.         }
  286.         if ($sejour != null) {
  287.             $Products $session->get("Panier");
  288.             if ($Products == Null) {
  289.                 $Products = [];
  290.             }
  291.             $UserService $this->userService;
  292.             /** @var \App\Entity\User $user */
  293.             $user $this->getUser();
  294.             $iduser $user->getId();
  295.             $sejourservice $this->sejourService;
  296.             $messages $sejourservice->getsejourmessage($idSejour);
  297.             $nbmesssages count($messages);
  298.             $listeattachlikephoto =  $sejourservice->getlikephotosejour($iduser$idSejour);
  299.             $nblikes count($listeattachlikephoto);
  300.             $em $this->em;
  301.             $idAcc $sejour->getIdAcommp();
  302.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  303.             if ($albumAcc == null) {
  304.                 $albumAcc $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Album_sejour"'idsjour' => $sejour]);
  305.             }
  306.             $livreSejour $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Livre_sejour"'idsjour' => $sejour]);
  307.             return $this->render('Accompagnateur/headerAccDash.html.twig', [
  308.                 'produit' => $liste,
  309.                 'sejour' => $sejour,
  310.                 'livreSejour' => $livreSejour,
  311.                 'Products' => $Products,
  312.                 'destionation' =>  $destination,
  313.                 'nbvocal' =>  $nbmesssages,
  314.                 'albumAcc' => $albumAcc,
  315.                 'nbLikes' => $nblikes,
  316.             ]);
  317.         }
  318.         if ($sejour == null) {
  319.             return $this->render('Accompagnateur/header.html.twig');
  320.         }
  321.     }
  322.     /**
  323.      * @Route("/", name="headerAccompagnateur")
  324.      */
  325.     public function headerAccompagnateur(): Response
  326.     {
  327.         $produit $this->typeProduiteService;
  328.         $liste $produit->produitlistType();
  329.         $nblikes 0;
  330.         $nbmesssages 0;
  331.         // dd($liste);
  332.         $session $this->session;
  333.         $destination $session->get("destionation");
  334.         $nbvocal 0;
  335.         $idSejour $session->get("Sejour");
  336.         $sejour null;
  337.         if ($idSejour != null) {
  338.             $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  339.         }
  340.         if ($sejour != null) {
  341.             $Products $session->get("Panier");
  342.             if ($Products == Null) {
  343.                 $Products = [];
  344.             }
  345.             $UserService $this->userService;
  346.             /** @var \App\Entity\User $user */
  347.             $user $this->getUser();
  348.             $iduser $user->getId();
  349.             $sejourservice $this->sejourService;
  350.             $messages $sejourservice->getsejourmessage($idSejour);
  351.             $nbmesssages count($messages);
  352.             $listeattachlikephoto =  $sejourservice->getlikephotosejour($iduser$idSejour);
  353.             $nblikes count($listeattachlikephoto);
  354.             $em $this->em;
  355.             $idAcc $sejour->getIdAcommp();
  356.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  357.             if ($albumAcc == null) {
  358.                 $albumAcc $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Album_sejour"'idsjour' => $sejour]);
  359.             }
  360.             $livreSejour $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Livre_sejour"'idsjour' => $sejour]);
  361.             return $this->render('Accompagnateur/headerAcc.html.twig', [
  362.                 'produit' => $liste,
  363.                 'sejour' => $sejour,
  364.                 'livreSejour' => $livreSejour,
  365.                 'Products' => $Products,
  366.                 'destionation' =>  $destination,
  367.                 'nbvocal' =>  $nbmesssages,
  368.                 'albumAcc' => $albumAcc,
  369.                 'nbLikes' => $nblikes,
  370.             ]);
  371.         }
  372.         if ($sejour == null) {
  373.             return $this->render('Accompagnateur/header.html.twig');
  374.         }
  375.     }
  376.     /**
  377.      * @Route("/", name="footerAccompagnateur")
  378.      */
  379.     public function footerAccompagnateur(): Response
  380.     {
  381.         $produit $this->typeProduiteService;
  382.         $liste $produit->produitlistType();
  383.         // dd($liste);
  384.         $session $this->session;
  385.         $destination $session->get("destionation");
  386.         $nbvocal 0;
  387.         $nbSlection 0;
  388.         $nbPhoto 0;
  389.         $sejour null;
  390.         $sejourservice $this->sejourService;
  391.         $idSejour $session->get("Sejour");
  392.         /** @var \App\Entity\User $user */
  393.         $user $this->getUser();
  394.         $userId $user->getId();
  395.         $albumAcc null;
  396.         $em $this->em;
  397.         if ($idSejour != null) {
  398.             $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  399.             // Nb favoris 
  400.             $listeattachlikephoto $sejourservice->getlikephotosejour($userId$idSejour);
  401.             $nbSlection count($listeattachlikephoto);
  402.             // Nb photos 
  403.             $listeattach $sejourservice->getatachmentsejour($idSejour);
  404.             $nbPhoto count($listeattach);
  405.             // Nb messages vocaux 
  406.             $messages $sejourservice->getsejourmessage($idSejour);
  407.             $nbmesssages count($messages);
  408.             // Rechercher s'il y'a un album acompagnateur 
  409.             $idAcc $sejour->getIdAcommp();
  410.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  411.         }
  412.         return $this->render('Accompagnateur/footerAccompagnateur.html.twig', [
  413.             'destionation' =>  $destination,
  414.             'nbvocal' =>  $nbvocal,
  415.             'nbSlection' => $nbSlection,
  416.             'nbPhotos' => $nbPhoto,
  417.             'albumAcc' => $albumAcc,
  418.         ]);
  419.         if ($idSejour == null) {
  420.             $this->render('Accompagnateur/footer.html.twig');
  421.         }
  422.     }
  423.     /**
  424.      * @Route("/Accompagnateur/Mes_Creations/{id}", name="ProjetsAccompagnateur")
  425.      */
  426.     public function ProjetsAccompagnateur($id)
  427.     {
  428.         $sejourservice $this->sejourService;
  429.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  430.         $session $this->session;
  431.         $session->set('pageMenu''projets');
  432.         $session->set('route''nonlogin');
  433.         $listeattach $sejourservice->getatachmentsejour($id);
  434.         $listeattachM $sejourservice->getsejourmessage($id);
  435.         /** @var \App\Entity\User $user */
  436.         $user $this->getUser();
  437.         $userId $user->getId();
  438.         $AlbumAll $this->em->getRepository(Produit::class)->findby(["iduser" => $userId"idsjour" => $id], ['id' => 'DESC']);
  439.         $produit $this->typeProduiteService;
  440.         $produitlist $produit->produitlistTypeConditionnement();
  441.         return $this->render('Accompagnateur/ProjetsAccompagnateur.html.twig', ['produitlist' => $produitlist'sejour' => $sejour'photos' => $listeattach'messages' => $listeattachM'AlbumAll' => $AlbumAll]);
  442.     }
  443.     /**
  444.      * @Route("/Accompagnateur/PhotosAccompagnateur/{id}", name="PhotosAccompagnateur")
  445.      */
  446.     public function PhotosAccompagnateur($id)
  447.     {
  448.         $session $this->session;
  449.         $session->set('route''nonlogin');
  450.         $session->set('pageMenu''photos');
  451.         $sejourservice $this->sejourService;
  452.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  453.         $SEjourService $this->sejourService;
  454.         $listeattach $SEjourService->getatachmentsejour($id);
  455.         $nbImages count($listeattach);
  456.         $listeVideo $SEjourService->getVideosejour($id);
  457.         $AllAttachements array_merge_recursive($listeattach$listeVideo);
  458.         $listeattachM $SEjourService->getsejourmessage($id);
  459.         $nbMsg count($listeattachM);
  460.         $listposition $sejourservice->getsejourposition($id);
  461.         $nbrpos count($listposition);
  462.         $date = new \Datetime("midnight");
  463.         $date->modify('+1 day');
  464.         $date->modify('-1 seconds');
  465.         //dd($date);
  466.         /** @var \App\Entity\User $user */
  467.         $user $this->getUser();
  468.         $iduser $user->getId();
  469.         $listeattachlikephoto $SEjourService->getlikephotosejour($iduser$id);
  470.         $produits $this->typeProduiteService;
  471.         $liste $produits->produitlistTypeConditionnement();
  472.         return $this->render('Accompagnateur/PhotosAccompagnateur.html.twig', [
  473.             'sejour' => $sejour,
  474.             'prod' => $liste,
  475.             'listeattach' => $AllAttachements,
  476.             'nbImages' => $nbImages,
  477.             'nbrpos' => $nbrpos,
  478.             'nbMessage' => $nbMsg,
  479.             'like' => $listeattachlikephoto,
  480.             'dateexpretise' => $date,
  481.             'datefincode' => $sejour->getDateFinCode(),
  482.         ]);
  483.     }
  484.     /**
  485.      * @Route("/Accompagnateur/CarteAccompagnateur/{id}", name="CarteAccompagnateur")
  486.      */
  487.     public function CarteAccompagnateur($id)
  488.     {
  489.         $session $this->session;
  490.         $session->set('route''nonlogin');
  491.         $session->set('pageMenu''carte');
  492.         $sejourservice $this->sejourService;
  493.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  494.         $date = new \Datetime("midnight");
  495.         $listeattach $sejourservice->getatachmentsejour($id);
  496.         $listeattachM $sejourservice->getsejourmessage($id);
  497.         $listposition $sejourservice->getsejourposition($id);
  498.         $nbImg count($listeattach);
  499.         $nbMsg count($listeattachM);
  500.         $nbrpos count($listposition);
  501.         return $this->render('Accompagnateur/CarteAccompagnateur.html.twig', [
  502.             'sejour' => $sejour,
  503.             'photos' => $listeattach,
  504.             'messages' => $listeattachM,
  505.             'dateexpretise' => $date,
  506.             'nbrpos' => $nbrpos,
  507.             'datefincode' => $sejour->getDateFinCode(),
  508.             'nbImg' => $nbImg,
  509.             'nbMsg' => $nbMsg
  510.         ]);
  511.     }
  512.     /**
  513.      * @Route("/Accompagnateur/ParametresAccompagnateur/{id}", name="ParametresAccompagnateur")
  514.      */
  515.     public function ParametresAccompagnateur($id)
  516.     {
  517.         $sejourservice $this->sejourService;
  518.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  519.         $session $this->session;
  520.         $session->set('route''nonlogin');
  521.         $session->set('pageMenu''parametres');
  522.         $user $this->getUser();
  523.         // dd($user);
  524.         $listeattach $sejourservice->getatachmentsejour($id);
  525.         $listeattachM $sejourservice->getsejourmessage($id);
  526.         $listeFonctions $this->em->getRepository(Fonctions::class)->findBy(array('statut' => 2));
  527.         return $this->render('Accompagnateur/ParametresAccompagnateur.html.twig', ['listeFonctions' => $listeFonctions'user' => $user'sejour' => $sejour'photos' => $listeattach'messages' => $listeattachM,]);
  528.     }
  529.     /**
  530.      * @Route("/Accompagnateur/MessagesAccompagnateur/{id}", name="MessagesAccompagnateur")
  531.      */
  532.     public function MessagesAccompagnateur($id)
  533.     {
  534.         $session $this->session;
  535.         $session->set('route''nonlogin');
  536.         $session->set('pageMenu''messages');
  537.         $sejourservice $this->sejourService;
  538.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  539.         $SEjourService $this->sejourService;
  540.         $listeattachM $SEjourService->getsejourmessage($id);
  541.         $listeattach $SEjourService->getatachmentsejour($id);
  542.         $listposition $sejourservice->getsejourposition($id);
  543.         $nbImages count($listeattach);
  544.         $nbrpos count($listposition);
  545.         $date = new \Datetime("midnight");
  546.         return $this->render('Accompagnateur/MessagesAccompagnateur.html.twig', [
  547.             'sejour' => $sejour,
  548.             'listemessage' => $listeattachM,
  549.             'dateexpretise' => $date,
  550.             'nbrpos' => $nbrpos,
  551.             'datefincode' => $sejour->getDateFinCode(),
  552.             'nbImages' => $nbImages
  553.         ]);
  554.     }
  555.     /**
  556.      * @Route("/Accompagnateur/InterfaceCreationSejour", name="InterfaceCreationSejour")
  557.      */
  558.     public function InterfaceCreationSejour()
  559.     {
  560.         $session $this->session;
  561.         $session->set('pageMenu''messages');
  562.         return $this->render('Accompagnateur/EspaceAccoCreationSejour.html.twig', []);
  563.     }
  564.     /**
  565.      * @Route("/Accompagnateur/AccoSejour", name="CreationSejourAccompagnateur")
  566.      */
  567.     public function CreationSejourAccompagnateur(Request $request)
  568.     {
  569.         $session $this->session;
  570.         $session->set('pageMenu''messages');
  571.         $SejourService $this->sejourService;
  572.         $UserService $this->userService;
  573.         /** @var \App\Entity\User $user */
  574.         $user $this->getUser();
  575.         $iduser $user->getId();
  576.         $accomp $UserService->getUserAcc($iduser);
  577.         $themSejour $request->get('theme_sejour');
  578.         $adressSejour $request->get("adress_sejour");
  579.         $codePostal $request->get("codePostal");
  580.         $dateDebut $request->get("date_debut_sejour");
  581.         $FinSejour $request->get("date_fin_sejour");
  582.         $AgeDugroupe $request->get("age_dugroupe_sejour");
  583.         $NbEnfant $request->get("NbEnfant");
  584.         $connpay $request->get("connpay");
  585.         $pays $request->get("pays");
  586.         $ville $request->get("ville");
  587.         $type $request->get("typeSejour");
  588.         /** @var \App\Entity\User $user */
  589.         $user $this->getUser();
  590.         $userid $user->getId();
  591.         $sejour $SejourService->CreationNouveauSejour($themSejour$adressSejour$codePostal$dateDebut$FinSejour$AgeDugroupe$type$userid$NbEnfant$connpay$pays$ville);
  592.         $SejourService->affecterAccompaniateur($sejour$accomp);
  593.         return new JsonResponse(["idSejour" => $sejour->getId(), "codeSejour" => $sejour->getCodeSejour(), "dateDebutCode" => $sejour->getDateCreationCode()->format('d/m/Y'), "dateFinCode" => $sejour->getDateFinCode()->format('d/m/Y')]);
  594.     }
  595.     /**
  596.      * @Route("/Accompagnateur/uploadAttSej", name="SejourAccompagnateurUploadAudio")
  597.      */
  598.     public function SejourAccompagnateur_UploadAttSej(Request $request)
  599.     {
  600.         date_default_timezone_set('Europe/Paris');
  601.         $Active $this->em->getRepository(Ref::class)->find(5);
  602.         $path $request->get("path");
  603.         $type $request->get("type");
  604.         $sejId $request->get("id");
  605.         $dateSejour $request->get("date");
  606.         $SejourServiceattachh $this->sejourService;
  607.         $Userservicemail $this->userService;
  608.         $EmailsCmdService $this->emailsCmdService;
  609.         $sejourfind $SejourServiceattachh->sejoursansattach($sejId);
  610.         $sejoursend $this->em->getRepository(Sejour::class)->find($sejId);
  611.         $oldSejourAttch $this->em->getRepository(SejourAttachment::class)->findBy(["idSejour" => $sejId]);
  612.         if (count($oldSejourAttch) == 0) {
  613.             $sendmail $Userservicemail->sendmailuserforfirstattach($sejId);
  614.             // TODO: Réactiver ces emails quand les méthodes seront créées dans EmailsCmdService
  615.             //$sendmaildepot_partenaire = $EmailsCmdService->MailRemercAccApresPremDepot1($sejoursend->getIdPartenaire()->getEmail());
  616.             //$accmailresp = $sejoursend->getIdAcommp()->getReponseemail();
  617.             //if ($accmailresp != NULL) {
  618.             //    $sendmaildepot_Acompa = $EmailsCmdService->MailRemercAccApresPremDepot2($accmailresp);
  619.             //} else {
  620.             //    $sendmaildepot_partenaire = $EmailsCmdService->MailRemercAccApresPremDepot2($sejoursend->getIdPartenaire()->getEmail());
  621.             //}
  622.         }
  623.         $SmsNotif $this->smsService;
  624.         $SMS $SmsNotif->saveSmsNotif($sejId"photo");
  625.         $attachementservice $this->attachementService;
  626.         foreach ($path as $key => $path) {
  627.             $src $path['path'];
  628.             $attachement $attachementservice->creationAttachementS($src$type$dateSejour);
  629.             $sejourservice $this->sejourService;
  630.             $sejAttach $sejourservice->affectationAttachement($sejId$attachement);
  631.             if ((array_key_exists("latitude"$path)) && ($path['latitude'] != null)) {
  632.                 $lat $path['latitude'];
  633.                 $lng $path['longitude'];
  634.                 $Cartervice $this->carteService;
  635.                 $position $Cartervice->create_newPositionImage($this->getUser(), $lat$lng);
  636.                 $Cartervice->affecterPosition($attachement$position);
  637.                 $FindSejour $this->em->getRepository(Sejour::class)->find($sejId);
  638.                 $FindSejour->setEtatAdresseCarte(true);
  639.                 $Active $this->em->getRepository(Ref::class)->find(5);
  640.                 $dateNow = new \DateTime();
  641.                 if ($FindSejour->getDateDebutSejour() <= $dateNow) {
  642.                     $FindSejour->setStatut($Active);
  643.                 }
  644.                 $this->em->getManager()->persist($FindSejour);
  645.                 $this->em->getManager()->flush();
  646.             }
  647.         }
  648.         return new JsonResponse(["id" => $attachement->getId()]);;
  649.     }
  650.     /**
  651.      * @Route("/Accompagnateur/uploadVideo", name="SejourAccompagnateurUploadVideo")
  652.      */
  653.     public function SejourAccompagnateur_UploadVideo(Request $request)
  654.     {
  655.         $Active $this->em->getRepository(Ref::class)->find(5);
  656.         $path $request->get("path");
  657.         $type $request->get("type");
  658.         $sejId $request->get("id");
  659.         $dateSejour $request->get("date");
  660.         $SejourServiceattachh $this->sejourService;
  661.         $Userservicemail $this->userService;
  662.         $EmailsCmdService $this->emailsCmdService;
  663.         $sejourfind $SejourServiceattachh->sejoursansattach($sejId);
  664.         $sejoursend $this->em->getRepository(Sejour::class)->find($sejId);
  665.         $oldSejourAttch $this->em->getRepository(SejourAttachment::class)->findBy(["idSejour" => $sejId]);
  666.         if (count($oldSejourAttch) == 0) {
  667.             $sendmail $Userservicemail->sendmailuserforfirstattach($sejId);
  668.             //$sendmaildepot_partenaire = $EmailsCmdService->MailRemercAccApresPremDepot1($sejoursend->getIdPartenaire()->getEmail());
  669.             $accmailresp $sejoursend->getIdAcommp()->getReponseemail();
  670.             if ($accmailresp != NULL) {
  671.                 $sendmaildepot_Acompa $EmailsCmdService->MailRemercAccApresPremDepot2($accmailresp);
  672.             } else {
  673.                 $sendmaildepot_partenaire $EmailsCmdService->MailRemercAccApresPremDepot2($sejoursend->getIdPartenaire()->getEmail());
  674.             }
  675.         }
  676.         $SmsNotif $this->smsService;
  677.         $SMS $SmsNotif->saveSmsNotif($sejId"video");
  678.         $attachementservice $this->attachementService;
  679.         foreach ($path as $key => $path) {
  680.             $src $path['path'];
  681.             $attachement $attachementservice->creationAttachementS($src$type$dateSejour);
  682.             $sejourservice $this->sejourService;
  683.             $sejAttach $sejourservice->affectationAttachement($sejId$attachement);
  684.         }
  685.         $FindSejour $this->em->getRepository(Sejour::class)->find($sejId);
  686.         $dateNow = new \DateTime();
  687.         if ($FindSejour->getDateDebutSejour() <= $dateNow) {
  688.             $FindSejour->setStatut($Active);
  689.             $this->em->getManager()->persist($FindSejour);
  690.             $this->em->getManager()->flush();
  691.         }
  692.         return new JsonResponse(["id" => $attachement->getId()]);
  693.     }
  694.     /**
  695.      * @Route("/Accompagnateur/UploadMsgSej", name="SejourAccompagnateurUploadMsg")
  696.      */
  697.     public function SejourAccompagnateur_UploadMsgSej(Request $request)
  698.     {
  699.         date_default_timezone_set('Europe/Paris');
  700.         $path $request->get("path");
  701.         $type $request->get("type");
  702.         $sejId $request->get("id");
  703.         $SejourServiceattachh $this->sejourService;
  704.         $EmailsCmdService $this->emailsCmdService;
  705.         $Userservicemail $this->userService;
  706.         $sejoursend $this->em->getRepository(Sejour::class)->find($sejId);
  707.         $oldSejourAttch $this->em->getRepository(SejourAttachment::class)->findBy(["idSejour" => $sejId]);
  708.         $sejourfind $SejourServiceattachh->sejoursansattach($sejId);
  709.         if (count($oldSejourAttch) == 0) {
  710.             $sendmail $Userservicemail->sendmailuserforfirstattach($sejId);
  711.             //$sendmaildepot_partenaire = $EmailsCmdService->MailRemercAccApresPremDepot1($sejoursend->getIdPartenaire()->getEmail());
  712.             $accmailresp $sejoursend->getIdAcommp()->getReponseemail();
  713.             if ($accmailresp != NULL) {
  714.                 $sendmaildepot_Acompa $EmailsCmdService->MailRemercAccApresPremDepot2($accmailresp);
  715.             } else {
  716.                 $sendmaildepot_partenaire $EmailsCmdService->MailRemercAccApresPremDepot2($sejoursend->getIdPartenaire()->getEmail());
  717.             }
  718.         }
  719.         $SmsNotif $this->smsService;
  720.         $SMS $SmsNotif->saveSmsNotif($sejId"audio");
  721.         $attachementservice $this->attachementService;
  722.         // $path2 = explode("blob:", $path);
  723.         $src $path['path'];
  724.         $attachement $attachementservice->creationAttachementS($src$type);
  725.         $sejourservice $this->sejourService;
  726.         $sejAttach $sejourservice->affectationAttachement($sejId$attachement);
  727.         if ($request->get("latitude") != null) {
  728.             $lat $request->get("latitude");
  729.             $lng $request->get("longitude");
  730.             $Cartervice $this->carteService;
  731.             $position $Cartervice->create_newPositionImage($this->getUser(), $lat$lng);
  732.             $Cartervice->affecterPosition($attachement$position);
  733.         }
  734.         $Active $this->em->getRepository(Ref::class)->find(5);
  735.         $FindSejour $this->em->getRepository(Sejour::class)->find($sejId);
  736.         $dateNow = new \DateTime();
  737.         if ($FindSejour->getDateDebutSejour() <= $dateNow) {
  738.             $FindSejour->setStatut($Active);
  739.             $this->em->getManager()->persist($FindSejour);
  740.             $this->em->getManager()->flush();
  741.         }
  742.         return new response("done");
  743.     }
  744.     /**
  745.      * @Route("/Accompagnateur/saveCarte", name="SejourAccompagnateurSaveCarte")
  746.      */
  747.     public function SejourAccompagnateur_SaveCarte(Request $request)
  748.     {
  749.         $sejourid $request->get("id");
  750.         $num $request->get("num");
  751.         $rue $request->get("rue");
  752.         $CodePostal $request->get("CodePostal");
  753.         $ville $request->get("ville");
  754.         $Pays $request->get("Pays");
  755.         $date $request->get("date");
  756.         $nomCarte $request->get("nomCarte");
  757.         $lat $request->get("lat");
  758.         $lng $request->get("lng");
  759.         $Cartervice $this->carteService;
  760.         $carte $Cartervice->getCardBySej($sejourid);
  761.         if ($carte == null) {
  762.             $carte $Cartervice->carteSave($sejourid);
  763.         }
  764.         $position $Cartervice->create_newPosition($carte$this->getUser(), $num$rue$CodePostal$ville$Pays$date$nomCarte$lat$lng);
  765.         $Active $this->em->getRepository(Ref::class)->find(5);
  766.         $FindSejour $this->em->getRepository(Sejour::class)->find($sejourid);
  767.         $dateNow = new \DateTime();
  768.         if ($FindSejour->getDateDebutSejour() <= $dateNow) {
  769.             $FindSejour->setStatut($Active);
  770.             $this->em->getManager()->persist($FindSejour);
  771.             $this->em->getManager()->flush();
  772.         }
  773.         return new response($position->getId());
  774.     }
  775.     /**
  776.      * @Route("Accompagnateur/Accueil5sur5/ajouteradresslirison", name="Acompaajouteradress_livrson",methods={"POST"})
  777.      */
  778.     public function ajouteradresslivr(Request $request)
  779.     {
  780.         $UserService $this->userService;
  781.         //dd($this->getUser()->getId());
  782.         /** @var \App\Entity\User $user */
  783.         $user $this->getUser();
  784.         $iduser $user->getId();
  785.         $prenom $request->get("prenom");
  786.         $nom $request->get("nom");
  787.         $organism $request->get("organism");
  788.         $num $request->get("num");
  789.         $rue $request->get('ruevoi');
  790.         $ville $request->get("villle");
  791.         $pays $request->get("pays");
  792.         $codepostal $request->get("codpostal");
  793.         //adress facturation if exsist
  794.         $prenomfacturation $request->get("prenomadressfacturation");
  795.         $nomfacturation $request->get("nomadressfacturation");
  796.         $organismfacturation $request->get("etablismadressfacturation");
  797.         $numfacturation $request->get("numdressfacturation");
  798.         $ruefacturation $request->get('rueadressfacturation');
  799.         $villefacturation $request->get("villefacturation");
  800.         $paysfacturation $request->get("payadressfacturation");
  801.         $codepostalfacturation $request->get("codepostalfacturation");
  802.         //modification userAcommpanateur
  803.         $usernomAcommpa $request->get("usernom");
  804.         $userprenomAcommpa $request->get("userprenom");
  805.         $userfonctionAcommpa $request->get("userfonction");
  806.         $EntityFonction $this->em->getRepository(Fonctions::class)->find($userfonctionAcommpa);
  807.         if ($EntityFonction) {
  808.             $userfonctionAcommpa $EntityFonction->getName();
  809.         } else {
  810.             $userfonctionAcommpa "";
  811.         }
  812.         $useretablismentAcommpa $request->get("useretablisment");
  813.         $useremailcommpa $request->get("useremail");
  814.         $sejourthem $request->get("sejourthem");
  815.         $adresssejour $request->get("sejouradresse");
  816.         $id $request->get("id");
  817.         $adress $UserService->setadresslivraison($num$rue$ville$pays$codepostal$iduser$prenom$nom$organism$prenomfacturation$nomfacturation$organismfacturation$numfacturation$ruefacturation$villefacturation$paysfacturation$codepostalfacturation$usernomAcommpa$userprenomAcommpa$userfonctionAcommpa$useretablismentAcommpa$useremailcommpa$sejourthem$adresssejour$id);
  818.         $AttachementService $this->attachementService;
  819.         $ty "logo séjour";
  820.         $AttachementService->creationLogoSejour($adress$request->get('path'), $ty);
  821.         $user->setIdFonction($EntityFonction);
  822.         $this->em->getManager()->persist($user);
  823.         $this->em->getManager()->flush();
  824.         return new JsonResponse('done');
  825.     }
  826.     /**
  827.      * @Route("/Accueil5sur5/ajouteradressfacturation", name="ajouteradress_facturation",methods={"POST","GET"})
  828.      */
  829.     public function ajouteradressfacturation(Request $request)
  830.     {
  831.         $UserService $this->userService;
  832.         /** @var \App\Entity\User $user */
  833.         $user $this->getUser();
  834.         $iduser $user->getId();
  835.         $num $request->get("num");
  836.         $rue $request->get('rue');
  837.         $ville $request->get("ville");
  838.         $pays $request->get("pays");
  839.         $codepostal $request->get("codepostal");
  840.         $adress $UserService->setadressfacturation($num$rue$ville$pays$codepostal$iduser);
  841.         return new JsonResponse('done');
  842.     }
  843.     /**
  844.      * @Route("/Accompagnateur/uploadAudio", name="SejourAccompagnateurUploadAudio1")
  845.      */
  846.     public function SejourAccompagnateur_UploadAdio(Request $request)
  847.     {
  848.         date_default_timezone_set('Europe/Paris');
  849.         $session $this->session;
  850.         /** @var \App\Entity\User $user */
  851.         $user $this->getUser();
  852.         $iduser $user->getId();
  853.         $sejourId $session->get("Sejour");
  854.         $directoryName 'message';
  855.         // Create the directory if it does not exist.
  856.         if (!is_dir($directoryName)) {
  857.             mkdir($directoryName0755);
  858.         }
  859.         $directoryName 'message/' $sejourId;
  860.         if (!is_dir($directoryName)) {
  861.             mkdir($directoryName);
  862.         }
  863.         $date = new \Datetime();
  864.         $Milliseconde $date->format('u');
  865.         $code $sejourId '-' $iduser "-" $Milliseconde;
  866.         $port $request->getPort();
  867.         $file $request->files->get("audio_data");
  868.         $file->move($directoryName$code ".wav");
  869.         $path 'https://' $_SERVER["SERVER_NAME"] . ":" $port '/' $directoryName '/' $code ".wav";
  870.         $type "message";
  871.         // Retrieve the date from the request.
  872.         // If no date is provided, default to an empty string.
  873.         // (Your creationAttachementS method will then use the current date.)
  874.         $dateParam $request->get("date""");
  875.         $attachementservice $this->attachementService;
  876.         // Pass the date parameter to your creation method.
  877.         $attachement $attachementservice->creationAttachementS($path$type$dateParam);
  878.         $sejourservice $this->sejourService;
  879.         // Test if it is the first sejour
  880.         $EmailsCmdService $this->emailsCmdService;
  881.         $Userservicemail $this->userService;
  882.         $sejoursend $this->em->getRepository(Sejour::class)->find($sejourId);
  883.         $oldSejourAttch $this->em->getRepository(SejourAttachment::class)->findBy(["idSejour" => $sejourId]);
  884.         if (count($oldSejourAttch) == 0) {
  885.             $sendmail $Userservicemail->sendmailuserforfirstattach($sejourId);
  886.             $accmailresp $sejoursend->getIdAcommp()->getReponseemail();
  887.             if ($accmailresp != NULL) {
  888.                 $sendmaildepot_Acompa $EmailsCmdService->MailRemercAccApresPremDepot2($accmailresp);
  889.             } else {
  890.                 $sendmaildepot_partenaire $EmailsCmdService->MailRemercAccApresPremDepot2($sejoursend->getIdPartenaire()->getEmail());
  891.             }
  892.         }
  893.         $sejourservice->affectationAttachement($sejourId$attachement);
  894.         if ($request->get("latitude") != null) {
  895.             $lat $request->get("latitude");
  896.             $lng $request->get("longitude");
  897.             $Cartervice $this->carteService;
  898.             $position $Cartervice->create_newPositionImage($this->getUser(), $lat$lng);
  899.             $Cartervice->affecterPosition($attachement$position);
  900.         }
  901.         return new Response("yoyo");
  902.     }
  903.     /**
  904.      * @Route("/Accompagnateur/DetailsSejourAcc", name="DetailsSejourAcc")
  905.      */
  906.     public function DetailsSejourAcc(Request $request)
  907.     {
  908.         $session $this->session;
  909.         //$defaultval=0;
  910.         /** @var \App\Entity\User $user */
  911.         $user $this->getUser();
  912.         $userId $user->getId();
  913.         $idSejour $session->get("Sejour");
  914.         $conxparent $this->sejourService;
  915.         $SEjourService $this->sejourService;
  916.         $sejour $SEjourService->getsejour($idSejour);
  917.         $dateCreationArch = clone $sejour->getDateFinCode();
  918.         if ($dateCreationArch <= new \DateTime()) {
  919.             return $this->render('Parent/SejourDepassee.html.twig');
  920.         }
  921.         $idSejour $sejour->getId();
  922.         $SEjourService $this->sejourService;
  923.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  924.         $this->session->set('Sejour'$idSejour);
  925.         $dateCreationArch = clone $sejour->getDateFinCode();
  926.         if ($dateCreationArch <= new \DateTime()) {
  927.             return $this->render('Parent/SejourDepassee.html.twig');
  928.         }
  929.         $session->set('pageMenu''MonSejour');
  930.         $AllAttachements $SEjourService->getphotosVideosSejour($idSejour'original'$userId);
  931.         $nbImages count($AllAttachements);
  932.         $messages $SEjourService->getCombinedattachSejour($idSejour'message');
  933.         $positions $SEjourService->getsejourposition($idSejour);
  934.         $photoLikes = [];
  935.         foreach ($AllAttachements as $attach) {
  936.             if (!isset($attach['id_attchment'])) {
  937.                 // Skip this attachment if no id is available
  938.                 continue;
  939.             }
  940.             $libiller $attach['libiller'] ?? null;
  941.             // Only count likes for items that are photos (assuming video attachments have 'libiller' set to "video")
  942.             if ($libiller !== 'video') {
  943.                 $photoLikes[$attach['id_attchment']] = $this->sejourService->getTotallikesphotosejour($attach['id_attchment'], $idSejour);
  944.             }
  945.         }
  946.         $em $this->em;
  947.         $idAcc $sejour->getIdAcommp();
  948.         $em $this->em;
  949.         $idAcc $sejour->getIdAcommp();
  950.         //VERIFICATION DE L EXISTANCE DE LIVRE OU D ALBUM SEJOUR 
  951.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  952.         if ($albumAcc == null) {
  953.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Album_sejour"'idsjour' => $sejour]);
  954.         }
  955.         $label "Livre_sejour" $sejour->getCodeSejour();
  956.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  957.         $livreSej $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  958.         if ($albumAcc == null) {
  959.             $albumAcc $em->getRepository(Produit::class)->findOneBy(['iduser' => 1'statut' => "Album_sejour"'idsjour' => $sejour]);
  960.         }
  961.         if ($livreSej == null) {
  962.             $livreSejour $em->getRepository(Produit::class)->findOneBy(['statut' => "Livre_sejour"'idsjour' => $sejour'labele' => $label'version' => "Livre_Admin"]);
  963.         }
  964.         $attachementsCount $AllAttachements['total'];
  965.         unset($AllAttachements['total']);
  966.         $date = new \Datetime("midnight");
  967.         $date->modify('+1 day');
  968.         $date->modify('-1 seconds');
  969.         // Share Booster - Calcul des statistiques du jour
  970.         $today = new \DateTime('today');
  971.         $tomorrow = new \DateTime('tomorrow');
  972.         
  973.         // Nombre d'uploads aujourd'hui par cet accompagnateur pour ce séjour
  974.         $todayUploadedCount $em->getRepository(\App\Entity\SejourAttachment::class)
  975.             ->createQueryBuilder('sa')
  976.             ->select('COUNT(sa.id)')
  977.             ->where('sa.idSejour = :sejourId')
  978.             ->andWhere('sa.dateDepotAttachement >= :today')
  979.             ->andWhere('sa.dateDepotAttachement < :tomorrow')
  980.             ->setParameter('sejourId'$idSejour)
  981.             ->setParameter('today'$today)
  982.             ->setParameter('tomorrow'$tomorrow)
  983.             ->getQuery()
  984.             ->getSingleScalarResult();
  985.         
  986.         // Nombre total d'uploads aujourd'hui par tous les accompagnateurs (collectif)
  987.         $collectiveTodayCount $em->getRepository(\App\Entity\SejourAttachment::class)
  988.             ->createQueryBuilder('sa')
  989.             ->select('COUNT(sa.id)')
  990.             ->where('sa.dateDepotAttachement >= :today')
  991.             ->andWhere('sa.dateDepotAttachement < :tomorrow')
  992.             ->setParameter('today'$today)
  993.             ->setParameter('tomorrow'$tomorrow)
  994.             ->getQuery()
  995.             ->getSingleScalarResult();
  996.         
  997.         // Objectif du jour (peut être personnalisé selon la structure)
  998.         $targetDaily 15;
  999.         
  1000.         // Vérifier si le séjour est terminé
  1001.         $sejourTermine $sejour->getDateFinSejour() < new \DateTime('today');
  1002.         
  1003.         // Vérifier si on est après J+3 (3 jours après la fin du séjour)
  1004.         $dateFinSejourPlus3 = clone $sejour->getDateFinSejour();
  1005.         $dateFinSejourPlus3->modify('+3 days');
  1006.         $afterJplus3 = new \DateTime('today') > $dateFinSejourPlus3;
  1007.         
  1008.         // Calculer le total des parents et likes
  1009.         $totalParent $SEjourService->getTotalParent($idSejour);
  1010.         $totalLikes $SEjourService->getTotalLikesSejour($idSejour);
  1011.         $counts $SEjourService->countAll($idSejour);
  1012.         // Calculer les photos et messages du jour (réutiliser la même logique que SejourAccompagnateur)
  1013.         $photosDuJour 0;
  1014.         $messagesDuJour 0;
  1015.         
  1016.         foreach ($AllAttachements as $attach) {
  1017.             if (isset($attach['date_depot_attachement']) && $attach['date_depot_attachement'] instanceof \DateTime) {
  1018.                 if ($attach['date_depot_attachement']->format('Y-m-d') === $today->format('Y-m-d')) {
  1019.                     $photosDuJour++;
  1020.                 }
  1021.             }
  1022.         }
  1023.         
  1024.         foreach ($messages as $message) {
  1025.             if (isset($message['date_depot_attachement']) && $message['date_depot_attachement'] instanceof \DateTime) {
  1026.                 if ($message['date_depot_attachement']->format('Y-m-d') === $today->format('Y-m-d')) {
  1027.                     $messagesDuJour++;
  1028.                 }
  1029.             }
  1030.         }
  1031.         return $this->render('Accompagnateur/DetailsSejourAcc.html.twig', [
  1032.             "sejour" => $sejour,
  1033.             'listeattach' => $AllAttachements,
  1034.             'attachementsCount' => $attachementsCount,
  1035.             'albumAcc' => $albumAcc,
  1036.             "livreSejour" => $livreSejour,
  1037.             'nbImages' => $nbImages,
  1038.             'positions' => $positions,
  1039.             'dateexpretise' => $date,
  1040.             'messages' => $messages,
  1041.             'like' => $listeattachlikephoto,
  1042.             'nblike' => count($listeattachlikephoto),
  1043.             'photoLikes' => $photoLikes,
  1044.             'datefincode' => $sejour->getDateFinCode(),
  1045.             // Share Booster variables
  1046.             'targetDaily' => $targetDaily,
  1047.             'todayUploadedCount' => $todayUploadedCount,
  1048.             'collectiveTodayCount' => $collectiveTodayCount,
  1049.             // Variables Dashboard
  1050.             'sejourTermine' => $sejourTermine,
  1051.             'afterJplus3' => $afterJplus3,
  1052.             'totalParent' => $totalParent,
  1053.             'totalLikes' => $totalLikes,
  1054.             'counts' => $counts,
  1055.             'photosDuJour' => $photosDuJour,
  1056.             'messagesDuJour' => $messagesDuJour,
  1057.         ]);
  1058.     }
  1059.     /**
  1060.      * @Route("/Accompagnateur/changePageSession", name="changePageSession")
  1061.      */
  1062.     public function changePageSession(Request $requestsession $session)
  1063.     {
  1064.         $page $request->get('page');
  1065.         $session->set('pageMenu'$page);
  1066.         return new Response('ok');
  1067.     }
  1068.     /**
  1069.      * @Route("Accompagnateur/Accueil5sur5/commantaire", name="addd_commantaire",methods={"POST"})
  1070.      */
  1071.     public function ajoutercomm(Request $request)
  1072.     {
  1073.         $UserService $this->userService;
  1074.         $iduser $this->getUser()->getId();
  1075.         $id $request->get('idatach');
  1076.         $description $request->get("description");
  1077.         $adress $UserService->setDescriptionAttch($id$description);
  1078.         return new JsonResponse('done');
  1079.     }
  1080.     /**
  1081.      * @Route("Accompagnateur/Accueil5sur5/deletecommantaire", name="rem_commantaire")
  1082.      */
  1083.     public function deletecomm(Request $request)
  1084.     {
  1085.         $UserService $this->userService;
  1086.         $iduser $this->getUser()->getId();
  1087.         $id $request->get('idatach');
  1088.         $adress $UserService->DelDescriptionAttch($id);
  1089.         return new JsonResponse('done');
  1090.     }
  1091.     /**
  1092.      * @Route("/Accompagnateur/deletePostion", name="SejourAccompagnateurDeletePosition")
  1093.      */
  1094.     public function SejourAccompagnateur_deletePosition(Request $request)
  1095.     {
  1096.         $idPosition $request->get("id");
  1097.         $Cartervice $this->carteService;
  1098.         $carte $Cartervice->deleteCardPosition($idPosition);
  1099.         return new response("done");
  1100.     }
  1101.     /**
  1102.      * @Route("Accompagnateur/Accueil5sur5/supprimermesgeAudio", name="supprimermesgeAudio",methods={"POST"})
  1103.      */
  1104.     public function supprimmaudio(Request $request)
  1105.     {
  1106.         $UserService $this->userService;
  1107.         $id $request->get('id');
  1108.         $adress $UserService->supprimaudio($id);
  1109.         return new JsonResponse('done');
  1110.     }
  1111.     /**
  1112.      * @Route("Accompagnateur/testmail", name="testMAil",methods={"GET"})
  1113.      */
  1114.     public function testEmail()
  1115.     {
  1116.         $UserService $this->sejourService;
  1117.         $UserService->EnvoyerEmailCodeSejour(33);
  1118.         return new response("test");
  1119.     }
  1120.     /**
  1121.      * @Route("Accompagnateur/Accueil5sur5/ajouterdatesejourdescription", name="ajouterdatesejourdescription",methods={"POST"})
  1122.      */
  1123.     public function ajouterdatesejourdescription(Request $request)
  1124.     {
  1125.         $dateString $request->request->get('datedescription'); // e.g. "02/05/2025"
  1126.         $id $request->get('id');
  1127.         $description $request->get('description');
  1128.         // Pass the raw string:
  1129.         $desc $this->userService->ajouterdatesejourdescription($id$description$dateString);
  1130.         return new JsonResponse('done');
  1131.     }
  1132.     /**
  1133.      * @Route("Accompagnateur/commanderAccompAdress", name="commanderAccompAdress",methods={"POST"})
  1134.      */
  1135.     public function CommanderAccompAdress(Request $request)
  1136.     {
  1137.         $em $this->em;
  1138.         $nbAlbums          $request->request->get('nbAlbums');
  1139.         $email             $request->request->get('email');
  1140.         $phone             $request->request->get('phone');
  1141.         $country           $request->request->get('country');
  1142.         $city              $request->request->get('city');
  1143.         $region            $request->request->get('region');
  1144.         $address           $request->request->get('address');
  1145.         $addressComplement $request->request->get('addressComplement');
  1146.         $postalCode        $request->request->get('postalCode');
  1147.         $idsejour          $request->request->get('idSejour');
  1148.         $sejour $em->getRepository(Sejour::class)->findOneBy(['id' => $idsejour]);
  1149.         $accompagnateur $this->getUser();
  1150.     
  1151.         // Vérification de l'existence d'un album de séjour
  1152.         $hasAlbum false;
  1153.         $albumInfo '';
  1154.         
  1155.         // Vérifier s'il y a des photos/vidéos dans le séjour
  1156.         $attachments $em->getRepository(SejourAttachment::class)->getSejourAttachById($idsejour);
  1157.         $nbPhotos 0;
  1158.         $nbVideos 0;
  1159.         
  1160.         if ($attachments) {
  1161.             foreach ($attachments as $attachment) {
  1162.                 $typeRef $attachment->getIdAttchment()->getIdref()->getLibiller();
  1163.                 if ($typeRef === 'photo') {
  1164.                     $nbPhotos++;
  1165.                 } elseif ($typeRef === 'video') {
  1166.                     $nbVideos++;
  1167.                 }
  1168.             }
  1169.         }
  1170.         
  1171.         // Vérifier s'il y a un album créé par l'accompagnateur
  1172.         $albumAcc $em->getRepository(Produit::class)->findOneBy([
  1173.             'idsjour' => $idsejour
  1174.             'iduser' => $accompagnateur->getId(), 
  1175.             'statut' => 'saved'
  1176.         ], ['id' => 'DESC']);
  1177.         
  1178.         if (!$albumAcc) {
  1179.             // Vérifier s'il y a un album créé par l'admin
  1180.             $albumAdmin $em->getRepository(Produit::class)->findOneBy([
  1181.                 'iduser' => 1
  1182.                 'statut' => "Album_sejour"
  1183.                 'idsjour' => $sejour
  1184.             ]);
  1185.             $hasAlbum = ($albumAdmin !== null);
  1186.             if ($hasAlbum) {
  1187.                 $albumInfo 'Album créé par l\'administrateur';
  1188.             }
  1189.         } else {
  1190.             $hasAlbum true;
  1191.             $albumInfo 'Album créé par l\'accompagnateur';
  1192.         }
  1193.         $this->userService->sendCommandeGroupeeEmail($sejour$nbAlbums$email$phone$address,$addressComplement,$postalCode$city ,$region,$country,$accompagnateur,$hasAlbum);
  1194.      return new JsonResponse('done');
  1195.     }
  1196.     /**
  1197.      * @Route("Accompagnateur/Accueil5sur5/supprimdescription", name="supprimdescription")
  1198.      */
  1199.     public function supprimdescription(Request $request)
  1200.     {
  1201.         $UserService $this->userService;
  1202.         $iddescription $request->get('iddescription');
  1203.         $desc $UserService->supprimdescription($iddescription);
  1204.         return new JsonResponse('done');
  1205.     }
  1206.     /**
  1207.      * @Route("Accompagnateur/Accueil5sur5/modificationdescription", name="modificationdescription",methods={"POST"})
  1208.      */
  1209.     public function modificationdescription(Request $request)
  1210.     {
  1211.         $UserService $this->userService;
  1212.         $iddescription $request->get('iddescription');
  1213.         $description $request->get('description');
  1214.         $desc $UserService->modificationdescription($iddescription$description);
  1215.         return new JsonResponse('done');
  1216.     }
  1217.     /**
  1218.      * @Route("Accompagnateur/EditionAlbum", name="VoirProjet")
  1219.      */
  1220.     public function AffichageProjet()
  1221.     {
  1222.         $sejourservice $this->sejourService;
  1223.         $session $this->session;
  1224.         $idSejour $session->get("Sejour");
  1225.         $sejour $sejourservice->getsejourByAcc($idSejour$this->getUser());
  1226.         $session->set('pageMenu''albumSej');
  1227.         $user $this->getUser();
  1228.         // dd($user);
  1229.         $iduser $this->getUser()->getId();
  1230.         $listeattach $sejourservice->getatachmentsejour($idSejour);
  1231.         $listeattachM $sejourservice->getsejourmessage($idSejour);
  1232.         $em $this->em;
  1233.         $clipart null;
  1234.         $random true;
  1235.         $listeattachlikephoto $sejourservice->getlikephotosejour($iduser$idSejour);
  1236.         $listerandom $listeattachlikephoto;
  1237.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'random']);
  1238.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  1239.         $allpagesResult = array();
  1240.         $tabacc = array();
  1241.         $tabacc1 = array();
  1242.         if ($random == true) {
  1243.             foreach ($AllPages as $p) {
  1244.                 $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  1245.                 //dd($arrayexploded);
  1246.                 $rr "";
  1247.                 $elemPath "";
  1248.                 $elemId "";
  1249.                 for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  1250.                     if ($i sizeof($arrayexploded)) {
  1251.                         if (sizeof($listerandom) == 0) {
  1252.                             $listerandom $sejourservice->getlikephotosejour($iduser$idSejour);
  1253.                         }
  1254.                         $arrayRsRandom $this->random_function($listerandom);
  1255.                         array_push($tabacc$arrayRsRandom['idelem']);
  1256.                         $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  1257.                         unset($listerandom[$arrayRsRandom['elem']]);
  1258.                     } else {
  1259.                         $rr $rr $arrayexploded[$i];
  1260.                     }
  1261.                     $listerandom $listerandom;
  1262.                 }
  1263.                 $resultFinal $rr;
  1264.                 $p->setCouleurbordure($resultFinal);
  1265.                 array_push($allpagesResult$p);
  1266.             }
  1267.             $AllPages $allpagesResult;
  1268.             $version 'new';
  1269.         } else {
  1270.             $version $Albumproduct->getVersion();
  1271.         }
  1272.         $tabacc1 array_count_values($tabacc);
  1273.         $part $sejour->getIdPartenaire();
  1274.         $nompart $part->getUsername();
  1275.         $logopart $part->getLogourl();
  1276.         return $this->render('Accompagnateur/NewAlbum2.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart'user' => $user'sejour' => $sejour'photos' => $listeattach'messages' => $listeattachM'cliparts' => $clipart'like' => $listeattachlikephoto'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  1277.     }
  1278.     function random_function($listerandom)
  1279.     {
  1280.         $elem array_rand($listerandom);
  1281.         $photo $listerandom[$elem];
  1282.         $idelem $photo->getIdSejourAttchment()->getIdAttchment()->getId();
  1283.         $pathelem $photo->getIdSejourAttchment()->getIdAttchment()->getPath();
  1284.         return array('pathelem' => $pathelem'idelem' => $idelem'elem' => $elem);
  1285.     }
  1286.     function random_functionPhoto($listerandom$elem)
  1287.     {
  1288.         $photo $listerandom[$elem];
  1289.         $idelem $photo->getIdSejourAttchment()->getIdAttchment()->getId();
  1290.         $pathelem $photo->getIdSejourAttchment()->getIdAttchment()->getPath();
  1291.         return array('pathelem' => $pathelem'idelem' => $idelem'elem' => $elem);
  1292.     }
  1293.     /**
  1294.      * @Route("Accompagnateur/Condtyg", name="conditiongenerale_Acomp",methods={"POST"})
  1295.      */
  1296.     public function condition(Request $request)
  1297.     {
  1298.         $UserService $this->userService;
  1299.         $id $request->get('id');
  1300.         $sejour $UserService->condition($id);
  1301.         return new JsonResponse('done');
  1302.     }
  1303.     /**
  1304.      * @Route("Accompagnateur/MonPanierAccompaganteur", name="MonPanierAccompaganteur")
  1305.      */
  1306.     public function MonPanierAccompaganteur()
  1307.     {
  1308.         $em $this->em;
  1309.         $sejourservice $this->sejourService;
  1310.         $session $this->session;
  1311.         $idSejour $session->get("Sejour");
  1312.         $sejour $sejourservice->getsejourByAcc($idSejour$this->getUser());
  1313.         $session->set('pageMenu''panier');
  1314.         $user $this->getUser();
  1315.         $products $session->get("Panier_Acompa");
  1316.         $listeproduit $em->getRepository(Produit::class)->findBy(array('iduser' => $user->getId(), "idsjour" => $idSejour));
  1317.         $produit $this->typeProduiteService;
  1318.         $produitlist $produit->produitlistTypeConditionnement();
  1319.         
  1320.         // Utiliser le nouveau template premium
  1321.         return $this->render('Accompagnateur/PanierAccompagnateur.html.twig', [
  1322.             'user' => $user
  1323.             'listeproduit' => $listeproduit
  1324.             'sejour' => $sejour
  1325.             'Panier' => $products
  1326.             'produitlist' => $produitlist,
  1327.             'projets' => $listeproduit,
  1328.             'commandeGroupee' => null
  1329.         ]);
  1330.     }
  1331.     /**
  1332.      * @Route("Accompagnateur/SessionPromo", name="SessionPromo")
  1333.      */
  1334.     public function SessionPromo()
  1335.     {
  1336.         $session $this->session;
  1337.         $session->set("promoAcc""true");
  1338.         return new Response('ok');
  1339.     }
  1340.     /**
  1341.      * @Route("/Accompagnateur/suprimerattachAcommpailmag", name="suprimerattachAcommpailmag")
  1342.      */
  1343.     public function suprimerattachAcommpailmag(Request $request)
  1344.     {
  1345.         $serviceuser $this->etablissementService;
  1346.         $id $request->get("prodId");
  1347.         $etablissementDetail $serviceuser->supprisionimageadminfon($id);
  1348.         //dd($etablissementDetail);
  1349.         return new response('done');
  1350.     }
  1351.        
  1352. /**
  1353.      * @Route("/ecoles-publiques/creer", name="app_ecoles_publiques_creer")
  1354.  */
  1355. public function ecolesPubliquesCreer(): Response
  1356. {
  1357.         $listeFonctions $this->em->getRepository(Fonctions::class)->findBy(['statut' => 2]);
  1358.     return $this->render('Accompagnateur/ecoles-publiques_creer_sejour.html.twig', [
  1359.             'listeFonctions' => $listeFonctions
  1360.     ]);
  1361. }
  1362. /**
  1363.      * @Route("/creation-simple/creer", name="app_creation_simple_creer")
  1364.  */
  1365. public function creationSimpleCreer(): Response
  1366. {
  1367.         $listeFonctions $this->em->getRepository(Fonctions::class)->findBy(['statut' => 2]);
  1368.     return $this->render('Accompagnateur/creation-simple_creer_sejour.html.twig', [
  1369.             'listeFonctions' => $listeFonctions
  1370.     ]);
  1371. }
  1372.     /**
  1373.      * @Route("/Accompagnateur/suprimermultiattachAcommp", name="suprimermultiattachAcommp")
  1374.      */
  1375.     public function suprimermultiattachAcommp(Request $request)
  1376.     {
  1377.         // Decode the JSON request body to get the array of photo IDs.
  1378.         $data json_decode($request->getContent(), true);
  1379.         $photoIds = isset($data['photoIds']) ? $data['photoIds'] : [];
  1380.         if (empty($photoIds)) {
  1381.             return new Response('No photos selected'400);
  1382.         }
  1383.         // Call the service to delete all attachments by the given IDs.
  1384.         $this->etablissementService->supprismultiattachAcommp($photoIds);
  1385.         return new Response('done');
  1386.     }
  1387.     /**
  1388.      * @Route("/Accompagnateur/AlbummsavealbumAcompa", name="Albummsavealbum")
  1389.      */
  1390.     public function Albummsavealbum(Request $request)
  1391.     {
  1392.         $serviceuser $this->etablissementService;
  1393.         $page $request->get("pages");
  1394.         $sejour $request->get("sejour");
  1395.         $prodid $request->get('idProd');
  1396.         $nomprod $request->get('nomprod');
  1397.      
  1398.         $version $request->get('new');
  1399.         $user $this->getUser();
  1400.          $stat="Album_sejour";
  1401.         $Album $serviceuser->savealbumAcc($page$user$sejour$prodid$stat$nomprod$version);
  1402.         return new response('done');
  1403.     }
  1404.     /**
  1405.      * @Route("/Accompagnateur/DupliquerAlbumAcco", name="DupliquerAlbumAcco")
  1406.      */
  1407.     public function DupliquerAlbumAcco(Request $request)
  1408.     {
  1409.         $serviceuser $this->etablissementService;
  1410.         $page $request->get("pages");
  1411.         $sejour $request->get("sejour");
  1412.         $prodid $request->get('idProd');
  1413.         $nomprod $request->get('nomprod');
  1414.         $stat $request->get('stat');
  1415.         $user $this->getUser();
  1416.         $Album $serviceuser->savealbumAcc($page$user$sejour$prodid$stat$nomprod);
  1417.         return new response('done');
  1418.     }
  1419.     /**
  1420.      * @Route("/Accompagnateur/AlbummsavealbumAcompa_panier", name="Albummsavealbum_panier")
  1421.      */
  1422.     public function Albummsavealbum_panier(Request $request)
  1423.     {
  1424.         $serviceuser $this->etablissementService;
  1425.         $page $request->get("pages");
  1426.         $sejour $request->get("sejour");
  1427.         $prodid $request->get('idProd');
  1428.         $nomprod $request->get('nomprod');
  1429.         $version $request->get('new');
  1430.         $stat "draft";
  1431.         $em $this->em;
  1432.         $user $this->getUser();
  1433.         $typeref $em->getRepository(Typeref::class)->find(8);
  1434.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1435.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1436.         //fin
  1437.         if ($panierTrace == null) {
  1438.             $panierTrace = new Panier();
  1439.             $dateNow = new \Datetime();
  1440.             $panierTrace->setDateCreation($dateNow);
  1441.             $panierTrace->setCreerPar($user);
  1442.             $panierTrace->setStatut($statutPanier);
  1443.             $em->getManager()->persist($panierTrace);
  1444.             $em->getManager()->flush();
  1445.         }
  1446.         $Album $serviceuser->savealbumAcc($page$user$sejour$prodid$stat$nomprod$version);
  1447.         $inser false;
  1448.         $session $this->session;
  1449.         $Products $session->get("Panier_Acompa");
  1450.         $em $this->em;
  1451.         if ($Products == null) {
  1452.             $Products = [];
  1453.         }
  1454.         foreach ($Products as $key => $p) {
  1455.             if ($p['id'] == $Album->getId()) {
  1456.                 $inser true;
  1457.                 $Products[$key]['qte'] = $p['qte'] + 1;
  1458.                 $Products[$key]['mnt'] = $p['mnt'] + $Album->getIdConditionnement()->getMontantTTC();
  1459.             }
  1460.         }
  1461.         //Touhemi :Rechercher  si le produti existe déja ds panierProduit
  1462.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $Album"idPanier" => $panierTrace));
  1463.         if ($panierProduit == null) {
  1464.             $panierProduit = new PanierProduit();
  1465.             $panierProduit->setIdProduit($Album);
  1466.             $panierProduit->setIdPanier($panierTrace);
  1467.             $em->getManager()->persist($panierProduit);
  1468.             $em->getManager()->flush();
  1469.         }
  1470.         //fin
  1471.         //Touhemi ajouter plus un au produit et modifier prixTotal
  1472.         $oldQte $panierProduit->getQuantite();
  1473.         $newQte $oldQte 1;
  1474.         $panierProduit->setQuantite($newQte);
  1475.         if ($panierProduit->getPrixTotal() == null) {
  1476.             $oldTotal $panierProduit->getPrixTotal();
  1477.         } else {
  1478.             $oldTotal 0;
  1479.         }
  1480.         $newTotal $oldTotal $Album->getIdConditionnement()->getMontantTTC();
  1481.         $panierProduit->setPrixTotal($newTotal);
  1482.         $this->em->getManager()->persist($panierProduit);
  1483.         $this->em->getManager()->flush();
  1484.         //fin
  1485.         if ($inser === false) {
  1486.             //get nessaisire element
  1487.             $p = [];
  1488.             $p["id"] = $Album->getId();
  1489.             $p["nom"] = $Album->getType()->getLabeletype();
  1490.             $p["ident"] = $Album->getLabele();
  1491.             $p["codesejour"] = $Album->getIdsjour()->getcodeSejour();
  1492.             $p["mnt"] = $Album->getIdConditionnement()->getMontantTTC();
  1493.             $p["path"] = $Album->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  1494.             $p["condition"] = $Album->getIdConditionnement()->getId();
  1495.             $p["poids"] = $Album->getIdConditionnement()->getPoidsProduit();
  1496.             $p["statut"] = $Album->getStatut();
  1497.             $p["qte"] = 1;
  1498.             array_push($Products$p);
  1499.         }
  1500.         $session->set('Panier_Acompa'$Products);
  1501.         return new response('done');
  1502.     }
  1503.     /**
  1504.      * @Route("Accompagnateur/MonAlbum/{id}", name="getmonAlbum")
  1505.      */
  1506.     public function getMyAlbumProjet($id)
  1507.     {
  1508.         $sejourservice $this->sejourService;
  1509.         $session $this->session;
  1510.         $idSejour $session->get("Sejour");
  1511.         $sejour $sejourservice->getsejourByAcc($idSejour$this->getUser());
  1512.         $session->set('pageMenu''parametres');
  1513.         $user $this->getUser();
  1514.         // dd($user);
  1515.         $iduser $this->getUser()->getId();
  1516.         $listeattach $sejourservice->getatachmentsejour($idSejour);
  1517.         $listeattachM $sejourservice->getsejourmessage($idSejour);
  1518.         $em $this->em;
  1519.         $clipart null;
  1520.         $random false;
  1521.         $tabacc = array();
  1522.         $tabacc1 = array();
  1523.         $listeattachlikephoto $sejourservice->getlikephotosejour($iduser$idSejour);
  1524.         $Albumproduct $em->getRepository(Produit::class)->find($id);
  1525.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  1526.         foreach ($AllPages as $page) {
  1527.             $pageJ json_decode($page->getCouleurbordure());
  1528.             $pageDec json_decode($pageJ[0]);
  1529.             $attache json_decode($pageDec->attache);
  1530.             if (isset($attache[0])) {
  1531.                 $attachDec json_decode($attache[0]);
  1532.             }
  1533.             if (isset($attachDec->id) && json_decode($attachDec->id) !== null && $attachDec->id !== '') {
  1534.                 $idAttach json_decode($attachDec->id);
  1535.                 array_push($tabacc$idAttach);
  1536.             }
  1537.         }
  1538.         $part $sejour->getIdPartenaire();
  1539.         $nompart $part->getUsername();
  1540.         $logopart $part->getLogourl();
  1541.         $FindSejour $em->getRepository(Sejour::class)->find($idSejour);
  1542.         $FindSejour->setEtatAcompAlbum(true);
  1543.         $em->getManager()->persist($FindSejour);
  1544.         $em->getManager()->flush();
  1545.         $tabacc1 array_count_values($tabacc);
  1546.         $version $Albumproduct->getVersion();
  1547.         if ($version === 'new') {
  1548.             return $this->render('Accompagnateur/NewAlbum2.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart'user' => $user'sejour' => $sejour'photos' => $listeattach'messages' => $listeattachM'cliparts' => $clipart'like' => $listeattachlikephoto'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  1549.         } else {
  1550.             return $this->render('Accompagnateur/NewAlbum2.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart'user' => $user'sejour' => $sejour'photos' => $listeattach'messages' => $listeattachM'cliparts' => $clipart'like' => $listeattachlikephoto'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  1551.         }
  1552.     }
  1553.     /**
  1554.      * @Route("/Accompagnateur/modifierLabel_produit_Acompa", name="modifierLabel_produit_Acompa",methods={"POST"})
  1555.      */
  1556.     public function modifierLabel_produit_Acompa(Request $request)
  1557.     {
  1558.         $SEjourService $this->sejourService;
  1559.         $userId $this->getUser()->getId();
  1560.         $session $this->session;
  1561.         $idPrd $request->get("id");
  1562.         $description $request->get("description");
  1563.         $SEjourService->modif_lbel_Produit($idPrd$description);
  1564.         return new Response('done');
  1565.     }
  1566.     /**
  1567.      * @Route("/Accompagnateur/ajouterauPanier_Accompagnateur", name="Ajouter_MonPanier_Acompa")
  1568.      */
  1569.     public function Ajouter_MonPanier(Request $request)
  1570.     {
  1571.         $inser false;
  1572.         $session $this->session;
  1573.         $testsaved false;
  1574.         $Products $session->get("Panier_Acompa");
  1575.         $id $request->get("id");
  1576.         $em $this->em;
  1577.         $produit $em->getRepository(Produit::class)->find($id);
  1578.         //Touhemi :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  1579.         $user $this->getUser();
  1580.         $typeref $em->getRepository(Typeref::class)->find(8);
  1581.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1582.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1583.         //fin
  1584.         if ($panierTrace == null) {
  1585.             $panierTrace = new Panier();
  1586.             $dateNow = new \Datetime();
  1587.             $panierTrace->setDateCreation($dateNow);
  1588.             $panierTrace->setCreerPar($user);
  1589.             $panierTrace->setStatut($statutPanier);
  1590.             $em->getManager()->persist($panierTrace);
  1591.             $em->getManager()->flush();
  1592.         }
  1593.         $sejourFind $produit->getIdsjour();
  1594.         $nrbconnx $em->getRepository(ParentSejour::class)->findBy(["idSejour" => $sejourFind->getId(), "payment" => 1]);
  1595.         $Album_Grtuie $produit->getIdsjour()->getAlbumgratuie();
  1596.         if ($Products == null) {
  1597.             $Products = [];
  1598.         }
  1599.         //Touhemi :Rechercher  si le produti existe déja ds panierProduit
  1600.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  1601.         if ($panierProduit == null) {
  1602.             $panierProduit = new PanierProduit();
  1603.             $panierProduit->setIdProduit($produit);
  1604.             $panierProduit->setIdPanier($panierTrace);
  1605.             $em->getManager()->persist($panierProduit);
  1606.             $em->getManager()->flush();
  1607.         }
  1608.         foreach ($Products as $key => $p) {
  1609.             if ($p['id'] == $produit->getId()) {
  1610.                 $inser true;
  1611.                 $Products[$key]['qte'] = $p['qte'] + 1;
  1612.                 // je regarde dans le panier si j'ai déjà ajouté un album gratuit
  1613.                 if ($p["statut"] == "saved" && $p["qte"] == 0) {
  1614.                     $Products[$key]['mnt'] = $produit->getIdConditionnement()->getMontantTTC();
  1615.                 } elseif ($p["statut"] == "saved" && $p["qte"] > 0) {
  1616.                     $Products[$key]['mnt'] = ($Products[$key]['qte'] - 1) * $produit->getIdConditionnement()->getMontantTTC();
  1617.                 }
  1618.                 // Si je n'ai pas d'album gratuit j'ajoute normalement,
  1619.                 else {
  1620.                     $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  1621.                 }
  1622.             }
  1623.             if ($Products[$key]["statut"] == "saved") {
  1624.                 $testsaved true// *****je sais que le panier contient déjà un album accompagnateur gratuit donc il peut commander un autre  
  1625.             }
  1626.         }
  1627.         //Touhemi ajouter plus un au produit et modifier prixTotal
  1628.         $oldQte $panierProduit->getQuantite();
  1629.         $newQte $oldQte 1;
  1630.         $panierProduit->setQuantite($newQte);
  1631.         if ($panierProduit->getPrixTotal() == null) {
  1632.             $oldTotal $panierProduit->getPrixTotal();
  1633.         } else {
  1634.             $oldTotal 0;
  1635.         }
  1636.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  1637.         $panierProduit->setPrixTotal($newTotal);
  1638.         $this->em->getManager()->persist($panierProduit);
  1639.         $this->em->getManager()->flush();
  1640.         //fin
  1641.         if ($inser === false) {
  1642.             //get nessaisire element
  1643.             $p = [];
  1644.             $p["id"] = $produit->getId();
  1645.             $p["nom"] = $produit->getType()->getLabeletype();
  1646.             $p["ident"] = $produit->getLabele();
  1647.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  1648.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  1649.             $p["condition"] = $produit->getIdConditionnement()->getId();
  1650.             $p["poids"] = $produit->getIdConditionnement()->getPoidsProduit();
  1651.             $p["statut"] = "payment";
  1652.             $p["qte"] = 1;
  1653.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  1654.             // dd($p);
  1655.             array_push($Products$p);
  1656.         }
  1657.         $session->set('Panier_Acompa'$Products);
  1658.         return new JsonResponse('done');
  1659.     }
  1660.     /**
  1661.      * @Route("/Accompagnateur/ActiverSessionAlbum", name="ActiverSessionAlbum")
  1662.      */
  1663.     public function ActiverSessionAlbum(Request $request)
  1664.     {
  1665.         $session->set('Panier_Acompa'$Products);
  1666.         return new JsonResponse('done');
  1667.     }
  1668.     /**
  1669.      * @Route("/Accompagnateur/suprimer_panier_Acompa", name="suprimer_panier_Acompa")
  1670.      */
  1671.     public function suprimer_Album_panier(Request $request)
  1672.     {
  1673.         $session $this->session;
  1674.         $Products $session->get("Panier_Acompa");
  1675.         $id $request->get("p");
  1676.         $idsej "";
  1677.         $gratuit "";
  1678.         foreach ($Products as $key => $p) {
  1679.             if ($p['id'] == $id) {
  1680.                 if ($p['statut'] == "saved") {
  1681.                     $gratuit true;
  1682.                 }
  1683.                 unset($Products[$key]);
  1684.             }
  1685.         }
  1686.         foreach ($Products as $key => $p) {
  1687.             if ($p['condition'] == && $gratuit == true) {
  1688.                 $p[$key]['condition'] = "saved";
  1689.                 $Products[$key]['mnt'] = $Products[$key]['mnt'] - ($Products[$key]['mnt'] / $Products[$key]['qte']);
  1690.                 $gratuit false;
  1691.             }
  1692.         }
  1693.         $em $this->em;
  1694.         $user $this->getUser();
  1695.         $produit $em->getRepository(Produit::class)->find($id);
  1696.         $session->set('Panier_Acompa'$Products);
  1697.         $typeref $em->getRepository(Typeref::class)->find(8);
  1698.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1699.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1700.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  1701.         $em->getManager()->remove($panierProduit);
  1702.         $em->getManager()->flush();
  1703.         return new Response('done');
  1704.     }
  1705.     /**
  1706.      * @Route("/Accompagnateur/Commander", name="Commander_Acompa")
  1707.      */
  1708.     public function Commander()
  1709.     {
  1710.         $session $this->session;
  1711.         #  var_dump($session);
  1712.         $idSejour $session->get("Sejour");
  1713.         $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  1714.         $user $this->getUser();
  1715.         $comande $session->get("comande");
  1716.         $panier $session->get("Panier_Acompa");
  1717.         $typeref $this->em->getRepository(Typeref::class)->find(8);
  1718.         $statutPanier $this->em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1719.         $panierTrace $this->em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1720.         $jetonService = new JetonService($this->em);
  1721.         $promotion 0;
  1722.         //if(($jetonService->checkJetonUser($user->getId()))&&($jetonService->checkApplicablePanier($panier))){
  1723.         //    $jetonService->appliquerJetonUserPanier($panierTrace->getId(),$user->getId());
  1724.         //    $promotion=$jetonService->getPromotion();
  1725.         //}else if($panierTrace->getJeton()==1){
  1726.         //    $promotion=$jetonService->getPromotion();
  1727.         //}
  1728.         $Conditionnement $this->em->getRepository(TypeProduitConditionnement::class)->find(1);
  1729.         $prixphotos $Conditionnement->getMontantTTC();
  1730.         //dd();
  1731.         //var_dump($promotion." ".$panierTrace->getJeton());
  1732.         return $this->render('Accompagnateur/commande.html.twig', ["user" => $user"sejour" => $sejour"x" => $panier'promotion' => $promotion'prixphotos' => $prixphotos]);
  1733.     }
  1734.     /**
  1735.      * @Route("/Accompagnateur/adresse_comande", name="adresse_comande_Acompa",methods={"POST"})
  1736.      */
  1737.     public function adresse_comande_Acompa(Request $request)
  1738.     {
  1739.         $UserService $this->userService;
  1740.         //dd($this->getUser()->getId());
  1741.         $iduser $this->getUser()->getId();
  1742.         $prenom $request->get("prenom");
  1743.         $nom $request->get("nom");
  1744.         $organism $request->get("organism");
  1745.         $rue $request->get('ruevoi');
  1746.         $ville $request->get("villle");
  1747.         $pays $request->get("pays");
  1748.         $codepostal $request->get("codpostal");
  1749.         //adress facturation if exsist
  1750.         $prenomfacturation $request->get("prenomadressfacturation");
  1751.         $nomfacturation $request->get("nomadressfacturation");
  1752.         $organismfacturation $request->get("etablismadressfacturation");
  1753.         $ruefacturation $request->get('rueadressfacturation');
  1754.         $villefacturation $request->get("villefacturation");
  1755.         $paysfacturation $request->get("payadressfacturation");
  1756.         $codepostalfacturation $request->get("codepostalfacturation");
  1757.         //modification userPArent
  1758.         $adress $UserService->modifieradress_comande($rue$ville$pays$codepostal$iduser$prenom$nom$organism$prenomfacturation$nomfacturation$organismfacturation$ruefacturation$villefacturation$paysfacturation$codepostalfacturation);
  1759.         return new JsonResponse('done');
  1760.     }
  1761.     /**
  1762.      * @Route("/Accompagnateur/pass_Comande_Acompa_Alb", name="pass_Comande_Acompa_Alb",methods={"POST"})
  1763.      */
  1764.     public function AcompacomandeProduit(Request $request)
  1765.     {
  1766.         $em $this->em;
  1767.         $comandeservice $this->CommandeService;
  1768.         $userId $this->getUser()->getId();
  1769.         $session $this->session;
  1770.         // $comande = $request->get("x");
  1771.         $frais $request->get("fraiEnvoi");
  1772.         $envoipost $request->get("envoipost");
  1773.         $Products $session->get("Panier_Acompa");
  1774.         $totalepanier $request->get("totalepanier");
  1775.         $session->set('envoipost'$envoipost);
  1776.         $comand $comandeservice->addcomande_parent($Products$userId$frais$totalepanier$envoipost);
  1777.         $comand->setAdresslivraison($this->getUser()->getAdresslivraison());
  1778.         $comand->setAdressfactoration($this->getUser()->getAdressfactoration());
  1779.         $em->getManager()->persist($comand);
  1780.         $em->getManager()->flush();
  1781.         //$session->set('envoipost',$envoipost );
  1782.         //panier retour a zero
  1783.         //$Products=[];
  1784.         $session->set('commandeActual'$comand->getId());
  1785.         return new Response($comand->getId());
  1786.     }
  1787.     /**
  1788.      * @Route("/Accompagnateur/soustractionproduit_panierAcomp", name="soustractionproduit_panierAcomp",methods={"POST"})
  1789.      */
  1790.     public function soustractionproduit_panierAcomp(Request $request)
  1791.     {
  1792.         $session $this->session;
  1793.         $Products $session->get("Panier_Acompa");
  1794.         $id $request->get("p");
  1795.         $em $this->em;
  1796.         $user $this->getUser();
  1797.         $gratuit "";
  1798.         $produit $em->getRepository(Produit::class)->find($id);
  1799.         foreach ($Products as $key => $p) {
  1800.             if ($p['id'] == $id) {
  1801.                 if ($p["statut"] == "saved" && $p["qte"] == 1) {
  1802.                     if ($p['statut'] == "saved") {
  1803.                         $gratuit true;
  1804.                     }
  1805.                     unset($Products[$key]);
  1806.                 } elseif ($p["statut"] == "saved" && $p["qte"] > 1) {
  1807.                     $Products[$key]['qte'] = $p['qte']  - 1;
  1808.                     $Products[$key]['mnt'] = $Products[$key]['mnt'] - $produit->getIdConditionnement()->getMontantTTC();
  1809.                 } elseif ($p["qte"] == 1) {
  1810.                     unset($Products[$key]);
  1811.                 } else {
  1812.                     $Products[$key]['qte'] = $p['qte'] - 1;
  1813.                     $Products[$key]['mnt'] = $Products[$key]['mnt'] - $produit->getIdConditionnement()->getMontantTTC();
  1814.                 }
  1815.             }
  1816.         }
  1817.         foreach ($Products as $key => $p) {
  1818.             if ($p['condition'] == && $gratuit == true) {
  1819.                 $Products[$key]['statut'] = "saved";
  1820.                 $Products[$key]['mnt'] = $Products[$key]['mnt'] - ($Products[$key]['mnt'] / $Products[$key]['qte']);
  1821.                 $gratuit false;
  1822.             }
  1823.         }
  1824.         $session->set('Panier_Acompa'$Products);
  1825.         $typeref $em->getRepository(Typeref::class)->find(8);
  1826.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1827.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1828.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  1829.         if ($panierProduit != null) {
  1830.             $oldQte $panierProduit->getQuantite();
  1831.             $newQte $oldQte 1;
  1832.             if ($newQte 0) {
  1833.                 $panierProduit->setQuantite($newQte);
  1834.                 $oldTotal $panierProduit->getPrixTotal();
  1835.                 $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  1836.                 $panierProduit->setPrixTotal($newTotal);
  1837.                 $em->getManager()->persist($panierProduit);
  1838.                 $em->getManager()->flush();
  1839.             }
  1840.             if ($newQte == 0) {
  1841.                 $em->getManager()->remove($panierProduit);
  1842.                 $em->getManager()->flush();
  1843.             }
  1844.             return new Response('done');
  1845.         }
  1846.     }
  1847.     /**
  1848.      * @Route("/Accompagnateur/Additionproduit_panierAcomp", name="additiondproduit_Acompa",methods={"POST"})
  1849.      */
  1850.     public function additiondproduit_parent(Request $request)
  1851.     {
  1852.         $session $this->session;
  1853.         $Products $session->get("Panier_Acompa");
  1854.         $id $request->get("p");
  1855.         $em $this->em;
  1856.         $user $this->getUser();
  1857.         $produit $em->getRepository(Produit::class)->find($id);
  1858.         foreach ($Products as $key => $p) {
  1859.             if ($p['id'] == $produit->getId()) {
  1860.                 $inser true;
  1861.                 $Products[$key]['qte'] = $p['qte'] + 1;
  1862.                 if ($p["statut"] == "saved" && $p["qte"] == 0) {
  1863.                     $Products[$key]['mnt'] = $produit->getIdConditionnement()->getMontantTTC();
  1864.                 } elseif ($p["statut"] == "saved" && $p["qte"] > 0) {
  1865.                     $Products[$key]['mnt'] = ($Products[$key]['qte'] - 1) * $produit->getIdConditionnement()->getMontantTTC();
  1866.                 } else {
  1867.                     $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  1868.                 }
  1869.             }
  1870.         }
  1871.         $session->set('Panier_Acompa'$Products);
  1872.         $typeref $em->getRepository(Typeref::class)->find(8);
  1873.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1874.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1875.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  1876.         if ($panierProduit != null) {
  1877.             $oldQte $panierProduit->getQuantite();
  1878.             $newQte $oldQte 1;
  1879.             $panierProduit->setQuantite($newQte);
  1880.             $oldTotal $panierProduit->getPrixTotal();
  1881.             $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  1882.             $panierProduit->setPrixTotal($newTotal);
  1883.             $em->getManager()->persist($panierProduit);
  1884.             $em->getManager()->flush();
  1885.         }
  1886.         return new Response('done');
  1887.     }
  1888.     /**
  1889.      * @Route("/Accompagnateur/SupprimerCommande", name="Supprimer_CommandeAcco")
  1890.      */
  1891.     function RemoveCommandeAcco(Request $request)
  1892.     {
  1893.         $CommandeService $this->CommandeService;
  1894.         $idCmd $request->get('id');
  1895.         $result $CommandeService->CommandeCloture($idCmd);
  1896.         return new Response($result);
  1897.     }
  1898.     /**
  1899.      * @Route("/Accompagnateur/delateSession", name="delateSession",methods={"POST"})
  1900.      */
  1901.     public function delateSession(Request $request)
  1902.     {
  1903.         $session $this->session;
  1904.         $em $this->em;
  1905.         $Products = [];
  1906.         if ($session->get("paymentmoniteco") == "succses") {
  1907.             $Products = [];
  1908.             $session->set('Panier_Acompa'$Products);
  1909.             $user $this->getUser();
  1910.             $typeref $em->getRepository(Typeref::class)->find(8);
  1911.             $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  1912.             $payer $em->getRepository(Ref::class)->findOneBy(array("libiller" => "payer""typeref" => $typeref));
  1913.             $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  1914.             if ($panierTrace) {
  1915.                 $panierTrace->setStatut($payer);
  1916.                 $em->getManager()->persist($panierTrace);
  1917.                 $em->getManager()->flush();
  1918.             }
  1919.         }
  1920.         $this->session->remove('paymentmoniteco');
  1921.         $this->session->remove('montanttotalcomande');
  1922.         $this->session->remove('Panierlength');
  1923.         $this->session->remove('envoipost');
  1924.         return new Response('done');
  1925.     }
  1926.     /**
  1927.      * @Route("/Accompagnateur/SuiviCommande/{id}", name="SuiviCommand")
  1928.      */
  1929.     public function SuiviCommand($id)
  1930.     {
  1931.         $sejourservice $this->sejourService;
  1932.         $cmdservice $this->CommandeService;
  1933.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  1934.         $session $this->session;
  1935.         $session->set('route''nonlogin');
  1936.         $session->set('pageMenu''parametres');
  1937.         $user $this->getUser();
  1938.         $listeCmd $cmdservice->listerCommandeParUser($user$sejour);
  1939.         //dd($listeCmd);
  1940.         return $this->render('Accompagnateur/suivicommande.html.twig', ['user' => $user'sejour' => $sejour'listeCmd' => $listeCmd]);
  1941.     }
  1942.     /**
  1943.      * @Route("/Accompagnateur/pdffactureAccomptest/{id}", name="pdffactureAccomptest")
  1944.      */
  1945.     public function pdffactureAccomptest($id)
  1946.     {
  1947.         $em $this->em;
  1948.         $cmd $em->getRepository(Commande::class)->find($id);
  1949.         return $this->render('Accompagnateur/pdfFactureAccomp.html.twig', [
  1950.             "comande" => $cmd,
  1951.         ]);
  1952.     }
  1953.     /**
  1954.      * @Route("/Accompagnateur/pdffactureAccomp/{id}", name="pdffactureAccomp")
  1955.      */
  1956.     public function pdffactureAccomp($id)
  1957.     {
  1958.         $em $this->em;
  1959.         $cmd $em->getRepository(Commande::class)->find($id);
  1960.         //dd($cmdProd);
  1961.         // Configure Dompdf according to your needs
  1962.         $pdfOptions = new Options();
  1963.         $pdfOptions->set('isRemoteEnabled'TRUE);
  1964.         $pdfOptions->set('defaultFont''Arial');
  1965.         // Instantiate Dompdf with our options
  1966.         $dompdf = new Dompdf($pdfOptions);
  1967.         $dompdf->set_option('isRemoteEnabled'TRUE);
  1968.         // Retrieve the HTML generated in our twig file
  1969.         $html $this->renderView('Accompagnateur/pdfFactureAccomp.html.twig', [
  1970.             "comande" => $cmd,
  1971.         ]);
  1972.         // Load HTML to Dompdf
  1973.         $dompdf->loadHtml($html);
  1974.         // (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
  1975.         $dompdf->setPaper('A4''portrait');
  1976.         // Render the HTML as PDF
  1977.         $dompdf->render();
  1978.         // Output the generated PDF to Browser (force download)
  1979.         $dompdf->stream("facture.pdf", [
  1980.             "Attachment" => true
  1981.         ]);
  1982.     }
  1983.     /**
  1984.      * @Route("/Accompagnateur/suprimerproduitAcompa", name="suprimerproduitAcompa")
  1985.      */
  1986.     public function suprimerproduitAcompa(Request $request)
  1987.     {
  1988.         $em $this->em;
  1989.         $user $this->getUser();
  1990.         $p $request->get("p");
  1991.         $Album $em->getRepository(Produit::class)->find($p);
  1992.         $Album->setDelated(1);
  1993.         $em->getManager()->persist($Album);
  1994.         $em->getManager()->flush();
  1995.         return new Response('yoopi');
  1996.     }
  1997.     /**
  1998.      * @Route("/Accompagnateur/affectationPositionPhoto", name="affectationPositionPhoto")
  1999.      */
  2000.     public function affectationPositionPhoto(Request $request)
  2001.     {
  2002.         $postionID $request->get("position");
  2003.         $attachs = ($request->get("attach"));
  2004.         $positionOrigin $this->em->getRepository(Position::class)->find($postionID);
  2005.         $Cartervice $this->carteService;
  2006.         foreach ($attachs as $key => $att) {
  2007.             $Attachement $this->em->getRepository(Attachment::class)->find($att);
  2008.             //  $attachement = $this->em->getRepository(Position::class)->find();
  2009.             $lat floatval($positionOrigin->getLatPosition()) + (0.0005 $key);
  2010.             $lng floatval($positionOrigin->getLngPosition()) + (0.0005 $key);
  2011.             $position $Cartervice->create_newPositionImage($this->getUser(), $lat$lng);
  2012.             $Cartervice->affecterPosition($Attachement$position);
  2013.         }
  2014.         //0.0001
  2015.         return new Response("done");
  2016.     }
  2017.     /**
  2018.      * @Route("/Accompagnateur/appActiveAcompt_Acompa/{sejour}", name="appActiveAcompt_Acompa")
  2019.      */
  2020.     public function appActiveAcompt_Acompa($sejour)
  2021.     {
  2022.         ini_set("max_execution_time", -1);
  2023.         ini_set('memory_limit''-1');
  2024.         $em $this->em;
  2025.         $SejourService $this->sejourService;
  2026.         $sejourfind $em->getRepository(Sejour::class)->find($sejour);
  2027.         $user $sejourfind->getIdAcommp();
  2028.         $em->getManager()->persist($user);
  2029.         $em->getManager()->flush();
  2030.         $SejourService->EnvoyerEmailOKActivation_CompteAcc($sejourfind->getId());
  2031.         //$SejourService->EnvoyerEmailPasswordSejourToPartenaireAndAcco($sejourfind->getId());
  2032.         //      $SejourService->EnvoyerEmailNewPartenaire($sejourfind->getIdPartenaire());
  2033.         $providerKey 'main_Acommpa'// your firewall name
  2034.         $token = new UsernamePasswordToken($usernull$providerKey$user->getRoles());
  2035.         $this->container->get('security.token_storage')->setToken($token);
  2036.         $this->session->set('Sejour'$sejourfind->getId());
  2037.         // Redirection directe vers DetailsSejourAcc (galerie) au lieu du dashboard
  2038.         return $this->redirectToRoute('DetailsSejourAcc');
  2039.         //return $this->redirectToRoute('Mon_Compte_Activer_Acompa');
  2040.     }
  2041.     /**
  2042.      * @Route("/Accompagnateur/LivrePhotos", name="LivrePhotosAccom")
  2043.      */
  2044.     public function EditionLivrePhotosAccompagnateur()
  2045.     {
  2046.         $SEjourService $this->sejourService;
  2047.         $userId $this->getUser()->getId();
  2048.         $session $this->session;
  2049.         $session->set('pageMenu''');
  2050.         $idSejour $session->get("Sejour");
  2051.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2052.         $em $this->em;
  2053.         $clipart null;
  2054.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2055.         $listerandom $listeattachlikephoto;
  2056.         $random true;
  2057.         $allpagesResult = array();
  2058.         $tabacc = array();
  2059.         $tabacc1 = array();
  2060.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'randomLivre']);
  2061.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2062.         $idAcc $sejour->getIdAcommp();
  2063.         $part $sejour->getIdPartenaire();
  2064.         $nompart $part->getUsername();
  2065.         $logopart $part->getLogourl();
  2066.         foreach ($AllPages as $p) {
  2067.             $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  2068.             $rr "";
  2069.             $elemPath "";
  2070.             $elemId "";
  2071.             for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  2072.                 if ($i sizeof($arrayexploded)) {
  2073.                     if (sizeof($listerandom) == 0) {
  2074.                         $listerandom $SEjourService->getlikephotosejour($userId$idSejour);
  2075.                     }
  2076.                     $arrayRsRandom $this->random_function($listerandom);
  2077.                     array_push($tabacc$arrayRsRandom['idelem']);
  2078.                     $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  2079.                     unset($listerandom[$arrayRsRandom['elem']]);
  2080.                 } else {
  2081.                     $rr $rr $arrayexploded[$i];
  2082.                 }
  2083.                 $listerandom $listerandom;
  2084.             }
  2085.             $resultFinal $rr;
  2086.             $p->setCouleurbordure($resultFinal);
  2087.             array_push($allpagesResult$p);
  2088.         }
  2089.         $tabacc1 array_count_values($tabacc);
  2090.         $AllPages $allpagesResult;
  2091.         return $this->render('Accompagnateur/NewLivre3.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  2092.     }
  2093.     /**
  2094.      * @Route("/Accompagnateur/LivrePhotos3", name="LivrePhotosAccom3")
  2095.      */
  2096.     public function EditionLivrePhotosAccompagnateur3()
  2097.     {
  2098.         $SEjourService $this->sejourService;
  2099.         $userId $this->getUser()->getId();
  2100.         $session $this->session;
  2101.         $session->set('pageMenu''');
  2102.         $idSejour $session->get("Sejour");
  2103.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2104.         $em $this->em;
  2105.         $clipart null;
  2106.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2107.         $listerandom $listeattachlikephoto;
  2108.         $random true;
  2109.         $allpagesResult = array();
  2110.         $tabacc = array();
  2111.         $tabacc1 = array();
  2112.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'randomLivre']);
  2113.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2114.         $idAcc $sejour->getIdAcommp();
  2115.         $part $sejour->getIdPartenaire();
  2116.         $nompart $part->getUsername();
  2117.         $logopart $part->getLogourl();
  2118.         foreach ($AllPages as $p) {
  2119.             $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  2120.             $rr "";
  2121.             $elemPath "";
  2122.             $elemId "";
  2123.             for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  2124.                 if ($i sizeof($arrayexploded)) {
  2125.                     if (sizeof($listerandom) == 0) {
  2126.                         $listerandom $SEjourService->getlikephotosejour($userId$idSejour);
  2127.                     }
  2128.                     $arrayRsRandom $this->random_function($listerandom);
  2129.                     array_push($tabacc$arrayRsRandom['idelem']);
  2130.                     $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  2131.                     unset($listerandom[$arrayRsRandom['elem']]);
  2132.                 } else {
  2133.                     $rr $rr $arrayexploded[$i];
  2134.                 }
  2135.                 $listerandom $listerandom;
  2136.             }
  2137.             $resultFinal $rr;
  2138.             $p->setCouleurbordure($resultFinal);
  2139.             array_push($allpagesResult$p);
  2140.         }
  2141.         $tabacc1 array_count_values($tabacc);
  2142.         $AllPages $allpagesResult;
  2143.         return $this->render('Accompagnateur/NewLivre3.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  2144.     }
  2145.     /**
  2146.      * @Route("Accompagnateur/LivrePhotos/{idAlbm}", name="EditionlivrefrompanierAccompagnateur")
  2147.      */
  2148.     public function EditionLivrePhotosAccompagnateurparId($idAlbm)
  2149.     {
  2150.         $SEjourService $this->sejourService;
  2151.         $userId $this->getUser()->getId();
  2152.         $user $this->getUser();
  2153.         $session $this->session;
  2154.         $session->set('pageMenu''');
  2155.         $idSejour $session->get("Sejour");
  2156.         $produit $session->get("produit");
  2157.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2158.         $em $this->em;
  2159.         $clipart null;
  2160.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2161.         $random false;
  2162.         $Albumproduct $em->getRepository(Produit::class)->find($idAlbm);
  2163.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2164.         $allpagesResult = array();
  2165.         $tabacc = array();
  2166.         $tabacc1 = array();
  2167.         foreach ($AllPages as $page) {
  2168.             $pageJ json_decode($page->getCouleurbordure());
  2169.             $pageDec json_decode($pageJ[0]);
  2170.             $attache json_decode($pageDec->attache);
  2171.             if (isset($attache[0])) {
  2172.                 $attachDec json_decode($attache[0]);
  2173.             }
  2174.             //var_dump($attachDec);
  2175.             //var_dump(json_decode($attachDec->id));
  2176.             if (isset($attachDec->id) && json_decode($attachDec->id) !== null && $attachDec->id !== '') {
  2177.                 $idAttach json_decode($attachDec->id);
  2178.                 array_push($tabacc$idAttach);
  2179.             }
  2180.         }
  2181.         $tabacc1 array_count_values($tabacc);
  2182.         $part $sejour->getIdPartenaire();
  2183.         $nompart $part->getUsername();
  2184.         $logopart $part->getLogourl();
  2185.         $session->set('produit'$Albumproduct->gettype());
  2186.         $version $Albumproduct->getVersion();
  2187.         if ($version === 'new') {
  2188.             return $this->render('Accompagnateur/NewLivre3.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  2189.         } else {
  2190.             return $this->render('Accompagnateur/NewLivre3.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  2191.         }
  2192.     }
  2193.     /**
  2194.      * @Route("/Accompagnateur/saveLivrePhotos", name="saveLivrePhotosAccompagnateur")
  2195.      */
  2196.     public function saveLivrePhotos(Request $request)
  2197.     {
  2198.         $session $this->session;
  2199.         $serviceuser $this->etablissementService;
  2200.         $page $request->get("pages");
  2201.         $sejour $request->get("sejour");
  2202.         $prodid $request->get('idProd');
  2203.         $nomprod $request->get('nomprod');
  2204.         $version $request->get('new');
  2205.         $user $this->getUser();
  2206.         $produitcondition $session->get("produit");
  2207.         $produit $session->get("produittype");
  2208.         $produitcondss $session->get('produitconditionAlbum');
  2209.         $Album $serviceuser->saveOrUpdateLivreParent($page$user$sejour$prodid$produitcondss$nomprod$version);
  2210.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2211.         return new response('done');
  2212.     }
  2213.     /**
  2214.      * @Route("/Accompagnateur/saveLivrePhotosPanier", name="saveLivrePhotosPanierAccompagnateur")
  2215.      */
  2216.     public function saveLivrePhotospuisPanier(Request $request)
  2217.     {
  2218.         $em $this->em;
  2219.         $session $this->session;
  2220.         $produittype $session->get("produit");
  2221.         $produit $session->get("produittype");
  2222.         $serviceuser $this->etablissementService;
  2223.         $page $request->get("pages");
  2224.         $sejour $request->get("sejour");
  2225.         $prodid $request->get('idProd');
  2226.         $nomprod $request->get('nomprod');
  2227.         $version $request->get('new');
  2228.         $user $this->getUser();
  2229.         $Album $serviceuser->savelivreParent($page$user$sejour$prodid$produittype$nomprod$version);
  2230.         $inser false;
  2231.         $session $this->session;
  2232.         $Products $session->get("Panier_Acompa");
  2233.         $produit $em->getRepository(Produit::class)->find($Album->getId());
  2234.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  2235.         $user $this->getUser();
  2236.         $typeref $em->getRepository(Typeref::class)->find(8);
  2237.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  2238.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  2239.         //fin
  2240.         if ($panierTrace == null) {
  2241.             $panierTrace = new Panier();
  2242.             $dateNow = new \Datetime();
  2243.             $panierTrace->setDateCreation($dateNow);
  2244.             $panierTrace->setCreerPar($user);
  2245.             $panierTrace->setStatut($statutPanier);
  2246.             $em->getManager()->persist($panierTrace);
  2247.             $em->getManager()->flush();
  2248.         }
  2249.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  2250.         if ($Products == null) {
  2251.             $Products = [];
  2252.         }
  2253.         foreach ($Products as $key => $p) {
  2254.             if ($p['id'] == $produit->getId()) {
  2255.                 $inser true;
  2256.                 $Products[$key]['qte'] = $p['qte'] + 1;
  2257.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  2258.             }
  2259.         }
  2260.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  2261.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  2262.         if ($panierProduit == null) {
  2263.             $panierProduit = new PanierProduit();
  2264.             $panierProduit->setIdProduit($produit);
  2265.             $panierProduit->setIdPanier($panierTrace);
  2266.             $em->getManager()->persist($panierProduit);
  2267.             $em->getManager()->flush();
  2268.         }
  2269.         //fin
  2270.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  2271.         $oldQte $panierProduit->getQuantite();
  2272.         $newQte $oldQte 1;
  2273.         $panierProduit->setQuantite($newQte);
  2274.         $oldTotal $panierProduit->getPrixTotal();
  2275.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  2276.         $panierProduit->setPrixTotal($newTotal);
  2277.         $em->getManager()->persist($panierProduit);
  2278.         $em->getManager()->flush();
  2279.         //fin
  2280.         if ($inser === false) {
  2281.             $p = [];
  2282.             $p["id"] = $produit->getId();
  2283.             $p["nom"] = $produit->getType()->getLabeletype();
  2284.             $p["ident"] = $produit->getLabele();
  2285.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  2286.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  2287.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  2288.             $p["condition"] = $produit->getIdConditionnement()->getId();
  2289.             $p["statut"] = $produit->getStatut();
  2290.             $p["qte"] = 1;
  2291.             array_push($Products$p);
  2292.         }
  2293.         $session->set('Panier_Acompa'$Products);
  2294.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2295.         return new response('done');
  2296.     }
  2297.     /**
  2298.      * @Route("Accompagnateur/AjoutPochettePhotos/{nbr}", name="AjoutPochettePhotosAccompagnateur")
  2299.      */
  2300.     public function AjoutPochettePhotosAccompagnateur($nbr)
  2301.     {
  2302.         $SEjourService $this->sejourService;
  2303.         $userId $this->getUser()->getId();
  2304.         $user $this->getUser();
  2305.         $session $this->session;
  2306.         $session->set('pageMenu''');
  2307.         $idSejour $session->get("Sejour");
  2308.         $produitcondition $session->get("produit");
  2309.         $produit $session->get("produittype");
  2310.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2311.         $em $this->em;
  2312.         $clipart $em->getRepository(Clipart::class)->findAll();
  2313.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2314.         $listerandom $listeattachlikephoto;
  2315.         $AllPagesAcc null;
  2316.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'RandomPochette' $nbr]);
  2317.         $random true;
  2318.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2319.         $idAcc $sejour->getIdAcommp();
  2320.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  2321.         $part $sejour->getIdPartenaire();
  2322.         $nompart $part->getUsername();
  2323.         $logopart $part->getLogourl();
  2324.         if ($albumAcc != null and $albumAcc != "") {
  2325.             $AllPagesAcc $em->getRepository(Page::class)->findBy(['idproduit' => $albumAcc]);
  2326.         }
  2327.         $allpagesResult = array();
  2328.         $j 0;
  2329.         if ($random == true) {
  2330.             foreach ($AllPages as $p) {
  2331.                 $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  2332.                 //                var_dump($arrayexploded);
  2333.                 $rr "";
  2334.                 $elemPath "";
  2335.                 $elemId "";
  2336.                 for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  2337.                     if ($i sizeof($arrayexploded)) {
  2338.                         if (sizeof($listerandom) == 0) {
  2339.                             $listerandom $listeattachlikephoto;
  2340.                         }
  2341.                         $arrayRsRandom $this->random_functionPhoto($listerandom$j);
  2342.                         $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  2343.                         unset($listerandom[$arrayRsRandom['elem']]);
  2344.                     } else {
  2345.                         $rr $rr $arrayexploded[$i];
  2346.                     }
  2347.                     $listerandom $listerandom;
  2348.                 }
  2349.                 $resultFinal $rr;
  2350.                 $p->setCouleurbordure($resultFinal);
  2351.                 array_push($allpagesResult$p);
  2352.                 if ($j sizeof($listeattachlikephoto) - 1) {
  2353.                     $j $j 1;
  2354.                 } else {
  2355.                     $j 0;
  2356.                 }
  2357.             }
  2358.             $AllPages $allpagesResult;
  2359.         }
  2360.         return $this->render('Accompagnateur/PochettePhotos.html.twig', ["nbr" => $nbr"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'albumAcc' => $albumAcc'AllPagesAcc' => $AllPagesAcc'random' => $random]);
  2361.     }
  2362.     /**
  2363.      * @Route("/Accompagnateur/AjoutPochettePhotosAccompgnateur_Fav/{nbr}", name="NewPochettePhotoAcompagnateurFavoris")
  2364.      */
  2365.     public function NewPochettePhotoAcompagnateurFavoris($nbr)
  2366.     {
  2367.         $SEjourService $this->sejourService;
  2368.         $user $this->getUser();
  2369.         $userId $this->getUser()->getId();
  2370.         $session $this->get('session');
  2371.         $session->set('pageMenu''');
  2372.         $idSejour $session->get("Sejour");
  2373.         $produitcondition $session->get("produit");
  2374.         $produit $session->get("produittype");
  2375.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2376.         $em $this->getDoctrine()->getManager();
  2377.         $listeattachlikephoto $em->getRepository(Likephoto::class)->findBy(['idUser' =>  $userId'idSejour' =>  $idSejour]);
  2378.         foreach ($listeattachlikephoto as $photo) {
  2379.             $idattach $photo->getIdSejourAttchment();
  2380.             $SejattachPhoto  $photo->getIdSejourAttchment();
  2381.             $urlPhoto  =   $SejattachPhoto->getIdAttchment()->getPath();
  2382.             //$urlPhoto =   $attachPhoto->getPath();
  2383.             $new_url str_replace('upload/''upload/f_auto,q_auto,h_900/l_Logo5Sur5White_nh6tyk,o_10,fl_relative.tiled/',  $urlPhoto);
  2384.             $photosData[] = [
  2385.                 'id' => $photo->getId(),
  2386.                 'url' =>    $new_url,
  2387.                 'caption' => "",
  2388.             ];
  2389.         }
  2390.         $nbLikes count($listeattachlikephoto);
  2391.         $photosDataJSON json_encode($photosData);
  2392.         return $this->render('/Accompagnateur/PochettePhotosLikes.html.twig', ["nbr" => $nbr"sejour" => $sejour,  "nbLikes" => $nbLikes'photosFav' =>    $photosDataJSON]);
  2393.     }
  2394.     /**
  2395.      * @Route("Accompagnateur/AjoutPhotosRetros/{nbr}", name="AjoutPhotosRetrosAccompagnateur")
  2396.      */
  2397.     public function AjoutPhotosRetrosAccompagnateur($nbr)
  2398.     {
  2399.         $SEjourService $this->sejourService;
  2400.         $userId $this->getUser()->getId();
  2401.         $user $this->getUser();
  2402.         $session $this->session;
  2403.         $session->set('pageMenu''');
  2404.         $idSejour $session->get("Sejour");
  2405.         $produitcondition $session->get("produit");
  2406.         $produit $session->get("produittype");
  2407.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2408.         $em $this->em;
  2409.         $clipart $em->getRepository(Clipart::class)->findAll();
  2410.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2411.         $listerandom $listeattachlikephoto;
  2412.         $AllPagesAcc null;
  2413.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'RandomPochette' $nbr]);
  2414.         $random true;
  2415.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2416.         $idAcc $sejour->getIdAcommp();
  2417.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  2418.         $part $sejour->getIdPartenaire();
  2419.         $nompart $part->getUsername();
  2420.         $logopart $part->getLogourl();
  2421.         if ($albumAcc != null and $albumAcc != "") {
  2422.             $AllPagesAcc $em->getRepository(Page::class)->findBy(['idproduit' => $albumAcc]);
  2423.         }
  2424.         $allpagesResult = array();
  2425.         $j 0;
  2426.         if ($random == true) {
  2427.             foreach ($AllPages as $p) {
  2428.                 $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  2429.                 //                var_dump($arrayexploded);
  2430.                 $rr "";
  2431.                 $elemPath "";
  2432.                 $elemId "";
  2433.                 for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  2434.                     if ($i sizeof($arrayexploded)) {
  2435.                         if (sizeof($listerandom) == 0) {
  2436.                             $listerandom $listeattachlikephoto;
  2437.                         }
  2438.                         $arrayRsRandom $this->random_functionPhoto($listerandom$j);
  2439.                         $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  2440.                         unset($listerandom[$arrayRsRandom['elem']]);
  2441.                     } else {
  2442.                         $rr $rr $arrayexploded[$i];
  2443.                     }
  2444.                     $listerandom $listerandom;
  2445.                 }
  2446.                 $resultFinal $rr;
  2447.                 $p->setCouleurbordure($resultFinal);
  2448.                 array_push($allpagesResult$p);
  2449.                 if ($j sizeof($listeattachlikephoto) - 1) {
  2450.                     $j $j 1;
  2451.                 } else {
  2452.                     $j 0;
  2453.                 }
  2454.             }
  2455.             $AllPages $allpagesResult;
  2456.         }
  2457.         return $this->render('Accompagnateur/PhotosRetros.html.twig', ["nbr" => $nbr"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'albumAcc' => $albumAcc'AllPagesAcc' => $AllPagesAcc'random' => $random]);
  2458.     }
  2459.     /**
  2460.      * @Route("Accompagnateur/Calendrier", name="CalendrierAccompagnateur")
  2461.      */
  2462.     public function CalendrierAccompagnateur()
  2463.     {
  2464.         $SEjourService $this->sejourService;
  2465.         $userId $this->getUser()->getId();
  2466.         $user $this->getUser();
  2467.         $session $this->session;
  2468.         $session->set('pageMenu''');
  2469.         $idSejour $session->get("Sejour");
  2470.         $produitcondition $session->get("produit");
  2471.         $produit $session->get("produittype");
  2472.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2473.         $em $this->em;
  2474.         $clipart $em->getRepository(Clipart::class)->findAll();
  2475.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2476.         $listerandom $listeattachlikephoto;
  2477.         $AllPagesAcc null;
  2478.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['labele' => 'randomcalendrier']);
  2479.         $random true;
  2480.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2481.         $idAcc $sejour->getIdAcommp();
  2482.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  2483.         $part $sejour->getIdPartenaire();
  2484.         $nompart $part->getUsername();
  2485.         $logopart $part->getLogourl();
  2486.         if ($albumAcc != null and $albumAcc != "") {
  2487.             $AllPagesAcc $em->getRepository(Page::class)->findBy(['idproduit' => $albumAcc]);
  2488.         }
  2489.         $allpagesResult = array();
  2490.         $tabacc = array();
  2491.         $tabacc1 = array();
  2492.         if ($random == true) {
  2493.             foreach ($AllPages as $p) {
  2494.                 $arrayexploded preg_split('[randomid|randompath]'$p->getCouleurbordure());
  2495.                 $rr "";
  2496.                 $elemPath "";
  2497.                 $elemId "";
  2498.                 for ($i 0$i sizeof($arrayexploded); $i $i 2) {
  2499.                     if ($i sizeof($arrayexploded)) {
  2500.                         if (sizeof($listerandom) == 0) {
  2501.                             $listerandom $SEjourService->getlikephotosejour($userId$idSejour);
  2502.                         }
  2503.                         $arrayRsRandom $this->random_function($listerandom);
  2504.                         array_push($tabacc$arrayRsRandom['idelem']);
  2505.                         $rr $rr $arrayexploded[$i] . $arrayRsRandom['idelem'] . $arrayexploded[$i 1] . $arrayRsRandom['pathelem'];
  2506.                         unset($listerandom[$arrayRsRandom['elem']]);
  2507.                     } else {
  2508.                         $rr $rr $arrayexploded[$i];
  2509.                     }
  2510.                     $listerandom $listerandom;
  2511.                 }
  2512.                 $resultFinal $rr;
  2513.                 $p->setCouleurbordure($resultFinal);
  2514.                 array_push($allpagesResult$p);
  2515.             }
  2516.             $tabacc1 array_count_values($tabacc);
  2517.             $AllPages $allpagesResult;
  2518.         }
  2519.         return $this->render('Accompagnateur/Calendrier.html.twig', ["tabacc" => $tabacc1"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'albumAcc' => $albumAcc'AllPagesAcc' => $AllPagesAcc'random' => $random]);
  2520.     }
  2521.     /**
  2522.      * @Route("/Accompagnateur/SaveCalendrier", name="SaveCalendrierAccompagnateur")
  2523.      */
  2524.     public function SaveCalendrierAccompagnateur(Request $request)
  2525.     {
  2526.         $session $this->session;
  2527.         $serviceuser $this->etablissementService;
  2528.         $page $request->get("pages");
  2529.         $sejour $request->get("sejour");
  2530.         $prodid $request->get('idProd');
  2531.         $nomprod $request->get('nomprod');
  2532.         $nbr $request->get('nbr');
  2533.         $user $this->getUser();
  2534.         $nbr strval($nbr);
  2535.         $produittype $session->get("produit");
  2536.         $produit $session->get("produittype");
  2537.         $Album $serviceuser->SaveCalendrierParent($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  2538.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2539.         return new response('done');
  2540.     }
  2541.     /**
  2542.      * @Route("Accompagnateur/ModificationCalendrier/{id}", name="EditionCalendrierAccompagnateurfrompanier")
  2543.      */
  2544.     public function EditionCalendrierfrompanier($id)
  2545.     {
  2546.         $SEjourService $this->sejourService;
  2547.         $userId $this->getUser()->getId();
  2548.         $user $this->getUser();
  2549.         $session $this->session;
  2550.         $session->set('pageMenu''');
  2551.         $idSejour $session->get("Sejour");
  2552.         $produitcondition $session->get("produit");
  2553.         $produit $session->get("produittype");
  2554.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2555.         $em $this->em;
  2556.         $clipart $em->getRepository(Clipart::class)->findAll();
  2557.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2558.         $random false;
  2559.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['id' => $id]);
  2560.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2561.         $part $sejour->getIdPartenaire();
  2562.         $nompart $part->getUsername();
  2563.         $logopart $part->getLogourl();
  2564.         return $this->render('Accompagnateur/Calendrier.html.twig', ["nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'random' => $random]);
  2565.     }
  2566.     /**
  2567.      * @Route("/Accompagnateur/SaveCommandeCalendrier", name="SaveCommandeCalendrierAccompagnateur")
  2568.      */
  2569.     public function SaveCommandeCalendrierAccompagnateur(Request $request)
  2570.     {
  2571.         $em $this->em;
  2572.         $session $this->session;
  2573.         $serviceuser $this->etablissementService;
  2574.         $page $request->get("pages");
  2575.         $sejour $request->get("sejour");
  2576.         $prodid $request->get('idProd');
  2577.         $nomprod $request->get('nomprod');
  2578.         $nbr $request->get('nbr');
  2579.         $em $this->em;
  2580.         $user $this->getUser();
  2581.         $nbr strval($nbr);
  2582.         $produittype $session->get("produit");
  2583.         $produit $session->get("produittype");
  2584.         $Album $serviceuser->SaveCalendrierParent($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  2585.         $inser false;
  2586.         $Products $session->get("Panier_Acompa");
  2587.         $produit $em->getRepository(Produit::class)->find($Album->getId());
  2588.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  2589.         $user $this->getUser();
  2590.         $typeref $em->getRepository(Typeref::class)->find(8);
  2591.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  2592.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  2593.         //fin
  2594.         if ($panierTrace == null) {
  2595.             $panierTrace = new Panier();
  2596.             $dateNow = new \Datetime();
  2597.             $panierTrace->setDateCreation($dateNow);
  2598.             $panierTrace->setCreerPar($user);
  2599.             $panierTrace->setStatut($statutPanier);
  2600.             $em->getManager()->persist($panierTrace);
  2601.             $em->getManager()->flush();
  2602.         }
  2603.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  2604.         if ($Products == null) {
  2605.             $Products = [];
  2606.         }
  2607.         foreach ($Products as $key => $p) {
  2608.             if ($p['id'] == $produit->getId()) {
  2609.                 $inser true;
  2610.                 $Products[$key]['qte'] = $p['qte'] + 1;
  2611.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  2612.             }
  2613.         }
  2614.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  2615.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  2616.         if ($panierProduit == null) {
  2617.             $panierProduit = new PanierProduit();
  2618.             $panierProduit->setIdProduit($produit);
  2619.             $panierProduit->setIdPanier($panierTrace);
  2620.             $em->getManager()->persist($panierProduit);
  2621.             $em->getManager()->flush();
  2622.         }
  2623.         //fin
  2624.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  2625.         $oldQte $panierProduit->getQuantite();
  2626.         $newQte $oldQte 1;
  2627.         $panierProduit->setQuantite($newQte);
  2628.         $oldTotal $panierProduit->getPrixTotal();
  2629.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  2630.         $panierProduit->setPrixTotal($newTotal);
  2631.         $em->getManager()->persist($panierProduit);
  2632.         $em->getManager()->flush();
  2633.         //fin
  2634.         if ($inser === false) {
  2635.             $p = [];
  2636.             $p["id"] = $produit->getId();
  2637.             $p["nom"] = $produit->getType()->getLabeletype();
  2638.             $p["ident"] = $produit->getLabele();
  2639.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  2640.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  2641.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  2642.             $p["condition"] = $produit->getIdConditionnement()->getId();
  2643.             $p["statut"] = $produit->getStatut();
  2644.             $p["qte"] = 1;
  2645.             array_push($Products$p);
  2646.         }
  2647.         $session->set('Panier_Acompa'$Products);
  2648.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2649.         return new response('done');
  2650.     }
  2651.     /**
  2652.      * @Route("Accompagnateur/ModificationPochettePhotos/{nbr}/{id}", name="EditionPochettefrompanierAccompagnateur")
  2653.      */
  2654.     public function EditionPochettefrompanierAccompagnateur($nbr$id)
  2655.     {
  2656.         $SEjourService $this->sejourService;
  2657.         $userId $this->getUser()->getId();
  2658.         $user $this->getUser();
  2659.         $session $this->session;
  2660.         $session->set('pageMenu''');
  2661.         $idSejour $session->get("Sejour");
  2662.         $produitcondition $session->get("produit");
  2663.         $produit $session->get("produittype");
  2664.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2665.         $em $this->em;
  2666.         $clipart $em->getRepository(Clipart::class)->findAll();
  2667.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  2668.         $listerandom $listeattachlikephoto;
  2669.         $AllPagesAcc null;
  2670.         $random false;
  2671.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['id' => $id]);
  2672.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  2673.         $idAcc $sejour->getIdAcommp();
  2674.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  2675.         $part $sejour->getIdPartenaire();
  2676.         $nompart $part->getUsername();
  2677.         $logopart $part->getLogourl();
  2678.         return $this->render('Accompagnateur/PochettePhotos.html.twig', ["nbr" => $nbr"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'albumAcc' => $albumAcc'AllPagesAcc' => $AllPagesAcc'random' => $random]);
  2679.     }
  2680.     /**
  2681.      * @Route("/Accompagnateur/SavePhotosPochette", name="SavePhotosPochetteAccompagnateur")
  2682.      */
  2683.     public function SavePhotosPochetteAccompagnateur(Request $request)
  2684.     {
  2685.         $session $this->session;
  2686.         $serviceuser $this->etablissementService;
  2687.         $page $request->get("pages");
  2688.         $sejour $request->get("sejour");
  2689.         $prodid $request->get('idProd');
  2690.         $nomprod $request->get('nomprod');
  2691.         $nbr $request->get('nbr');
  2692.         $user $this->getUser();
  2693.         $nbr strval($nbr);
  2694.         $produittype $session->get("produit");
  2695.         $produit $session->get("produittype");
  2696.         $Album $serviceuser->SavePhotosPochetteParent($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  2697.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2698.         return new response('done');
  2699.     }
  2700.     /**
  2701.      * @Route("/Accompagnateur/PochetteCommandeSave", name="PochettePhotosComandeSaveAccompagnateur")
  2702.      */
  2703.     public function PochettePhotosComandeSaveAccompagnateur(Request $request)
  2704.     {
  2705.         $em $this->em;
  2706.         $session $this->session;
  2707.         $serviceuser $this->etablissementService;
  2708.         $page $request->get("pages");
  2709.         $sejour $request->get("sejour");
  2710.         $prodid $request->get('idProd');
  2711.         $nomprod $request->get('nomprod');
  2712.         $nbr $request->get('nbr');
  2713.         $user $this->getUser();
  2714.         $nbr strval($nbr);
  2715.         $produittype $session->get("produit");
  2716.         $produit $session->get("produittype");
  2717.         $Album $serviceuser->SavePhotosPochetteParent($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  2718.         $inser false;
  2719.         $Products $session->get("Panier_Acompa");
  2720.         $produit $em->getRepository(Produit::class)->find($Album->getId());
  2721.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  2722.         $user $this->getUser();
  2723.         $typeref $em->getRepository(Typeref::class)->find(8);
  2724.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  2725.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  2726.         //fin
  2727.         if ($panierTrace == null) {
  2728.             $panierTrace = new Panier();
  2729.             $dateNow = new \Datetime();
  2730.             $panierTrace->setDateCreation($dateNow);
  2731.             $panierTrace->setCreerPar($user);
  2732.             $panierTrace->setStatut($statutPanier);
  2733.             $em->getManager()->persist($panierTrace);
  2734.             $em->getManager()->flush();
  2735.         }
  2736.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  2737.         if ($Products == null) {
  2738.             $Products = [];
  2739.         }
  2740.         foreach ($Products as $key => $p) {
  2741.             if ($p['id'] == $produit->getId()) {
  2742.                 $inser true;
  2743.                 $Products[$key]['qte'] = $p['qte'] + 1;
  2744.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  2745.             }
  2746.         }
  2747.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  2748.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  2749.         if ($panierProduit == null) {
  2750.             $panierProduit = new PanierProduit();
  2751.             $panierProduit->setIdProduit($produit);
  2752.             $panierProduit->setIdPanier($panierTrace);
  2753.             $em->getManager()->persist($panierProduit);
  2754.             $em->getManager()->flush();
  2755.         }
  2756.         //fin
  2757.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  2758.         $oldQte $panierProduit->getQuantite();
  2759.         $newQte $oldQte 1;
  2760.         $panierProduit->setQuantite($newQte);
  2761.         $oldTotal $panierProduit->getPrixTotal();
  2762.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  2763.         $panierProduit->setPrixTotal($newTotal);
  2764.         $em->getManager()->persist($panierProduit);
  2765.         $em->getManager()->flush();
  2766.         //fin
  2767.         if ($inser === false) {
  2768.             $p = [];
  2769.             $p["id"] = $produit->getId();
  2770.             $p["nom"] = $produit->getType()->getLabeletype();
  2771.             $p["ident"] = $produit->getLabele();
  2772.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  2773.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  2774.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  2775.             $p["condition"] = $produit->getIdConditionnement()->getId();
  2776.             $p["statut"] = $produit->getStatut();
  2777.             $p["qte"] = 1;
  2778.             array_push($Products$p);
  2779.         }
  2780.         $session->set('Panier_Acompa'$Products);
  2781.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  2782.         return new response('done');
  2783.     }
  2784.     /**
  2785.      * @Route("/Accompagnateur/AddPochetteAuPanier", name="AddPochetteAuPanierAccompagnateur")
  2786.      */
  2787.     public function AddPochetteAuPanierAccompagnateur(Request $request)
  2788.     {
  2789.         $em $this->em;
  2790.         $session $this->session;
  2791.         $serviceuser $this->etablissementService;
  2792.         $page $request->get("photos");
  2793.         $sejour $request->get("sejour");
  2794.         $nbr $request->get('nbr');
  2795.         $user $this->getUser();
  2796.         $nbr strval($nbr);
  2797.         //Enregistrement des infos de la pochette dans un produit et les photos dans des pages avec JSON
  2798.         $Pochette_photos $serviceuser->photosPochette_Nouvelle($page$user$sejour$nbr);
  2799.         $inser false;
  2800.         $Products $session->get("Panier_Acompa");
  2801.         $produit $em->getRepository(Produit::class)->find($Pochette_photos->getId());
  2802.         // Rechercher si l'utilisateur a déja un panier avec statut créer dans la bd, sinon on crée un panier
  2803.         $typeref $em->getRepository(Typeref::class)->find(8);
  2804.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  2805.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  2806.         if ($panierTrace == null) {
  2807.             $panierTrace = new Panier();
  2808.             $dateNow = new \Datetime();
  2809.             $panierTrace->setDateCreation($dateNow);
  2810.             $panierTrace->setCreerPar($user);
  2811.             $panierTrace->setStatut($statutPanier);
  2812.             $em->getManager()->persist($panierTrace);
  2813.             $em->getManager()->flush();
  2814.         }
  2815.         // Vérifier si le produit existe déjà dans le panier en session
  2816.         if ($Products == null) {
  2817.             $Products = [];
  2818.         }
  2819.         foreach ($Products as $key => $p) {
  2820.             if ($p['id'] == $produit->getId()) {
  2821.                 $inser true;
  2822.                 $Products[$key]['qte'] = $p['qte'] + 1;
  2823.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  2824.             }
  2825.         }
  2826.         // Rechercher si le produit existe déjà dans PanierProduit
  2827.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  2828.         if ($panierProduit == null) {
  2829.             $panierProduit = new PanierProduit();
  2830.             $panierProduit->setIdProduit($produit);
  2831.             $panierProduit->setIdPanier($panierTrace);
  2832.             $panierProduit->setQuantite(1);
  2833.             $panierProduit->setPrixTotal($produit->getIdConditionnement()->getMontantTTC());
  2834.             $em->getManager()->persist($panierProduit);
  2835.             $em->getManager()->flush();
  2836.         } else {
  2837.             // Ajouter un au produit et modifier prixTotal
  2838.             $oldQte $panierProduit->getQuantite();
  2839.             $newQte $oldQte 1;
  2840.             $panierProduit->setQuantite($newQte);
  2841.             $oldTotal $panierProduit->getPrixTotal();
  2842.             $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  2843.             $panierProduit->setPrixTotal($newTotal);
  2844.             $em->getManager()->persist($panierProduit);
  2845.             $em->getManager()->flush();
  2846.         }
  2847.         // Si le produit n'existe pas dans le panier en session, on l'ajoute
  2848.         if ($inser === false) {
  2849.             $p = [];
  2850.             $p["id"] = $produit->getId();
  2851.             $p["nom"] = $produit->getType()->getLabeletype();
  2852.             $p["ident"] = $produit->getLabele();
  2853.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  2854.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  2855.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  2856.             $p["condition"] = $produit->getIdConditionnement()->getId();
  2857.             $p["qte"] = 1;
  2858.             array_push($Products$p);
  2859.         }
  2860.         $session->set('Panier_Acompa'$Products);
  2861.         // Enregistrement pour email de relance
  2862.         //   $dateNow = new \Datetime();
  2863.         //   $userEmail = $user->getEmail();
  2864.         //   $this->EmailServie->SaveMailRelancePanier($userEmail);
  2865.         // Commenté comme dans la fonction parent
  2866.         // $this->EmailServie->MailRelancePanier($userEmail);
  2867.         return new response('done');
  2868.     }
  2869.     /**
  2870.      * @Route("Accompagnateur/AjoutRetroPhotosAccomp_Fav/{nbr}", name="AjoutRetroPhotosAccomp_Favoris")
  2871.      */
  2872.     public function AjoutRetroPhotosAccomp_Fav($nbr)
  2873.     {
  2874.         $SEjourService $this->sejourService;
  2875.         $user $this->getUser();
  2876.         $userId $this->getUser()->getId();
  2877.         $session $this->get('session');
  2878.         $session->set('pageMenu''');
  2879.         $idSejour $session->get("Sejour");
  2880.         $produitcondition $session->get("produit");
  2881.         $produit $session->get("produittype");
  2882.         $sejour $SEjourService->getsejourpourparent($idSejour);
  2883.         $em $this->getDoctrine()->getManager();
  2884.         $listeattachlikephoto $em->getRepository(Likephoto::class)->findBy(['idUser' =>  $userId'idSejour' =>  $idSejour]);
  2885.         $photosData = [];
  2886.         foreach ($listeattachlikephoto as $photo) {
  2887.             $SejattachPhoto $photo->getIdSejourAttchment();
  2888.             $urlPhoto $SejattachPhoto->getIdAttchment()->getPath();
  2889.             // Apply the same transformations as parent function
  2890.             $new_url str_replace(
  2891.                 'upload/',
  2892.                 'upload/f_auto,q_auto,h_900/l_Logo5Sur5White_nh6tyk,o_10,fl_relative.tiled/',
  2893.                 $urlPhoto
  2894.             );
  2895.             $photosData[] = [
  2896.                 'id' => $photo->getId(),
  2897.                 'url' => $new_url,
  2898.                 'caption' => "",
  2899.             ];
  2900.         }
  2901.         $nbLikes count($listeattachlikephoto);
  2902.         // Convertir le tableau PHP en JSON
  2903.         $photosDataJSON json_encode($photosData);
  2904.         dump($photosDataJSON);
  2905.         return $this->render('Accompagnateur/PhotosRetros.html.twig', ["nbr" => $nbr"sejour" => $sejour,  "nbLikes" => $nbLikes'photosFav' =>    $photosDataJSON]);
  2906.     }
  2907.     /**
  2908.      * @Route("/Accompagnateur/AddRetroAuPanier", name="AddRetroAuPanierAccompagnateur", methods={"POST"})
  2909.      */
  2910.     public function AddRetroAuPanierAccompagnateur(Request $request)
  2911.     {
  2912.         $em       $this->em;
  2913.         $session  $this->session;
  2914.         $user     $this->getUser();
  2915.         $service  $this->etablissementService;
  2916.         $photos   $request->get('photos');
  2917.         $sejourId $request->get('sejour');
  2918.         $nbr      strval($request->get('nbr'));
  2919.         // Create the new "Retro" product + store pages
  2920.         $RetroProduit $service->photosRetro_Nouvelle($photos$user$sejourId$nbr);
  2921.         // Handle cart logic
  2922.         $inser false;
  2923.         $Products $session->get("Panier_Acompa"); // Note the different session key for accompagnateur
  2924.         if (!$Products) {
  2925.             $Products = [];
  2926.         }
  2927.         // Get the newly created product
  2928.         $produit $em->getRepository(Produit::class)->find($RetroProduit->getId());
  2929.         // Check if a "Panier" with status "creer" for this user exists, or create one
  2930.         $typeref $em->getRepository(Typeref::class)->find(8);
  2931.         $statutPanier $em->getRepository(Ref::class)->findOneBy([
  2932.             "libiller" => "creer",
  2933.             "typeref" => $typeref
  2934.         ]);
  2935.         $panierTrace $em->getRepository(Panier::class)->findOneBy([
  2936.             "creerPar" => $user,
  2937.             "statut"   => $statutPanier
  2938.         ]);
  2939.         if (!$panierTrace) {
  2940.             $panierTrace = new Panier();
  2941.             $panierTrace->setDateCreation(new \DateTime());
  2942.             $panierTrace->setCreerPar($user);
  2943.             $panierTrace->setStatut($statutPanier);
  2944.             $em->getManager()->persist($panierTrace);
  2945.             $em->getManager()->flush();
  2946.         }
  2947.         // Check if this product already exists in session Products
  2948.         foreach ($Products as $key => $p) {
  2949.             if ($p['id'] == $produit->getId()) {
  2950.                 $inser true;
  2951.                 $Products[$key]['qte'] += 1;
  2952.                 $Products[$key]['mnt'] += $produit->getIdConditionnement()->getMontantTTC();
  2953.             }
  2954.         }
  2955.         // Check if it exists in PanierProduit table
  2956.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy([
  2957.             "idProduit" => $produit,
  2958.             "idPanier"  => $panierTrace
  2959.         ]);
  2960.         if (!$panierProduit) {
  2961.             $panierProduit = new PanierProduit();
  2962.             $panierProduit->setIdProduit($produit);
  2963.             $panierProduit->setIdPanier($panierTrace);
  2964.             $panierProduit->setQuantite(0); // Will be incremented below
  2965.             $panierProduit->setPrixTotal(0); // Will be updated below
  2966.             $em->getManager()->persist($panierProduit);
  2967.             $em->getManager()->flush();
  2968.         }
  2969.         // Increase quantity & total
  2970.         $oldQte $panierProduit->getQuantite();
  2971.         $panierProduit->setQuantite($oldQte 1);
  2972.         $oldTotal $panierProduit->getPrixTotal();
  2973.         $panierProduit->setPrixTotal($oldTotal $produit->getIdConditionnement()->getMontantTTC());
  2974.         $em->getManager()->persist($panierProduit);
  2975.         $em->getManager()->flush();
  2976.         // If not inserted in Products, add it
  2977.         if (!$inser) {
  2978.             $p = [
  2979.                 "id"         => $produit->getId(),
  2980.                 "nom"        => $produit->getType()->getLabeletype(),
  2981.                 "ident"      => $produit->getLabele(),
  2982.                 "codesejour" => $produit->getIdsjour()->getcodeSejour(),
  2983.                 "mnt"        => $produit->getIdConditionnement()->getMontantTTC(),
  2984.                 "path"       => $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath(),
  2985.                 "condition"  => $produit->getIdConditionnement()->getId(),
  2986.                 "statut"     => $produit->getStatut(), // Include status for accompagnateur
  2987.                 "qte"        => 1
  2988.             ];
  2989.             $Products[] = $p;
  2990.         }
  2991.         // Save to session with accompagnateur's session key
  2992.         $session->set('Panier_Acompa'$Products);
  2993.         return new Response('done');
  2994.     }
  2995.     /**
  2996.      * @Route("Accompagnateur/PackPhotosNumeriqueAccomp_Favoris/{nbr}", name="PackPhotosNumeriqueAccomp_Favoris")
  2997.      */
  2998.     public function PackPhotosNumerique_Favoris($nbr)
  2999.     {
  3000.         $SEjourService $this->sejourService;
  3001.         $user $this->getUser();
  3002.         $userId $this->getUser()->getId();
  3003.         $session $this->get('session');
  3004.         $session->set('pageMenu''');
  3005.         $idSejour $session->get("Sejour");
  3006.         $produitcondition $session->get("produit");
  3007.         $produit $session->get("produittype");
  3008.         $sejour $SEjourService->getsejourpourparent($idSejour);
  3009.         $em $this->getDoctrine()->getManager();
  3010.         $listeattachlikephoto $em->getRepository(Likephoto::class)->findBy(['idUser' =>  $userId'idSejour' =>  $idSejour]);
  3011.         foreach ($listeattachlikephoto as $photo) {
  3012.             $idattach $photo->getIdSejourAttchment();
  3013.             $SejattachPhoto  $photo->getIdSejourAttchment();
  3014.             $urlPhoto  =   $SejattachPhoto->getIdAttchment()->getPath();
  3015.             //$urlPhoto =   $attachPhoto->getPath();
  3016.             $new_url str_replace('upload/''upload/f_auto,q_auto,h_900/l_Logo5Sur5White_nh6tyk,o_10,fl_relative.tiled/',  $urlPhoto);
  3017.             $photosData[] = [
  3018.                 'id' => $photo->getId(),
  3019.                 'url' =>    $new_url,
  3020.                 'caption' => "",
  3021.             ];
  3022.         }
  3023.         $nbLikes count($listeattachlikephoto);
  3024.         // Convertir le tableau PHP en JSON
  3025.         $photosDataJSON json_encode($photosData);
  3026.         return $this->render('Accompagnateur/PackPhotosNumerique_Favoris.html.twig', [
  3027.             "nbr" => $nbr,
  3028.             "sejour" => $sejour,
  3029.             "nbLikes" => $nbLikes,
  3030.             'photosFav' =>    $photosDataJSON
  3031.         ]);
  3032.     }
  3033.     /**
  3034.      * @Route("/Accompagnateur/SavePackPhotosNumeriqueComandeSaveAccomp_panier", name="SavePackPhotosNumeriqueComandeSaveAccomp_panier")
  3035.      */
  3036.     public function AddPackNumeriqueAuPanier(Request $request)
  3037.     {
  3038.         $em $this->em->getManager();
  3039.         $session $this->session;
  3040.         $serviceuser $this->etablissementService;
  3041.         $photos $request->get("photos");
  3042.         $sejour $request->get("sejour");
  3043.         $nbr $request->get('nbr');
  3044.         $user $this->getUser();
  3045.         $nbr strval($nbr);
  3046.         $nomprod "Pack Photos Numerique - " $nbr;
  3047.         // Register the product and associated photos
  3048.         $packPhotos $serviceuser->SavePackPhotosNumerique($photos$user$sejour$nbr$nomprod);
  3049.         $product $em->getRepository(Produit::class)->find($packPhotos->getId());
  3050.         // Check if user has an existing cart with "created" status
  3051.         $typeref $em->getRepository(Typeref::class)->find(8);
  3052.         $statutPanier $em->getRepository(Ref::class)->findOneBy(["libiller" => "creer""typeref" => $typeref]);
  3053.         $panierTrace $em->getRepository(Panier::class)->findOneBy(["creerPar" => $user"statut" => $statutPanier]);
  3054.         if ($panierTrace === null) {
  3055.             $panierTrace = new Panier();
  3056.             $panierTrace->setDateCreation(new \DateTime());
  3057.             $panierTrace->setCreerPar($user);
  3058.             $panierTrace->setStatut($statutPanier);
  3059.             $em->persist($panierTrace);
  3060.             $em->flush();
  3061.         }
  3062.         // Add product to cart session - Note the different session key for Accompagnateur
  3063.         $Products $session->get("Panier_Acompa", []);
  3064.         $inser false;
  3065.         foreach ($Products as $key => $p) {
  3066.             if ($p['id'] === $product->getId()) {
  3067.                 $inser true;
  3068.                 $Products[$key]['qte'] += 1;
  3069.                 $Products[$key]['mnt'] += $product->getIdConditionnement()->getMontantTTC();
  3070.             }
  3071.         }
  3072.         // Check if product exists in PanierProduit
  3073.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(["idProduit" => $product"idPanier" => $panierTrace]);
  3074.         if ($panierProduit === null) {
  3075.             $panierProduit = new PanierProduit();
  3076.             $panierProduit->setIdProduit($product);
  3077.             $panierProduit->setIdPanier($panierTrace);
  3078.             $panierProduit->setQuantite(1);
  3079.             $panierProduit->setPrixTotal($product->getIdConditionnement()->getMontantTTC());
  3080.             $em->persist($panierProduit);
  3081.             $em->flush();
  3082.         } else {
  3083.             // Update existing product quantity and total price
  3084.             $panierProduit->setQuantite($panierProduit->getQuantite() + 1);
  3085.             $panierProduit->setPrixTotal($panierProduit->getPrixTotal() + $product->getIdConditionnement()->getMontantTTC());
  3086.             $em->persist($panierProduit);
  3087.             $em->flush();
  3088.         }
  3089.         if (!$inser) {
  3090.             $p = [
  3091.                 "id" => $product->getId(),
  3092.                 "nom" => $product->getType()->getLabeletype(),
  3093.                 "ident" => $product->getLabele(),
  3094.                 "codesejour" => $product->getIdsjour()->getcodeSejour(),
  3095.                 "mnt" => $product->getIdConditionnement()->getMontantTTC(),
  3096.                 "path" => $product->getType()->getAttachements()[0]->getIdAttachement()->getPath(),
  3097.                 "condition" => $product->getIdConditionnement()->getId(),
  3098.                 "statut" => $product->getStatut(), // Include status for accompagnateur
  3099.                 "qte" => 1
  3100.             ];
  3101.             array_push($Products$p);
  3102.         }
  3103.         // Store in the accompagnateur's session key
  3104.         $session->set('Panier_Acompa'$Products);
  3105.         return new Response('done');
  3106.     }
  3107.     /**
  3108.      * @Route("/Accompagnateur/PochetcomdComandeSave", name="PochettePhotosComandeSave_panierAccompagnateur")
  3109.      */
  3110.     public function PochettePhotosComandeSave_panierAccompagnateur(Request $request)
  3111.     {
  3112.         $em $this->em;
  3113.         $session $this->session;
  3114.         $serviceuser $this->etablissementService;
  3115.         $page $request->get("pages");
  3116.         $sejour $request->get("sejour");
  3117.         $prodid $request->get('idProd');
  3118.         $nbr $request->get('nbr');
  3119.         $user $this->getUser();
  3120.         $nbr strval($nbr);
  3121.         $produittype $session->get("produit");
  3122.         $produit $session->get("produittype");
  3123.         $Album $serviceuser->SavePhotosPochetteParent($page$user$sejour$prodid$produit$produittype$nbr);
  3124.         $inser false;
  3125.         $Products $session->get("Panier_Acompa");
  3126.         $produit $em->getRepository(Produit::class)->find($Album->getId());
  3127.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  3128.         $user $this->getUser();
  3129.         $typeref $em->getRepository(Typeref::class)->find(8);
  3130.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  3131.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  3132.         //fin
  3133.         if ($panierTrace == null) {
  3134.             $panierTrace = new Panier();
  3135.             $dateNow = new \Datetime();
  3136.             $panierTrace->setDateCreation($dateNow);
  3137.             $panierTrace->setCreerPar($user);
  3138.             $panierTrace->setStatut($statutPanier);
  3139.             $em->getManager()->persist($panierTrace);
  3140.             $em->getManager()->flush();
  3141.         }
  3142.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  3143.         if ($Products == null) {
  3144.             $Products = [];
  3145.         }
  3146.         foreach ($Products as $key => $p) {
  3147.             if ($p['id'] == $produit->getId()) {
  3148.                 $inser true;
  3149.                 $Products[$key]['qte'] = $p['qte'] + 1;
  3150.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  3151.             }
  3152.         }
  3153.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  3154.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  3155.         if ($panierProduit == null) {
  3156.             $panierProduit = new PanierProduit();
  3157.             $panierProduit->setIdProduit($produit);
  3158.             $panierProduit->setIdPanier($panierTrace);
  3159.             $em->getManager()->persist($panierProduit);
  3160.             $em->getManager()->flush();
  3161.         }
  3162.         //fin
  3163.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  3164.         $oldQte $panierProduit->getQuantite();
  3165.         $newQte $oldQte 1;
  3166.         $panierProduit->setQuantite($newQte);
  3167.         $oldTotal $panierProduit->getPrixTotal();
  3168.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  3169.         $panierProduit->setPrixTotal($newTotal);
  3170.         $em->getManager()->persist($panierProduit);
  3171.         $em->getManager()->flush();
  3172.         //fin
  3173.         if ($inser === false) {
  3174.             $p = [];
  3175.             $p["id"] = $produit->getId();
  3176.             $p["nom"] = $produit->getType()->getLabeletype();
  3177.             $p["ident"] = $produit->getLabele();
  3178.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  3179.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  3180.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  3181.             $p["condition"] = $produit->getIdConditionnement()->getId();
  3182.             $p["statut"] = $produit->getStatut();
  3183.             $p["qte"] = 1;
  3184.             array_push($Products$p);
  3185.         }
  3186.         $session->set('Panier_Acompa'$Products);
  3187.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());/
  3188.         return new response('done');
  3189.     }
  3190.     /**
  3191.      * @Route("Accompagnateur/ModificationPhotosRetros/{nbr}/{id}", name="EditionRetrofrompanierAccompagnateur")
  3192.      */
  3193.     public function EditionRetrofrompanierAccompagnateur($nbr$id)
  3194.     {
  3195.         $SEjourService $this->sejourService;
  3196.         $userId $this->getUser()->getId();
  3197.         $user $this->getUser();
  3198.         $session $this->session;
  3199.         $session->set('pageMenu''');
  3200.         $idSejour $session->get("Sejour");
  3201.         $produitcondition $session->get("produit");
  3202.         $produit $session->get("produittype");
  3203.         $sejour $SEjourService->getsejourpourparent($idSejour);
  3204.         $em $this->em;
  3205.         $clipart $em->getRepository(Clipart::class)->findAll();
  3206.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  3207.         $listerandom $listeattachlikephoto;
  3208.         $AllPagesAcc null;
  3209.         $random false;
  3210.         $Albumproduct $em->getRepository(Produit::class)->findOneBy(['id' => $id]);
  3211.         $AllPages $em->getRepository(Page::class)->findBy(['idproduit' => $Albumproduct]);
  3212.         $idAcc $sejour->getIdAcommp();
  3213.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  3214.         $part $sejour->getIdPartenaire();
  3215.         $nompart $part->getUsername();
  3216.         $logopart $part->getLogourl();
  3217.         return $this->render('Accompagnateur/PhotosRetros.html.twig', ["nbr" => $nbr"nompart" => $nompart"logopart" => $logopart"sejour" => $sejour'like' => $listeattachlikephoto'cliparts' => $clipart'Album' => $Albumproduct'AllPages' => $AllPages'albumAcc' => $albumAcc'AllPagesAcc' => $AllPagesAcc'random' => $random]);
  3218.     }
  3219.     /**
  3220.      * @Route("/Accompagnateur/SavePhotosRetros", name="SavePhotosRetrosAccompagnateur")
  3221.      */
  3222.     public function SavePhotosRetrosAccompagnateur(Request $request)
  3223.     {
  3224.         $em $this->em;
  3225.         $session $this->session;
  3226.         $serviceuser $this->etablissementService;
  3227.         $page $request->get("pages");
  3228.         $sejour $request->get("sejour");
  3229.         $prodid $request->get('idProd');
  3230.         $nomprod $request->get('nomprod');
  3231.         $nbr $request->get('nbr');
  3232.         $comandePanier $request->get('comandePanier');
  3233.         $user $this->getUser();
  3234.         $nbr strval($nbr);
  3235.         $produittype $session->get("produit");
  3236.         $produit $session->get("produittype");
  3237.         $Album $serviceuser->SavePhotosRetrosParents($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  3238.         if ($comandePanier == "comandePanier") {
  3239.             $inser false;
  3240.             $Products $session->get("Panier_Acompa");
  3241.             $produit $this->em->getRepository(Produit::class)->find($Album->getId());
  3242.             //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  3243.             $user $this->getUser();
  3244.             $typeref $this->em->getRepository(Typeref::class)->find(8);
  3245.             $statutPanier $this->em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  3246.             $panierTrace $this->em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  3247.             //fin
  3248.             if ($panierTrace == null) {
  3249.                 $panierTrace = new Panier();
  3250.                 $dateNow = new \Datetime();
  3251.                 $panierTrace->setDateCreation($dateNow);
  3252.                 $panierTrace->setCreerPar($user);
  3253.                 $panierTrace->setStatut($statutPanier);
  3254.                 $em->getManager()->persist($panierTrace);
  3255.                 $em->getManager()->flush();
  3256.             }
  3257.             //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  3258.             if ($Products == null) {
  3259.                 $Products = [];
  3260.             }
  3261.             foreach ($Products as $key => $p) {
  3262.                 if ($p['id'] == $produit->getId()) {
  3263.                     $inser true;
  3264.                     $Products[$key]['qte'] = $p['qte'] + 1;
  3265.                     $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  3266.                 }
  3267.             }
  3268.             //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  3269.             $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  3270.             if ($panierProduit == null) {
  3271.                 $panierProduit = new PanierProduit();
  3272.                 $panierProduit->setIdProduit($produit);
  3273.                 $panierProduit->setIdPanier($panierTrace);
  3274.                 $em->getManager()->persist($panierProduit);
  3275.                 $em->getManager()->flush();
  3276.             }
  3277.             //fin
  3278.             //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  3279.             $oldQte $panierProduit->getQuantite();
  3280.             $newQte $oldQte 1;
  3281.             $panierProduit->setQuantite($newQte);
  3282.             $oldTotal $panierProduit->getPrixTotal();
  3283.             $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  3284.             $panierProduit->setPrixTotal($newTotal);
  3285.             $em->getManager()->persist($panierProduit);
  3286.             $em->getManager()->flush();
  3287.             //fin
  3288.             if ($inser === false) {
  3289.                 $p = [];
  3290.                 $p["id"] = $produit->getId();
  3291.                 $p["nom"] = $produit->getType()->getLabeletype();
  3292.                 $p["ident"] = $produit->getLabele();
  3293.                 $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  3294.                 $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  3295.                 $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  3296.                 $p["condition"] = $produit->getIdConditionnement()->getId();
  3297.                 $p["statut"] = $produit->getStatut();
  3298.                 $p["qte"] = 1;
  3299.                 array_push($Products$p);
  3300.             }
  3301.             $session->set('Panier_Acompa'$Products);
  3302.         }
  3303.         //$this->EmailServie->MailRelancePanier($this->getUser()->getEmail());
  3304.         return new response($Album->getId());
  3305.     }
  3306.     /**
  3307.      * @Route("/Accompagnateur/RetrosComandeSaveRetros", name="RetrosComandeSaveRetrosAccompagnateur")
  3308.      */
  3309.     public function RetrosComandeSaveRetrosAccompagnateur(Request $request)
  3310.     {
  3311.         $em $this->em;
  3312.         $session $this->session;
  3313.         $serviceuser $this->etablissementService;
  3314.         $page $request->get("pages");
  3315.         $sejour $request->get("sejour");
  3316.         $prodid $request->get('idProd');
  3317.         $nomprod $request->get('nomprod');
  3318.         $nbr $request->get('nbr');
  3319.         $user $this->getUser();
  3320.         $nbr strval($nbr);
  3321.         $produittype $session->get("produit");
  3322.         $produit $session->get("produittype");
  3323.         $Album $serviceuser->SavePhotosRetrosParents($page$user$sejour$prodid$produit$produittype$nbr$nomprod);
  3324.         $inser false;
  3325.         $Products $session->get("Panier_Acompa");
  3326.         $produit $em->getRepository(Produit::class)->find($Album->getId());
  3327.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  3328.         $user $this->getUser();
  3329.         $typeref $em->getRepository(Typeref::class)->find(8);
  3330.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  3331.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  3332.         //fin
  3333.         if ($panierTrace == null) {
  3334.             $panierTrace = new Panier();
  3335.             $dateNow = new \Datetime();
  3336.             $panierTrace->setDateCreation($dateNow);
  3337.             $panierTrace->setCreerPar($user);
  3338.             $panierTrace->setStatut($statutPanier);
  3339.             $em->getManager()->persist($panierTrace);
  3340.             $em->getManager()->flush();
  3341.         }
  3342.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  3343.         if ($Products == null) {
  3344.             $Products = [];
  3345.         }
  3346.         foreach ($Products as $key => $p) {
  3347.             if ($p['id'] == $produit->getId()) {
  3348.                 $inser true;
  3349.                 $Products[$key]['qte'] = $p['qte'] + 1;
  3350.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getIdConditionnement()->getMontantTTC();
  3351.             }
  3352.         }
  3353.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  3354.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  3355.         if ($panierProduit == null) {
  3356.             $panierProduit = new PanierProduit();
  3357.             $panierProduit->setIdProduit($produit);
  3358.             $panierProduit->setIdPanier($panierTrace);
  3359.             $em->getManager()->persist($panierProduit);
  3360.             $em->getManager()->flush();
  3361.         }
  3362.         //fin
  3363.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  3364.         $oldQte $panierProduit->getQuantite();
  3365.         $newQte $oldQte 1;
  3366.         $panierProduit->setQuantite($newQte);
  3367.         $oldTotal $panierProduit->getPrixTotal();
  3368.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  3369.         $panierProduit->setPrixTotal($newTotal);
  3370.         $em->getManager()->persist($panierProduit);
  3371.         $em->getManager()->flush();
  3372.         //fin
  3373.         if ($inser === false) {
  3374.             $p = [];
  3375.             $p["id"] = $produit->getId();
  3376.             $p["nom"] = $produit->getType()->getLabeletype();
  3377.             $p["ident"] = $produit->getLabele();
  3378.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  3379.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  3380.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  3381.             $p["condition"] = $produit->getIdConditionnement()->getId();
  3382.             $p["statut"] = $produit->getStatut();
  3383.             $p["qte"] = 1;
  3384.             array_push($Products$p);
  3385.         }
  3386.         $session->set('Panier_Acompa'$Products);
  3387.         return new response('done');
  3388.     }
  3389.     /**
  3390.      * @Route("/Accompagnateur/ajouterauPanier_Accompagnateur_coffret", name="comandercoffreAccompagnateur")
  3391.      */
  3392.     public function Ajouter_MonPanier_Coffret()
  3393.     {
  3394.         $inser false;
  3395.         $session $this->session;
  3396.         $idSejour $session->get("Sejour");
  3397.         $userId $this->getUser();
  3398.         $em $this->em;
  3399.         $sejourobj $em->getRepository(Sejour::class)->find($idSejour);
  3400.         $prodct $em->getRepository(Typeproduit::class)->find(15);
  3401.         //        $version = $em->getRepository(Produit::class)->SearchVersionproduit($this->getUser()->getId());
  3402.         $Conditionnement $em->getRepository(TypeProduitConditionnement::class)->find(6);
  3403.         $Products $session->get("Panier_Acompa");
  3404.         //Touhemi  02-07-2020 :Rechercher  si l'utilisateur a déja un panier avec statut créer ds la bd , sinon on écrit un panier
  3405.         $user $this->getUser();
  3406.         $typeref $em->getRepository(Typeref::class)->find(8);
  3407.         $statutPanier $em->getRepository(Ref::class)->findOneBy(array("libiller" => "creer""typeref" => $typeref));
  3408.         $panierTrace $em->getRepository(Panier::class)->findOneBy(array("creerPar" => $user"statut" => $statutPanier));
  3409.         //fin
  3410.         if ($panierTrace == null) {
  3411.             $panierTrace = new Panier();
  3412.             $dateNow = new \Datetime();
  3413.             $panierTrace->setDateCreation($dateNow);
  3414.             $panierTrace->setCreerPar($user);
  3415.             $panierTrace->setStatut($statutPanier);
  3416.             $em->getManager()->persist($panierTrace);
  3417.             $em->getManager()->flush();
  3418.         }
  3419.         //Touhemi 02-07-2020 :s'il y a un produit avec (id user,id sejour, type produit et type conditionement) dans le panier , sinon on écrit un produit
  3420.         $produit $em->getRepository(Produit::class)->findOneBy(array("type" => $prodct'idConditionnement' => $Conditionnement'idsjour' => $sejourobj'iduser' => $user));
  3421.         if ($produit == null) {
  3422.             $produit = new Produit;
  3423.             $produit->setLabele("Coffret cadeau");
  3424.             $produit->setIduser($userId);
  3425.             $produit->setIdsjour($sejourobj);
  3426.             $produit->setIdConditionnement($Conditionnement);
  3427.             $produit->setType($prodct);
  3428.             $produit->setDate(new \DateTime());
  3429.             $em->getManager()->persist($produit);
  3430.             $em->getManager()->flush();
  3431.         }
  3432.         if ($Products == null) {
  3433.             $Products = [];
  3434.         }
  3435.         foreach ($Products as $key => $p) {
  3436.             if ($p['id'] == $produit->getId()) {
  3437.                 $inser true;
  3438.                 $Products[$key]['qte'] = $p['qte'] + 1;
  3439.                 $Products[$key]['mnt'] = $p['mnt'] + $produit->getType()->getTraif();
  3440.             }
  3441.         }
  3442.         //Touhemi 02-07-2020 :Rechercher  si le produti existe déja ds panierProduit
  3443.         $panierProduit $em->getRepository(PanierProduit::class)->findOneBy(array("idProduit" => $produit"idPanier" => $panierTrace));
  3444.         if ($panierProduit == null) {
  3445.             $panierProduit = new PanierProduit();
  3446.             $panierProduit->setIdProduit($produit);
  3447.             $panierProduit->setIdPanier($panierTrace);
  3448.             $em->getManager()->persist($panierProduit);
  3449.             $em->getManager()->flush();
  3450.         }
  3451.         //fin
  3452.         //   Touhemi 02-07-2020 ajouter plus un au produit et modifier prixTotal
  3453.         $oldQte $panierProduit->getQuantite();
  3454.         $newQte $oldQte 1;
  3455.         $panierProduit->setQuantite($newQte);
  3456.         $oldTotal $panierProduit->getPrixTotal();
  3457.         $newTotal $oldTotal $produit->getIdConditionnement()->getMontantTTC();
  3458.         $panierProduit->setPrixTotal($newTotal);
  3459.         $em->getManager()->persist($panierProduit);
  3460.         $em->getManager()->flush();
  3461.         //fin
  3462.         if ($inser === false) {
  3463.             $p = [];
  3464.             $p["id"] = $produit->getId();
  3465.             $p["nom"] = $produit->getType()->getLabeletype();
  3466.             $p["ident"] = $produit->getLabele();
  3467.             $p["codesejour"] = $produit->getIdsjour()->getcodeSejour();
  3468.             $p["mnt"] = $produit->getIdConditionnement()->getMontantTTC();
  3469.             $p["path"] = $produit->getType()->getAttachements()[0]->getIdAttachement()->getPath();
  3470.             $p["condition"] = $produit->getIdConditionnement()->getId();
  3471.             $p["statut"] = $produit->getStatut();
  3472.             $p["qte"] = 1;
  3473.             array_push($Products$p);
  3474.         }
  3475.         $session->set('Panier_Acompa'$Products);
  3476.         return new Response('coffert cadeau ajouté');
  3477.     }
  3478.     /**
  3479.      * @Route("/Accompagnateur/boutique5sur5Sejour", name="boutique5sur5Accompagnateur")
  3480.      */
  3481.     public function boutique5sur5Accompagnateur()
  3482.     {
  3483.         $SEjourService $this->sejourService;
  3484.         /** @var \App\Entity\User $userId */
  3485.         $userId $this->getUser();
  3486.         $userId $userId->getId();
  3487.         $session $this->session;
  3488.         $session->set('pageMenu''boutique5su5');
  3489.         $idSejour $session->get("Sejour");
  3490.         $sejour $SEjourService->getsejourpourparent($idSejour);
  3491.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  3492.         $listeattach $SEjourService->getatachmentsejour($idSejour);
  3493.         $messages $SEjourService->getsejourmessage($idSejour);
  3494.         $nbImages count($listeattach);
  3495.         $nbmessages count($messages);
  3496.         $produit $this->typeProduiteService;
  3497.         $liste $produit->produitlistTypeConditionnement();
  3498.         $idAcc $sejour->getIdAcommp();
  3499.         $em $this->em;
  3500.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  3501.         $nbLikes count($listeattachlikephoto);
  3502.         // dd($liste);
  3503.         return $this->render('Accompagnateur/boutique_5sur5.html.twig', [
  3504.             "sejour" => $sejour,
  3505.             'like' => $listeattachlikephoto,
  3506.             'produit' => $liste,
  3507.             'albumAcc' => $albumAcc,
  3508.             'nbImages' => $nbImages,
  3509.             'nbmessages' => $nbmessages,
  3510.             'nbLikes' => $nbLikes
  3511.         ]);
  3512.     }
  3513.     /******* *********/
  3514.     /**
  3515.      * @Route("/Accompagnateur/pdfaccomp/{id}", name="pdfaccomp")
  3516.      */
  3517.     public function ExportPdfAccomp(Request $request$id)
  3518.     {
  3519.         // $json = json_decode(file_get_contents("pdf/pdfaccomp.json"));
  3520.         $sejourservice $this->sejourService;
  3521.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  3522.         $session $this->session;
  3523.         //dd($sejour);
  3524.         $pdf = new Fpdi();
  3525.         $publicDirectory $this->params->get('kernel.project_dir') . '/public/pdf/';
  3526.         $pdfFilepath $publicDirectory "Mode_emploi_5sur5sejour_v5_.pdf";
  3527.         $pageCount $pdf->setSourceFile($pdfFilepath);
  3528.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3529.         $pdf->addPage();
  3530.         $pdf->useImportedPage($pageId0.50.50.5);
  3531.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3532.         $current_date date('d-M-Y');
  3533.         $DateDebut =  "";
  3534.         $DateFin "";
  3535.         $Theme "";
  3536.         $Lieu "";
  3537.         $CodeSejour =  "";
  3538.         $MotPass =  "";
  3539.         $Ville "";
  3540.         $Paye "";
  3541.         if ($sejour) {
  3542.             $DateDebut $sejour->getDateDebutSejour();
  3543.             $DateFin $sejour->getDateFinSejour();
  3544.             $Theme $sejour->getThemSejour();
  3545.             $Lieu $sejour->getAdresseSejour();
  3546.             $CodeSejour $sejour->getCodeSejour();
  3547.             $MotPass $sejour->getIdAcommp()->getPasswordNonCripted();
  3548.             $Ville $sejour->getVille();
  3549.             $Paye $sejour->getPays();
  3550.         }
  3551.         for ($i 0$i $pageCount$i++) {
  3552.             $tplIdx $pdf->importPage($i);
  3553.             $pdf->useTemplate($tplIdx00200300true);
  3554.             $theme $Theme;
  3555.             if (strlen($theme) > 25) {
  3556.                 $pdf->SetFont("Arial"""5);
  3557.             } else {
  3558.                 $pdf->SetFont("Arial"""7);
  3559.             }
  3560.             $strTheme iconv("UTF-8""WINDOWS-1252"$theme);
  3561.             $pdf->Text(35262$strTheme);
  3562.             $pdf->SetFont("Arial"""8);
  3563.             $lieu $Lieu;
  3564.             $ville $Ville;
  3565.             $paye $Paye;
  3566.             if ($Paye && $Ville) {
  3567.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville "  " $paye);
  3568.                 $pdf->Text(125262$strLieu);
  3569.             } else if ($Paye) {
  3570.                 $strLieu iconv("UTF-8""WINDOWS-1252"$paye);
  3571.                 $pdf->Text(125262$strLieu);
  3572.             } else {
  3573.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville);
  3574.                 $pdf->Text(125262$strLieu);
  3575.             }
  3576.             $pdf->SetFont("Arial"""10);
  3577.             $pdf->Text(90271$CodeSejour);
  3578.             $pdf->SetFont("Arial"""10);
  3579.             $DateDebutStr = ($DateDebut instanceof \DateTimeInterface) ? $DateDebut->format('d/m/Y') : ((is_string($DateDebut) && $DateDebut !== '') ? (new \DateTime($DateDebut))->format('d/m/Y') : '');
  3580.             $pdf->Text(50252$DateDebutStr);
  3581.             $pdf->SetFont("Arial"""10);
  3582.             $DateFinStr = ($DateFin instanceof \DateTimeInterface) ? $DateFin->format('d/m/Y') : ((is_string($DateFin) && $DateFin !== '') ? (new \DateTime($DateFin))->format('d/m/Y') : '');
  3583.             $pdf->Text(90252$DateFinStr);
  3584.             $pdf->SetFont("Arial"""10);
  3585.             $pdf->Text(75279$MotPass);
  3586.         }
  3587.         $pdf->Output("Mode d'emploi 5sur5sejour.pdf""D");
  3588.         return new response($pdf->Output(), 200, array('Content-Type' => 'application/pdf'));
  3589.     }
  3590.     /*******Salim *********/
  3591.     /**
  3592.      * @Route("/Accompagnateur/PdfParentP/{id}", name="PdfParentP")
  3593.      */
  3594.     public function ExportPdfParentpaye(Request $request$id)
  3595.     {
  3596.         //  $json = json_decode(file_get_contents("pdf/pdfparentPaye.json"));
  3597.         $sejourservice $this->sejourService;
  3598.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  3599.         $session $this->session;
  3600.         $pdf = new Fpdi();
  3601.         $publicDirectory $this->params->get('kernel.project_dir') . '/public/pdf/';
  3602.         $pdfFilepath $publicDirectory "Mode_emploi_Parent_5sur5sejour_v5_.pdf";
  3603.         $pageCount $pdf->setSourceFile($pdfFilepath);
  3604.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3605.         $pdf->addPage();
  3606.         $pdf->useImportedPage($pageId0.50.50.5);
  3607.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3608.         $current_date date('d-M-Y');
  3609.         $DateDebut =  "";
  3610.         $DateFin "";
  3611.         $Theme "";
  3612.         $Lieu "";
  3613.         $CodeSejour =  "";
  3614.         $Ville "";
  3615.         $Paye "";
  3616.         if ($sejour) {
  3617.             $DateDebut $sejour->getDateDebutSejour();
  3618.             $DateFin $sejour->getDateFinSejour();
  3619.             $Theme $sejour->getThemSejour();
  3620.             $Lieu $sejour->getAdresseSejour();
  3621.             $CodeSejour $sejour->getCodeSejour();
  3622.             $Ville $sejour->getVille();
  3623.             $Paye $sejour->getPays();
  3624.         }
  3625.         for ($i 0$i $pageCount$i++) {
  3626.             $tplIdx $pdf->importPage($i 1);
  3627.             $pdf->useTemplate($tplIdx00200300true);
  3628.             $theme $Theme;
  3629.             if (strlen($theme) > 25) {
  3630.                 $pdf->SetFont("Arial"""5);
  3631.             } else {
  3632.                 $pdf->SetFont("Arial"""7);
  3633.             }
  3634.             $strTheme iconv("UTF-8""WINDOWS-1252"$theme);
  3635.             $pdf->Text(35268$strTheme);
  3636.             $pdf->SetFont("Arial"""8);
  3637.             $lieu $Lieu;
  3638.             $ville $Ville;
  3639.             $paye $Paye;
  3640.             if ($Paye && $Ville) {
  3641.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville "  " $paye);
  3642.                 $pdf->Text(125268$strLieu);
  3643.             } else if ($Paye) {
  3644.                 $strLieu iconv("UTF-8""WINDOWS-1252"$paye);
  3645.                 $pdf->Text(125268$strLieu);
  3646.             } else {
  3647.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville);
  3648.                 $pdf->Text(125268$strLieu);
  3649.             }
  3650.             $pdf->SetFont("Arial"""10);
  3651.             $pdf->Text(80279$CodeSejour);
  3652.             $pdf->SetFont("Arial"""10);
  3653.             $DateDebutStr = ($DateDebut instanceof \DateTimeInterface) ? $DateDebut->format('d/m/Y') : ((is_string($DateDebut) && $DateDebut !== '') ? (new \DateTime($DateDebut))->format('d/m/Y') : '');
  3654.             $pdf->Text(48258$DateDebutStr);
  3655.             $pdf->SetFont("Arial"""10);
  3656.             $DateFinStr = ($DateFin instanceof \DateTimeInterface) ? $DateFin->format('d/m/Y') : ((is_string($DateFin) && $DateFin !== '') ? (new \DateTime($DateFin))->format('d/m/Y') : '');
  3657.             $pdf->Text(89258$DateFinStr);
  3658.         }
  3659.         $pdf->Output("Mode d'emploi Parent 5sur5sejour.pdf""D");
  3660.         return new response($pdf->Output(), 100, array('Content-Type' => 'application/pdf'));
  3661.     }
  3662.     /*******Salim *********/
  3663.     /**
  3664.      * @Route("/Accompagnateur/PdfParentgrat/{id}", name="PdfParentgratt")
  3665.      */
  3666.     public function ExportPdfParentgrat(Request $request$id)
  3667.     {
  3668.         //$json = json_decode(file_get_contents("pdf/pdfparentGratuit.json"));
  3669.         $sejourservice $this->sejourService;
  3670.         $sejour $sejourservice->getsejourByAcc($id$this->getUser());
  3671.         $session $this->session;
  3672.         //dd($sejour);
  3673.         $pdf = new Fpdi();
  3674.         $publicDirectory $this->params->get('kernel.project_dir') . '/public/pdf/';
  3675.         $pdfFilepath $publicDirectory "Mode_emploi_Parent_G_5sur5sejou_v5_.pdf";
  3676.         $pageCount $pdf->setSourceFile($pdfFilepath);
  3677.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3678.         $pdf->addPage();
  3679.         $pdf->useImportedPage($pageId0.50.50.5);
  3680.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3681.         $current_date date('d-M-Y');
  3682.         $DateDebut =  "";
  3683.         $DateFin "";
  3684.         $Theme "";
  3685.         $Lieu "";
  3686.         $CodeSejour =  "";
  3687.         $Ville "";
  3688.         $Paye "";
  3689.         if ($sejour) {
  3690.             $DateDebut $sejour->getDateDebutSejour();
  3691.             $DateFin $sejour->getDateFinSejour();
  3692.             $Theme $sejour->getThemSejour();
  3693.             $Lieu $sejour->getAdresseSejour();
  3694.             $CodeSejour $sejour->getCodeSejour();
  3695.             $Ville $sejour->getVille();
  3696.             $Paye $sejour->getPays();
  3697.         }
  3698.         for ($i 0$i $pageCount$i++) {
  3699.             $tplIdx $pdf->importPage($i 1);
  3700.             $pdf->useTemplate($tplIdx00200300true);
  3701.             $theme $Theme;
  3702.             if (strlen($theme) > 25) {
  3703.                 $pdf->SetFont("Arial"""5);
  3704.             } else {
  3705.                 $pdf->SetFont("Arial"""7);
  3706.             }
  3707.             $strTheme iconv("UTF-8""WINDOWS-1252"$theme);
  3708.             $pdf->Text(35268$strTheme);
  3709.             $pdf->SetFont("Arial"""8);
  3710.             $lieu $Lieu;
  3711.             $ville $Ville;
  3712.             $paye $Paye;
  3713.             if ($Ville && $Paye) {
  3714.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville "  " $paye);
  3715.                 $pdf->Text(125268$strLieu);
  3716.             } else if ($Paye) {
  3717.                 $strLieu iconv("UTF-8""WINDOWS-1252"$paye);
  3718.                 $pdf->Text(125268$strLieu);
  3719.             } else {
  3720.                 $strLieu iconv("UTF-8""WINDOWS-1252"$ville);
  3721.                 $pdf->Text(125268$strLieu);
  3722.             }
  3723.             $pdf->SetFont("Arial"""10);
  3724.             $pdf->Text(80279$CodeSejour);
  3725.             $pdf->SetFont("Arial"""10);
  3726.             $DateDebutStr = ($DateDebut instanceof \DateTimeInterface) ? $DateDebut->format('d/m/Y') : ((is_string($DateDebut) && $DateDebut !== '') ? (new \DateTime($DateDebut))->format('d/m/Y') : '');
  3727.             $pdf->Text(48258$DateDebutStr);
  3728.             $pdf->SetFont("Arial"""10);
  3729.             $DateFinStr = ($DateFin instanceof \DateTimeInterface) ? $DateFin->format('d/m/Y') : ((is_string($DateFin) && $DateFin !== '') ? (new \DateTime($DateFin))->format('d/m/Y') : '');
  3730.             $pdf->Text(89258$DateFinStr);
  3731.         }
  3732.         $pdf->Output("Mode d'emploi Parent G 5sur5sejour.pdf""D");
  3733.         return new response($pdf->Output(), 100, array('Content-Type' => 'application/pdf'));
  3734.     }
  3735.     /*******Salim *********/
  3736.     /**
  3737.      * @Route("/Accompagnateur/Pdfpresentation", name="Pdfpresentation")
  3738.      */
  3739.     public function Pdfpresentation(Request $request)
  3740.     {
  3741.         $pdf = new Fpdi();
  3742.         $pageCount $pdf->setSourceFile('pdf/presentation5sur5.pdf');
  3743.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3744.         $pdf->addPage();
  3745.         $pdf->useImportedPage($pageId201090);
  3746.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3747.         for ($i 1$i $pageCount$i++) {
  3748.             $tplIdx $pdf->importPage(1);
  3749.             $pdf->useTemplate($tplIdx00200300true);
  3750.         }
  3751.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3752.         $pdf->addPage();
  3753.         $pdf->useImportedPage($pageId201090);
  3754.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3755.         for ($i 1$i $pageCount$i++) {
  3756.             $tplIdx $pdf->importPage(2);
  3757.             $pdf->useTemplate($tplIdx00200300true);
  3758.         }
  3759.         $pageId $pdf->importPage(1PdfReader\PageBoundaries::MEDIA_BOX);
  3760.         $pdf->addPage();
  3761.         $pdf->useImportedPage($pageId201090);
  3762.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3763.         for ($i 1$i $pageCount$i++) {
  3764.             $tplIdx $pdf->importPage(3);
  3765.             $pdf->useTemplate($tplIdx00200300true);
  3766.         }
  3767.         $pageId $pdf->importPage(3PdfReader\PageBoundaries::MEDIA_BOX);
  3768.         $pdf->addPage();
  3769.         $pdf->useImportedPage($pageId201090);
  3770.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3771.         for ($i 1$i $pageCount$i++) {
  3772.             $tplIdx $pdf->importPage($i);
  3773.             $pdf->useTemplate($tplIdx00200300true);
  3774.         }
  3775.         $pageId $pdf->importPage(3PdfReader\PageBoundaries::MEDIA_BOX);
  3776.         $pdf->addPage();
  3777.         $pdf->useImportedPage($pageId201090);
  3778.         $testText  "abcdefghijklmnopqrstuvwxyz0123456789";
  3779.         for ($i 1$i $pageCount$i++) {
  3780.             $tplIdx $pdf->importPage($i 1);
  3781.             $pdf->useTemplate($tplIdx00200300true);
  3782.         }
  3783.         $pdf->Output("Presentation 5sur5Séjour.pdf""D");
  3784.         return new response($pdf->Output(), 200, array('Content-Type' => 'application/pdf'));
  3785.     }
  3786.     /**
  3787.      * @Route("/Accompagnateur/SauvegarderEmailResponse", name="SauvegarderEmailResponse")
  3788.      */
  3789.     public function SauvegarderEmailResponse(Request $request)
  3790.     {
  3791.         $em $this->em;
  3792.         $email $request->get('email');
  3793.         $user $this->getUser();
  3794.         if ($user) {
  3795.             $user->setReponseemail($email);
  3796.             $em->getManager()->persist($user);
  3797.             $em->getManager()->flush();
  3798.         }
  3799.         return new Response('Bingo');
  3800.     }
  3801.     /**
  3802.      * @Route("/Accompagnateur/Besoindaide", name="Besoindaide_Accompa")
  3803.      */
  3804.     public function Besoindaide(): Response
  3805.     {
  3806.         $produit $this->typeProduiteService;
  3807.         $liste $produit->produitlistType();
  3808.         // dd($liste);
  3809.         return $this->render('Accompagnateur/BesoindaideAccomp.html.twig', [
  3810.             'produit' => $liste,
  3811.         ]);
  3812.     }
  3813.     /**
  3814.      * @Route("/Accompagnateur/Mentionlegale", name="Mentionlegale_Accompa")
  3815.      */
  3816.     public function MentionlegaleAccompa()
  3817.     {
  3818.         return $this->render('Accompagnateur/MentionsLegalesAcc.html.twig', []);
  3819.     }
  3820.     
  3821.     /**
  3822.      * @Route("/Accompagnateur/Conditongeneral", name="Conditongeneral_Accompa")
  3823.      */
  3824.     public function ConditongeneralAccompa()
  3825.     {
  3826.         return $this->render('Accompagnateur/ConditionsGeneralesAcc.html.twig', []);
  3827.     }
  3828.     
  3829.     /**
  3830.      * @Route("/Accompagnateur/Politique", name="Politique_Accompa")
  3831.      */
  3832.     public function PolitiqueAccompa()
  3833.     {
  3834.         return $this->render('Accompagnateur/PolitiqueAcc.html.twig', []);
  3835.     }
  3836.     
  3837.     /**
  3838.      * @Route("/Accompagnateur/BoiteVocale", name="BoiteVocaleAcc")
  3839.      */
  3840.     public function BoiteVocaleAcc(Request $request)
  3841.     {
  3842.         $session $request->getSession();
  3843.         $sejourId $session->get('Sejour');
  3844.         $sejour null;
  3845.         
  3846.         if ($sejourId) {
  3847.             $sejour $this->em->getRepository(\App\Entity\Sejour::class)->find($sejourId);
  3848.         }
  3849.         
  3850.         return $this->render('Accompagnateur/BoiteVocale.html.twig', [
  3851.             'sejour' => $sejour
  3852.         ]);
  3853.     }
  3854.     
  3855.     /**
  3856.      * @Route("/Accompagnateur/Devenir_Partenaire", name="DevenirPartenaireAcc")
  3857.      */
  3858.     public function DevenirPartenaireAcc()
  3859.     {
  3860.         return $this->render('Accompagnateur/DevenirPartenaire.html.twig', []);
  3861.     }
  3862.     
  3863.     /**
  3864.      * @Route("/Accompagnateur/CommandeGroupee", name="CommandeGroupeeAcc")
  3865.      */
  3866.     public function CommandeGroupeeAcc(Request $request)
  3867.     {
  3868.         $session $request->getSession();
  3869.         $user $this->getUser();
  3870.         if ($user) {
  3871.             $sejourId $session->get('Sejour');
  3872.             $sejour $this->em->getRepository(\App\Entity\Sejour::class)->find($sejourId);
  3873.         } else {
  3874.             $sejour null;
  3875.         }
  3876.         return $this->render('Accompagnateur/CommandeGroupee.html.twig', [
  3877.             'sejour' => $sejour
  3878.         ]);
  3879.     }
  3880.     /**
  3881.      * @Route("/Accompagnateur/verifemailexist", name="verifemailexist")
  3882.      */
  3883.     public function verifemailexist(Request $request)
  3884.     {
  3885.         $em $this->em;
  3886.         $email $request->get('email');
  3887.         $nbremail $em->getRepository(User::class)->checkEmail($email);
  3888.         if ($nbremail 0) {
  3889.             return new Response('Cet email est déjà utilisé !');
  3890.         } else {
  3891.             return new Response('email valide');
  3892.         }
  3893.     }
  3894.     /**
  3895.      * @Route("/Accompagnateur/hidePubProd",name="hidePubProd")
  3896.      */
  3897.     function hidePubProd(Request $request)
  3898.     {
  3899.         $val $request->get("val");
  3900.         $user $this->getUser();
  3901.         $parent $this->em->getRepository(User::class)->find($user->getId());
  3902.         $parent->setShowpubprod('false');
  3903.         $this->em->getManager()->persist($parent);
  3904.         $this->em->getManager()->flush();
  3905.         return new Response('ok');
  3906.     }
  3907.     /**
  3908.      * @Route("/Accompagnateur/ListeProduits",name="ListeProduits")
  3909.      */
  3910.     function ListeProduits(Request $request)
  3911.     {
  3912.         $SEjourService $this->sejourService;
  3913.         $userId $this->getUser()->getId();
  3914.         $user $this->getUser();
  3915.         $session $this->session;
  3916.         $session->set('pageMenu''');
  3917.         $idSejour $session->get("Sejour");
  3918.         $sejour $SEjourService->getsejourpourparent($idSejour);
  3919.         $listeattachlikephoto $SEjourService->getlikephotosejour($userId$idSejour);
  3920.         $produit $this->typeProduiteService;
  3921.         $liste $produit->produitlistTypeConditionnement();
  3922.         $idAcc $sejour->getIdAcommp();
  3923.         $em $this->em;
  3924.         $albumAcc $em->getRepository(Produit::class)->findOneBy(['idsjour' => $idSejour'iduser' => $idAcc'statut' => 'saved'], ['id' => 'DESC']);
  3925.         // dd($liste);
  3926.         return $this->render('Accompagnateur/ListeProduits.html.twig', [
  3927.             "sejour" => $sejour,
  3928.             'like' => $listeattachlikephoto,
  3929.             'produit' => $liste,
  3930.             'albumAcc' => $albumAcc
  3931.         ]);
  3932.     }
  3933.     /**
  3934.      * @Route("/Accompagnateur/getInfoSejour",name="getInfoSejour")
  3935.      */
  3936.     function infoSejourAction()
  3937.     {
  3938.         $sejourService $this->sejourService;
  3939.         $session $this->session;
  3940.         $idSejour $session->get("Sejour");
  3941.         if ($this->getUser()) {
  3942.             if (is_null($idSejour)) {
  3943.                 return new JsonResponse(array('message' => 'merci de verifier sejour'), 401);
  3944.             } else {
  3945.                 $sejour $this->em->getRepository(Sejour::class)->find($idSejour);
  3946.                 if (is_null($sejour)) {
  3947.                     return new JsonResponse(array('message' => 'merci de verifier sejour'), 401);
  3948.                 } else {
  3949.                     //get info sejour
  3950.                     $detailsSejour $sejourService->getInfoSejour($sejour);
  3951.                     return new JsonResponse(array('detailsSejour' => $detailsSejour), 200);
  3952.                 }
  3953.             }
  3954.         } else {
  3955.             return new JsonResponse(array('message' => 'merci de se connecter.'), 401);
  3956.         }
  3957.     }
  3958.     /**
  3959.      * @Route("/Accompagnateur/finish-tour", name="finish_tour", methods={"POST"})
  3960.      */
  3961.     public function finishTour(Request $request): JsonResponse
  3962.     {
  3963.         $data json_decode($request->getContent(), true);
  3964.         $submittedToken $data['_token'] ?? '';
  3965.         $em $this->em->getManager();
  3966.         // Get the current user
  3967.         $user $this->getUser();
  3968.         if (!$user) {
  3969.             return new JsonResponse(['status' => 'error''message' => 'User not logged in'], 401);
  3970.         }
  3971.         $id $this->getUser()->getId();
  3972.         $accomp $this->em->getRepository(User::class)->find($id);
  3973.         // Mark the tour as finished (e.g. set showpubprod to 1)
  3974.         $accomp->setShowpubprod(1);
  3975.         $em->persist($user);
  3976.         $em->flush();
  3977.         return new JsonResponse(['status' => 'success']);
  3978.     }
  3979.     /**
  3980.      * @Route("/Accompagnateur/unsubscribe", name="accompagnateur_unsubscribe")
  3981.      */
  3982.     public function unsubscribe(Request $request): Response
  3983.     {
  3984.         return $this->forward('App\Controller\AccueilController::unsubscribeUser', [
  3985.             'email' => $request->query->get('email')
  3986.         ]);
  3987.     }
  3988.     /**
  3989.      * @Route("/Accompagnateur/ecoles-publiques/creer", name="app_ecoles_publiques_creer_prefixed")
  3990.      */
  3991.     public function ecolesPubliquesCreerPrefixed(): Response
  3992.     {
  3993.         return $this->redirectToRoute('app_ecoles_publiques_creer', [], Response::HTTP_MOVED_PERMANENTLY);
  3994.     }
  3995.     /**
  3996.      * @Route("/Accompagnateur/creation-simple/creer", name="app_creation_simple_creer_prefixed")
  3997.      */
  3998.     public function creationSimpleCreerPrefixed(): Response
  3999.     {
  4000.         return $this->redirectToRoute('app_creation_simple_creer', [], Response::HTTP_MOVED_PERMANENTLY);
  4001.     }
  4002.     /**
  4003.      * @Route("/creation-simple/paiement-test", name="app_creation_simple_paiement_test", methods={"POST"})
  4004.      * Paiement simulé (toujours succès) + création séjour PF + envoi emails
  4005.      */
  4006.     public function paiementTestCreationSejour(Request $request): JsonResponse
  4007.     {
  4008.         try {
  4009.             error_log("🧪 [TEST PAIEMENT] Début du processus de paiement simulé");
  4010.             
  4011.             // Récupérer les données du formulaire
  4012.             $data json_decode($request->getContent(), true);
  4013.             
  4014.             if (!$data) {
  4015.                 $data = [
  4016.                     'participants' => $request->request->get('participants'),
  4017.                     'contactName' => $request->request->get('contactName'),
  4018.                     'contactEmail' => $request->request->get('contactEmail'),
  4019.                     'contactPhone' => $request->request->get('contactPhone'),
  4020.                     'structureName' => $request->request->get('structureName'),
  4021.                     'startDate' => $request->request->get('startDate'),
  4022.                     'message' => $request->request->get('message''')
  4023.                 ];
  4024.             }
  4025.             
  4026.             error_log("📥 Données reçues: " print_r($datatrue));
  4027.             
  4028.             // Validation
  4029.             if (empty($data['participants']) || empty($data['contactName']) || empty($data['contactEmail'])) {
  4030.                 return new JsonResponse([
  4031.                     'success' => false,
  4032.                     'error' => 'Données manquantes'
  4033.                 ], 400);
  4034.             }
  4035.             
  4036.             // Calculer le montant (59€ + 1€/participant)
  4037.             $participants intval($data['participants']);
  4038.             $montantTotal 59 + ($participants 1);
  4039.             
  4040.             error_log("💰 Montant calculé: {$montantTotal}€ pour {$participants} participants");
  4041.             
  4042.             // 🧪 SIMULATION PAIEMENT TOUJOURS RÉUSSI
  4043.             error_log("✅ [TEST] Paiement simulé comme RÉUSSI");
  4044.             
  4045.             // Créer l'utilisateur accompagnateur
  4046.             $userRepository $this->em->getRepository(User::class);
  4047.             $existingUser $userRepository->findOneBy(['email' => $data['contactEmail']]);
  4048.             
  4049.             $mdpTemp null// Pour l'email
  4050.             
  4051.             if ($existingUser) {
  4052.                 $accompagnateur $existingUser;
  4053.                 error_log("👤 Utilisateur existant trouvé: " $accompagnateur->getEmail());
  4054.             } else {
  4055.                 $accompagnateur = new User();
  4056.                 $accompagnateur->setEmail($data['contactEmail']);
  4057.                 $accompagnateur->setNom($data['contactName']);
  4058.                 $accompagnateur->setPrenom('');
  4059.                 $accompagnateur->setTelephone($data['contactPhone'] ?? '');
  4060.                 
  4061.                 // Générer un mot de passe temporaire
  4062.                 $mdpTemp substr(md5(uniqid()), 08);
  4063.                 $accompagnateur->setPassword(password_hash($mdpTempPASSWORD_BCRYPT));
  4064.                 $accompagnateur->setRoles(['ROLE_ACCOMPAGNATEUR']);
  4065.                 $accompagnateur->setStatut(1);
  4066.                 
  4067.                 $this->em->persist($accompagnateur);
  4068.                 $this->em->flush();
  4069.                 
  4070.                 error_log("✅ Nouvel utilisateur créé: " $accompagnateur->getEmail());
  4071.             }
  4072.             
  4073.             // Créer le séjour avec le SejourService
  4074.             $dateDebut = !empty($data['startDate']) ? $data['startDate'] : date('Y-m-d');
  4075.             $dateFin = !empty($data['startDate']) ? date('Y-m-d'strtotime($data['startDate'] . ' +7 days')) : date('Y-m-d'strtotime('+7 days'));
  4076.             
  4077.             $sejour $this->sejourService->CreationNouveauSejour(
  4078.                 $data['structureName'] ?? 'Séjour',  // themSejour
  4079.                 '',                                    // adressSejour
  4080.                 '',                                    // codePostal
  4081.                 $dateDebut,                           // dateDebut
  4082.                 $dateFin,                             // FinSejour
  4083.                 '6-10 ans',                           // AgeDugroupe (par défaut)
  4084.                 'PF',                                 // type (PF = Paiement Forfaitaire)
  4085.                 $accompagnateur->getId(),             // userid
  4086.                 $participants,                        // NbEnfant
  4087.                 'PF',                                 // connpay (type de connexion payante)
  4088.                 'France',                             // pays
  4089.                 '',                                   // ville
  4090.                 null,                                 // prixcnxparent
  4091.                 null,                                 // prixcnxpartenaire
  4092.                 null,                                 // reversecnxpart
  4093.                 null                                  // reverseventepart
  4094.             );
  4095.             
  4096.             $codeSejour $sejour->getCodeSejour();
  4097.             error_log("✅ Séjour créé avec code: {$codeSejour}");
  4098.             
  4099.             error_log("✅ Séjour créé avec succès - ID: " $sejour->getId());
  4100.             
  4101.             // ===== ENVOI DES EMAILS =====
  4102.             
  4103.             // 1️⃣ Email de confirmation de paiement
  4104.             try {
  4105.                 error_log("📧 Envoi de l'email de confirmation de paiement...");
  4106.                 
  4107.                 $this->EmailCommandeService->sendSymfonyEmail(
  4108.                     $data['contactEmail'],
  4109.                     '✅ Paiement confirmé - Votre séjour est activé !',
  4110.                     'sejour_pf_confirmation_paiement',
  4111.                     [
  4112.                         'contactName' => $data['contactName'],
  4113.                         'codeSejour' => $codeSejour,
  4114.                         'participants' => $participants,
  4115.                         'montantTotal' => $montantTotal,
  4116.                         'structureName' => $data['structureName'] ?? 'Séjour',
  4117.                         'startDate' => !empty($data['startDate']) ? new \DateTime($data['startDate']) : null,
  4118.                         'date' => new \DateTime()
  4119.                     ],
  4120.                     'info@5sur5sejour.com',
  4121.                     [], // Pas de pièce jointe pour l'instant (facture PDF à ajouter plus tard)
  4122.                     false // Envoi immédiat
  4123.                 );
  4124.                 
  4125.                 error_log("✅ Email de confirmation envoyé");
  4126.             } catch (\Exception $e) {
  4127.                 error_log("❌ Erreur envoi email confirmation: " $e->getMessage());
  4128.             }
  4129.             
  4130.             // 2️⃣ Email avec codes d'accès
  4131.             try {
  4132.                 error_log("📧 Envoi de l'email avec codes d'accès...");
  4133.                 
  4134.                 // Générer l'URL de connexion
  4135.                 $loginUrl $this->generateUrl('app_login_Acommpa', [], UrlGeneratorInterface::ABSOLUTE_URL);
  4136.                 
  4137.                 $this->EmailCommandeService->sendSymfonyEmail(
  4138.                     $data['contactEmail'],
  4139.                     '🔑 Vos codes d\'accès - Espace séjour ' $codeSejour,
  4140.                     'sejour_pf_codes_acces',
  4141.                     [
  4142.                         'contactName' => $data['contactName'],
  4143.                         'email' => $data['contactEmail'],
  4144.                         'password' => $mdpTemp,
  4145.                         'codeSejour' => $codeSejour,
  4146.                         'structureName' => $data['structureName'] ?? 'Séjour',
  4147.                         'participants' => $participants,
  4148.                         'startDate' => !empty($data['startDate']) ? new \DateTime($data['startDate']) : null,
  4149.                         'loginUrl' => $loginUrl,
  4150.                         'date' => new \DateTime()
  4151.                     ],
  4152.                     'info@5sur5sejour.com',
  4153.                     [],
  4154.                     false
  4155.                 );
  4156.                 
  4157.                 error_log("✅ Email avec codes d'accès envoyé");
  4158.             } catch (\Exception $e) {
  4159.                 error_log("❌ Erreur envoi email codes: " $e->getMessage());
  4160.             }
  4161.             
  4162.             return new JsonResponse([
  4163.                 'success' => true,
  4164.                 'message' => 'Paiement réussi ! Séjour créé avec succès.',
  4165.                 'sejour_id' => $sejour->getId(),
  4166.                 'code_sejour' => $codeSejour,
  4167.                 'montant' => $montantTotal,
  4168.                 'email' => $data['contactEmail']
  4169.             ]);
  4170.             
  4171.         } catch (\Exception $e) {
  4172.             error_log("❌ [ERREUR] " $e->getMessage());
  4173.             error_log($e->getTraceAsString());
  4174.             
  4175.             return new JsonResponse([
  4176.                 'success' => false,
  4177.                 'error' => $e->getMessage()
  4178.             ], 500);
  4179.         }
  4180.     }
  4181.     /**
  4182.      * @Route("/Accompagnateur/group-order-submit", name="group_order_submit", methods={"POST"})
  4183.      */
  4184.     public function groupOrderSubmit(Request $request): JsonResponse
  4185.     {
  4186.         try {
  4187.             error_log("📦 [COMMANDE GROUPÉE] Début du traitement");
  4188.             // Récupération des données du formulaire
  4189.             $sejourId $request->request->get('sejour_id');
  4190.             $sejourCode $request->request->get('sejour_code');
  4191.             $productType $request->request->get('product_type');
  4192.             $photoCount $request->request->get('photo_count');
  4193.             $deliveryName $request->request->get('delivery_name');
  4194.             $deliveryAddress $request->request->get('delivery_address');
  4195.             $deliveryPostal $request->request->get('delivery_postal');
  4196.             $deliveryCity $request->request->get('delivery_city');
  4197.             $paymentMethod $request->request->get('payment_method');
  4198.             $compositionMode $request->request->get('composition_mode');
  4199.             $estimatedOrders $request->request->get('estimated_orders');
  4200.             $notes $request->request->get('notes');
  4201.             // Récupération du séjour
  4202.             $sejour $this->em->getRepository(Sejour::class)->find($sejourId);
  4203.             if (!$sejour) {
  4204.                 throw new \Exception('Séjour non trouvé');
  4205.             }
  4206.             // Récupération de l'utilisateur
  4207.             $user $this->getUser();
  4208.             if (!$user) {
  4209.                 throw new \Exception('Utilisateur non connecté');
  4210.             }
  4211.             // Calcul de la réduction
  4212.             $discount 0;
  4213.             if ($estimatedOrders >= 20) {
  4214.                 $discount 20;
  4215.             } elseif ($estimatedOrders >= 10) {
  4216.                 $discount 15;
  4217.             } elseif ($estimatedOrders >= 5) {
  4218.                 $discount 10;
  4219.             }
  4220.             // Traduction des types de produits
  4221.             $productTypeLabels = [
  4222.                 'livre' => 'Livre Séjour (Format A4, Couverture rigide)',
  4223.                 'album' => 'Album Photo (Format classique, Reliure souple)',
  4224.                 'pochette' => 'Pochette Tirages (12 photos 10x15cm, Papier brillant professionnel)'
  4225.             ];
  4226.             $paymentMethodLabels = [
  4227.                 'rib' => 'Virement bancaire (RIB)',
  4228.                 'online' => 'Paiement en ligne (Carte bancaire)'
  4229.             ];
  4230.             $compositionModeLabels = [
  4231.                 '5sur5' => 'Composition par l\'équipe 5sur5',
  4232.                 'self' => 'Je compose moi-même'
  4233.             ];
  4234.             // Envoi de l'email à l'équipe 5sur5
  4235.             try {
  4236.                 $emailEquipe = (new TemplatedEmail())
  4237.                     ->from(new Address('info@5sur5sejour.com''5sur5 Séjour'))
  4238.                     ->to('contact@5sur5sejour.com')
  4239.                     ->cc('yousra.tlich@gmail.com''ramzi.benlarbi@gmail.com')
  4240.                     ->subject('🎉 Nouvelle Commande Groupée - ' $sejour->getThemSejour())
  4241.                     ->htmlTemplate('emails/CommandeGroupee.html.twig')
  4242.                     ->context([
  4243.                         'sejour' => $sejour,
  4244.                         'user' => $user,
  4245.                         'productType' => $productTypeLabels[$productType],
  4246.                         'photoCount' => $photoCount,
  4247.                         'estimatedOrders' => $estimatedOrders,
  4248.                         'discount' => $discount,
  4249.                         'deliveryName' => $deliveryName,
  4250.                         'deliveryAddress' => $deliveryAddress,
  4251.                         'deliveryPostal' => $deliveryPostal,
  4252.                         'deliveryCity' => $deliveryCity,
  4253.                         'paymentMethod' => $paymentMethodLabels[$paymentMethod],
  4254.                         'compositionMode' => $compositionModeLabels[$compositionMode],
  4255.                         'notes' => $notes
  4256.                     ]);
  4257.                 
  4258.                 $this->newMailer->send($emailEquipe);
  4259.                 error_log("📧 [COMMANDE GROUPÉE] Email envoyé à l'équipe 5sur5");
  4260.             } catch (\Exception $emailError) {
  4261.                 error_log("⚠️ [COMMANDE GROUPÉE] Erreur envoi email équipe: " $emailError->getMessage());
  4262.             }
  4263.             // Email de confirmation à l'accompagnateur
  4264.             try {
  4265.                 $emailConfirmation = (new TemplatedEmail())
  4266.                     ->from(new Address('info@5sur5sejour.com''5sur5 Séjour'))
  4267.                     ->to($user->getEmail())
  4268.                     ->subject('✅ Votre demande de commande groupée - ' $sejour->getThemSejour())
  4269.                     ->htmlTemplate('emails/CommandeGroupeeConfirmation.html.twig')
  4270.                     ->context([
  4271.                         'user' => $user,
  4272.                         'sejour' => $sejour,
  4273.                         'productType' => $productTypeLabels[$productType],
  4274.                         'photoCount' => $photoCount,
  4275.                         'estimatedOrders' => $estimatedOrders,
  4276.                         'discount' => $discount
  4277.                     ]);
  4278.                 
  4279.                 $this->newMailer->send($emailConfirmation);
  4280.                 error_log("📧 [COMMANDE GROUPÉE] Email de confirmation envoyé à l'accompagnateur");
  4281.             } catch (\Exception $emailError) {
  4282.                 error_log("⚠️ [COMMANDE GROUPÉE] Erreur envoi confirmation: " $emailError->getMessage());
  4283.             }
  4284.             // Log de la demande
  4285.             error_log("📦 [COMMANDE GROUPÉE] Nouvelle demande - Séjour: {$sejourCode} - Accompagnateur: {$user->getEmail()} - Produit: {$productType} - Estimation: {$estimatedOrders} commandes - Réduction: {$discount}%");
  4286.             return new JsonResponse([
  4287.                 'success' => true,
  4288.                 'message' => 'Demande envoyée avec succès',
  4289.                 'discount' => $discount
  4290.             ]);
  4291.         } catch (\Exception $e) {
  4292.             error_log("❌ [ERREUR COMMANDE GROUPÉE] " $e->getMessage());
  4293.             
  4294.             return new JsonResponse([
  4295.                 'success' => false,
  4296.                 'error' => $e->getMessage()
  4297.             ], 500);
  4298.         }
  4299.     }
  4300. }