src/Service/UserService.php line 711

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. /**
  4.  * Created by PhpStorm.
  5.  * User: Appsfact-02
  6.  * Date: 14/11/2019
  7.  * Time: 13:13
  8.  */
  9. use App\Entity\Produit;
  10. use App\Entity\Ref;
  11. use App\Service\EmailsCmdService;
  12. use App\Entity\User;
  13. use App\Entity\ParentSejour;
  14. use App\Entity\Etablisment;
  15. use App\Entity\Attachment;
  16. use App\Entity\Adress;
  17. use App\Entity\Comptebancaire;
  18. use App\Entity\Sejour;
  19. use App\Entity\Jourdescripdate;
  20. use App\Entity\Documentpartenaire;
  21. use Swift_Image;
  22. use App\Entity\Emailing;
  23. use App\Entity\SejourAttachment;
  24. use Doctrine\Persistence\ManagerRegistry;
  25. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  26. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  27. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  28. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  29. use Twig\Environment;
  30. use Symfony\Component\Mailer\MailerInterface;
  31. use Symfony\Component\Mime\Email;
  32. use Symfony\Component\Mime\Address;
  33. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  34. use setasign\Fpdi\Fpdi;
  35. use setasign\Fpdi\PdfReader;
  36. class UserService
  37. {
  38.     private $em;
  39.     private $mailer;
  40.     private $router;
  41.     private $second_mailer;
  42.     private $passwordEncoder;
  43.     private $templating;
  44.     private $session;
  45.     private $params;
  46.     private $emailsCmdService;
  47.     private MailerInterface $mailerInterface;
  48.     private $kernel;
  49.     public function __construct(ManagerRegistry $em\Swift_Mailer $mailer\Swift_Mailer $second_mailerUrlGeneratorInterface $routerUserPasswordHasherInterface $passwordEncoderEnvironment $templatingSessionInterface $sessionParameterBagInterface $paramsEmailsCmdService $emailsCmdServiceMailerInterface $mailerInterface$kernel)
  50.     {
  51.         $this->em $em;
  52.         $this->mailer $mailer;
  53.         $this->second_mailer $second_mailer;
  54.         $this->router $router;
  55.         $this->passwordEncoder $passwordEncoder;
  56.         $this->templating $templating;
  57.         $this->session $session;
  58.         $this->params $params;
  59.         $this->emailsCmdService $emailsCmdService;
  60.         $this->mailerInterface $mailerInterface;
  61.         $this->kernel $kernel;
  62.         
  63.     }
  64.     /**
  65.      * Méthode privée pour envoyer les emails directement avec Symfony Mailer
  66.      * Sans passer par la queue Messenger
  67.      */
  68.     private function sendEmailDirect(
  69.         string $to,
  70.         string $subject,
  71.         string $template,
  72.         array $context = [],
  73.         string $from 'infotp@5sur5sejour.com',
  74.         array $attachments = []
  75.     ): bool {
  76.         try {
  77.             $email = (new TemplatedEmail())
  78.                 ->from(new Address($from'5sur5 Séjour'))
  79.                 ->to($to)
  80.                 ->subject($subject)
  81.                 ->htmlTemplate($template)
  82.                 ->context($context);
  83.             // Ajouter les pièces jointes si présentes
  84.             foreach ($attachments as $path => $name) {
  85.                 if (file_exists($path)) {
  86.                     $email->attachFromPath($path$name);
  87.                 }
  88.             }
  89.             // Envoyer directement sans passer par la queue
  90.             $this->mailerInterface->send($email);
  91.             error_log("Email envoyé directement à: " $to " - Sujet: " $subject);
  92.             return true;
  93.         } catch (\Exception $e) {
  94.             error_log("Erreur envoi email direct: " $e->getMessage());
  95.             return false;
  96.         }
  97.     }
  98.     /**
  99.      * Méthode publique pour envoyer un email directement sans queue
  100.      * Utilisée pour forcer l'envoi immédiat
  101.      */
  102.     public function sendEmailDirectly(
  103.         string $to,
  104.         string $subject,
  105.         string $template,
  106.         array $context = [],
  107.         string $from 'info@5sur5sejour.com',
  108.         array $attachments = []
  109.     ): bool {
  110.         return $this->sendEmailDirect($to$subject$template$context$from$attachments);
  111.     }
  112.     function creationNewUser($nom$prenom$etablisment$fonction$adressetablisment$phone$email$password$role)
  113.     {
  114.         $user = new User();
  115.         $user->setNom($nom);
  116.         $user->setPrenom($prenom);
  117.         $user->setNummobile($phone);
  118.         $user->setFonction($fonction);
  119.         $user->setAdresse($adressetablisment);
  120.         $user->setNometablisment($etablisment);
  121.         $user->setEmail(trim($email));
  122.         $user->setPassword(
  123.             $this->passwordEncoder->hashPassword(
  124.                 $user,
  125.                 $password
  126.             )
  127.         );
  128.         $user->setPasswordNonCripted($password);
  129.         $user->setDateCreation(new \DateTime());
  130.         $user->addRole($role);
  131.         $this->em->getManager()->persist($user);
  132.         $this->em->getManager()->flush();
  133.         return $user;
  134.     }
  135.     function creationNewAcommpa($nom$prenom$etablisment$fonction$adressetablisment$phoneacc$mail$role$password$reponseemail)
  136.     {
  137.         $user = new User();
  138.         $user->setNom($nom);
  139.         $user->setPrenom($prenom);
  140.         $user->setUsername($mail);
  141.         $user->setReponseemail(trim($reponseemail));
  142.         // $user->setUsername($identifiant);
  143.         $user->setFonction($fonction);
  144.         $user->setNummobile($phoneacc);
  145.         $user->setEmail(trim($mail));
  146.         $user->setAdresse($adressetablisment);
  147.         $user->setNometablisment($etablisment);
  148.         //$user->setnometablisment();
  149.         $user->setDateCreation(new \DateTime());
  150.         $user->addRole($role);
  151.         $user->setPasswordNonCripted($password);
  152.         $user->setPassword(
  153.             $this->passwordEncoder->hashPassword(
  154.                 $user,
  155.                 $password
  156.             )
  157.         );
  158.         $this->em->getManager()->persist($user);
  159.         $this->em->getManager()->persist($user);
  160.         $this->em->getManager()->flush();
  161.         return $user;
  162.     }
  163.     function creationNewEtablisment($par$nom$prenom$etablisment$fonction$adressetablisment$phoneacc$mail$role$password$prixcnxparent$prixcnxpartenaire$reversecnxpart$reverseventepart)
  164.     {
  165.         $type "ECOLES/AUTRES";
  166.         $EtabL = new Etablisment();
  167.         $EtabL->setNometab($etablisment);
  168.         $EtabL->setTypeetablisment($type);
  169.         // $user->setUsername($identifiant);
  170.         $EtabL->setFonctioncontact($fonction);
  171.         $EtabL->setNumerotelp($phoneacc);
  172.         $EtabL->setEmail(trim($mail));
  173.         $EtabL->setAdresseetab($adressetablisment);
  174.         $EtabL->setUser($par); //$user->setnometablisment();
  175.         $EtabL->setPrixcnxparent($prixcnxparent);
  176.         $EtabL->setPrixcnxpartenaire($prixcnxpartenaire);
  177.         $EtabL->setReversecnxpart($reversecnxpart);
  178.         $EtabL->setReverseventepart($reverseventepart);
  179.         $this->em->getManager()->persist($EtabL);
  180.         $this->em->getManager()->flush();
  181.         return $EtabL;
  182.     }
  183.     public function updatUSER($id$nom$prenom$adresse$phone$password$statut null)
  184.     {
  185.         $user $this->em->getRepository(User::class)->find($id);
  186.         $refstatut $this->em->getRepository(Ref::class)->find($statut);
  187.         $user->setNom($nom);
  188.         $user->setPrenom($prenom);
  189.         $user->setAdresse($adresse);
  190.         $user->setNummobile($phone);
  191.         $user->setStatut($refstatut);
  192.         $user->setPasswordNonCripted($password);
  193.         $user->setPassword(
  194.             $this->passwordEncoder->hashPassword(
  195.                 $user,
  196.                 $password
  197.             )
  198.         );
  199.         $this->em->getManager()->persist($user);
  200.         $this->em->getManager()->flush();
  201.         return $user;
  202.     }
  203.     public function updatPassw($id$password)
  204.     {
  205.         $user $this->em->getRepository(User::class)->find($id);
  206.         $user->setPassword(
  207.             $this->passwordEncoder->hashPassword(
  208.                 $user,
  209.                 $password
  210.             )
  211.         );
  212.         $user->setPasswordNonCripted($password);
  213.         $this->em->getManager()->persist($user);
  214.         $this->em->getManager()->flush();
  215.         return $user;
  216.     }
  217.     function GenerateTokken($user)
  218.     {
  219.         $userHash hash("sha256"$user->getUsername() . $user->getId());
  220.         return $userHash;
  221.     }
  222.     function generateUrlNewPassword($user)
  223.     {
  224.         $directUrl $this->router->generate('directloginOM_token', array('token' => $user->getUsername(), 'userHash' => $this->GenerateTokken($user)), UrlGeneratorInterface::ABSOLUTE_URL);
  225.         return $directUrl;
  226.     }
  227.     function sendPasswordMail($email$url)
  228.     {
  229.     
  230.         $emailMessage = (new TemplatedEmail())
  231.             ->from(new Address('info@5sur5sejour.com''5sur5 Séjour'))
  232.             ->to($email)
  233.             ->subject('Mot de passe oublié 5sur5sejour')
  234.             ->htmlTemplate('emails/newPass.html.twig')
  235.             ->context([
  236.                 'Url' => $url,
  237.             ]);
  238.         try {
  239.             $this->mailerInterface->send($emailMessage);
  240.             return true;
  241.         } catch (\Exception $e) {
  242.             return false;
  243.         }
  244.     }
  245.     function getUserAcc($id)
  246.     {
  247.         $user $this->em->getRepository(User::class)->find($id);
  248.         return $user;
  249.     }
  250.     function getUserAccALL()
  251.     {
  252.         $user $this->em->getRepository(User::class)->findByRole('ROLE_ACC');
  253.         return $user;
  254.     }
  255.     function getUserbyRole($role)
  256.     {
  257.         $user $this->em->getRepository(User::class)->findByRole($role);
  258.         return $user;
  259.     }
  260.     function affectationRole($userId$role)
  261.     {
  262.         $roles "[$role]";
  263.         $user $this->em->getRepository(User::class)->find($userId);
  264.         $user->setRoles($roles);
  265.         $this->em->getManager()->persist($user);
  266.         $this->em->getManager()->flush();
  267.         return $user;
  268.     }
  269.     function affectationStatut($userId$statutref)
  270.     {
  271.         $user $this->em->getRepository(User::class)->find($userId);
  272.         $statut $this->em->getRepository(Ref::class)->find($statutref);
  273.         $user->setStatut($statut);
  274.         $this->em->getManager()->persist($user);
  275.         $this->em->getManager()->flush();
  276.         return $user;
  277.     }
  278.     function EnvoyerEmailNewUser($user)
  279.     {
  280.         $RefEmail $this->em->getRepository(Ref::class)->find(20);
  281.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail));
  282.         $sendTo $user->getEmail();
  283.         
  284.         // Préparer les images pour le template
  285.         $pathImage2 $Email->getIdImage2()->getPath();
  286.         $pathImage1 $Email->getIdImage1()->getPath();
  287.         // Utiliser l'envoi direct sans queue
  288.         $this->sendEmailDirect(
  289.             $sendTo,
  290.             'Bienvenue à 5sur5 séjour',
  291.                 'emails/DemandeCreationUser.html.twig',
  292.                 [
  293.                     "Nomdestinataire" => $user->getNom(),
  294.                     "Predestinataire" => $user->getPrenom(),
  295.                 "image1" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274063/qw7csxayektmq1leqjpp.png",
  296.                 "image2" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274055/ackjwfswxqtv4kuhethg.png",
  297.                 "iconfooter" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png",
  298.                 "iconphoto" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png",
  299.                 "iconloca" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png",
  300.                 "iconmsg" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png",
  301.                     "identifiant" => $sendTo,
  302.                 "senduser" => $user,
  303.                     "roles" => $user->getRoles()
  304.                 ]
  305.         );
  306.     }
  307.     function EnvoyerEmailAlbumUser($user)
  308.     {
  309.         $RefEmail $this->em->getRepository(Ref::class)->find(20);
  310.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail));
  311.         $sendTo $user->getEmail();
  312.         $senduser $user;
  313.         $message = (new \Swift_Message(" Immortalisez les souvenirs inoubliables du séjour de votre enfant !"))
  314.             ->setFrom('info@5sur5sejour.com')
  315.             ->setTo($sendTo);
  316.         //->setBcc(["contact@5sur5sejour.com"]);
  317.         $pathImage2 $Email->getIdImage2()->getPath();
  318.         $pathImage1 $Email->getIdImage1()->getPath();
  319.         $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  320.         $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  321.         $iconphoto $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  322.         $iconloca $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  323.         $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  324.         $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  325.         $message->setBody(
  326.             $this->templating->render(
  327.                 'emails/Album_Sej_Notif.html.twig',
  328.                 [
  329.                     "nom" => $user->getNom(),
  330.                     "prenom" => $user->getPrenom(),
  331.                     "image1" => $image1,
  332.                     "image2" => $image2,
  333.                     "iconfooter" => $iconfooter,
  334.                     "iconphoto" => $iconphoto,
  335.                     "iconloca" => $iconloca,
  336.                     "iconmsg" => $iconmsg,
  337.                     'imggarcon' => $iconmsg,
  338.                     "identifiant" => $sendTo,
  339.                     "senduser" => $senduser,
  340.                     "roles" => $user->getRoles()
  341.                 ]
  342.             ),
  343.             'text/html'
  344.         );
  345.         $signMail $this->params->get('signMail');
  346.         if ($signMail == 'yes') {
  347.             $domainName $this->params->get('domaine');
  348.             $selector $this->params->get('selector');
  349.             $PrivateKey =  file_get_contents($this->params->get('pathDKIM'));
  350.             $signer = new \Swift_Signers_DKIMSigner($PrivateKey$domainName$selector);
  351.             $message->attachSigner($signer);
  352.         }
  353.         try {
  354.             $this->mailer->send($message);
  355.         } catch (\Swift_SwiftException $ex) {
  356.             $ex->getMessage();
  357.         }
  358.     }
  359.     function 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)
  360.     {
  361.         $user $this->em->getRepository(User::class)->find($iduser);
  362.         $sejour $this->em->getRepository(Sejour::class)->find($id);
  363.         $Adress = new Adress;
  364.         $Adress->setNumadress($num);
  365.         $Adress->setRuevoi($rue);
  366.         $Adress->setCodepostal($codepostal);
  367.         $Adress->setVille($ville);
  368.         $Adress->setPays($pays);
  369.         $Adress->setOrganism($organism);
  370.         $Adress->setNomadrres($nom);
  371.         $Adress->setPrenomadress($prenom);
  372.         $Adress->settype('livraison');
  373.         $this->em->getManager()->persist($Adress);
  374.         $this->em->getManager()->flush();
  375.         $user->setadresslivraison($Adress);
  376.         $AdressFacturation = new Adress;
  377.         $AdressFacturation->setNumadress($numfacturation);
  378.         $AdressFacturation->setRuevoi($ruefacturation);
  379.         $AdressFacturation->setCodepostal($codepostalfacturation);
  380.         $AdressFacturation->setVille($villefacturation);
  381.         $AdressFacturation->setPays($paysfacturation);
  382.         $AdressFacturation->setOrganism($organismfacturation);
  383.         $AdressFacturation->setNomadrres($nomfacturation);
  384.         $AdressFacturation->setPrenomadress($prenomfacturation);
  385.         $AdressFacturation->settype('Facturation');
  386.         $this->em->getManager()->persist($AdressFacturation);
  387.         $this->em->getManager()->flush();
  388.         $user->setAdressfactoration($AdressFacturation);
  389.         $user->setNom($usernomAcommpa);
  390.         $user->setPrenom($userprenomAcommpa);
  391.         $user->setEmail(trim($useremailcommpa));
  392.         $user->setFonction($userfonctionAcommpa);
  393.         $user->setEtablisment($useretablismentAcommpa);
  394.         $this->em->getManager()->persist($user);
  395.         $this->em->getManager()->flush();
  396.         $sejour->setThemSejour($sejourthem);
  397.         $sejour->setAdresseSejour($adresssejour);
  398.         $this->em->getManager()->persist($sejour);
  399.         $this->em->getManager()->flush();
  400.         return $user;
  401.     }
  402.     function setadressfacturation($nom$rue$ville$pays$codepostal$iduser)
  403.     {
  404.         $user $this->em->getRepository(User::class)->find($iduser);
  405.         $Adress = new Adress;
  406.         $Adress->setNumadress($nom);
  407.         $Adress->setRuevoi($rue);
  408.         $Adress->setCodepostal($codepostal);
  409.         $Adress->setVille($ville);
  410.         $Adress->setPays($pays);
  411.         $Adress->settype('facturation');
  412.         $this->em->getManager()->persist($Adress);
  413.         $this->em->getManager()->flush();
  414.         $user->setadresslivraison($Adress);
  415.         return $user;
  416.     }
  417.     function setDescriptionAttch($id$decription)
  418.     {
  419.         $attachment $this->em->getRepository(Attachment::class)->find($id);
  420.         $attachment->setDescreption($decription);
  421.         $this->em->getManager()->persist($attachment);
  422.         $this->em->getManager()->flush();
  423.         return $attachment;
  424.     }
  425.     function DelDescriptionAttch($id)
  426.     {
  427.         $attachment $this->em->getRepository(Attachment::class)->find($id);
  428.         $attachment->setDescreption(null);
  429.         $this->em->getManager()->persist($attachment);
  430.         $this->em->getManager()->flush();
  431.         return $attachment;
  432.     }
  433.     function supprimaudio($id)
  434.     {
  435.         $attachment $this->em->getRepository(Attachment::class)->find($id);
  436.         $sejattachment $this->em->getRepository(SejourAttachment::class)->findBy(array('idAttchment' => $attachment));
  437.         foreach ($sejattachment as $sejar) {
  438.             $this->em->getManager()->remove($sejar);
  439.             $this->em->getManager()->flush();
  440.         }
  441.         $this->em->getManager()->remove($attachment);
  442.         $this->em->getManager()->flush();
  443.         return ("done");
  444.     }
  445.     public function ajouterdatesejourdescription($id$description$datedescription)
  446.     {
  447.         $sejour $this->em->getRepository(Sejour::class)->find($id);
  448.         $Jourdescripdate = new Jourdescripdate();
  449.         // $datedescription is now a string like "02/05/2025"
  450.         $dat date_create_from_format('m/d/Y'$datedescription);
  451.         $Jourdescripdate->setDatejourphoto($dat);
  452.         $Jourdescripdate->setDescription($description);
  453.         $Jourdescripdate->setIdIdsejour($sejour);
  454.         $this->em->getManager()->persist($Jourdescripdate);
  455.         $this->em->getManager()->flush();
  456.         return $Jourdescripdate;
  457.     }
  458.     function supprimdescription($iddescription)
  459.     {
  460.         $Jourdescripdate $this->em->getRepository(Jourdescripdate::class)->find($iddescription);
  461.         $this->em->getManager()->remove($Jourdescripdate);
  462.         $this->em->getManager()->flush();
  463.         return $Jourdescripdate;
  464.     }
  465.     function activationmail($idparent)
  466.     {
  467.         $user $this->em->getRepository(User::class)->find($idparent);
  468.         $user->setActivatemail(1);
  469.         $this->em->getManager()->persist($user);
  470.         $this->em->getManager()->flush();
  471.         return $user;
  472.     }
  473.     function modificationdescription($iddescription$description)
  474.     {
  475.         $Jourdescripdate $this->em->getRepository(Jourdescripdate::class)->find($iddescription);
  476.         //dd($iddescription);
  477.         $Jourdescripdate->setDescription($description);
  478.         $this->em->getManager()->persist($Jourdescripdate);
  479.         $this->em->getManager()->flush();
  480.         return $Jourdescripdate;
  481.     }
  482.     function creationNewParent($nom$prenom$mailparent$numtel$role$passwordparent$notifsms$notifmail)
  483.     {
  484.         ini_set("max_execution_time", -1);
  485.         ini_set('memory_limit''-1');
  486.         $user = new User();
  487.         $user->setNom($nom);
  488.         $user->setPrenom($prenom);
  489.         $user->setUsername($mailparent);
  490.         $user->setSmsnotif($notifsms);
  491.         $user->setMailnotif($notifmail);
  492.         $user->setShowpubprod(true);
  493.         // $user->setUsername($identifiant);
  494.         $user->setNummobile($numtel);
  495.         $user->setEmail(trim($mailparent));
  496.         $user->setDateCreation(new \DateTime());
  497.         $user->addRole($role);
  498.         $user->setPassword(
  499.             $this->passwordEncoder->hashPassword(
  500.                 $user,
  501.                 $passwordparent
  502.             )
  503.         );
  504.         $this->em->getManager()->persist($user);
  505.         $this->em->getManager()->flush();
  506.         //$ParentSejour = new ParentSejour();
  507.         //$ParentSejour->setIdParent($user);
  508.         //$ParentSejour->setDateCreation(new \DateTime());
  509.         // $this->em->getManager()->persist($ParentSejour);
  510.         //$this->em->getManager()->flush();
  511.       //  $this->EnvoyerEmailNewParent($user);
  512.         $this->EnvoyerEmailNewParentActivation($user);
  513.         return $user;
  514.     }
  515.     function EnvoyerEmailNewParentActivation($user)
  516.     {
  517.       // Générer le lien de connexion
  518.       $loginUrl "5sur5sejour.com";
  519.       if ($user != null) {
  520.           $loginUrl $this->emailsCmdService->requestLoginLink($user);
  521.       }
  522.         // Create email with Symfony Mailer
  523.         $email = (new Email())
  524.             ->from('info@5sur5sejour.com')
  525.             ->to(trim($user->getEmail()))
  526.             ->subject('🤗 Bienvenue sur 5sur5séjour – Activez votre espace parent')
  527.             ->html(
  528.                 $this->templating->render(
  529.                     'emails/Activatiocompte.html.twig',
  530.                     [
  531.                         "parent" => $user,
  532.                         "loginLink" => $loginUrl,
  533.                         "image1" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274063/qw7csxayektmq1leqjpp.png",
  534.                         "image2" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274055/ackjwfswxqtv4kuhethg.png",
  535.                         "iconfooter" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png",
  536.                     ]
  537.                 )
  538.             );
  539.         // Add DKIM signature if configured
  540.         $signMail $this->params->get('signMail');
  541.         if ($signMail == 'yes') {
  542.             $domainName $this->params->get('domaine');
  543.             $selector $this->params->get('selector');
  544.             $privateKeyPath $this->params->get('pathDKIM');
  545.             
  546.             // For DKIM with Symfony Mailer, you need to configure it in the DSN or use a custom transport
  547.             // This would typically be done in your .env file or through a transport factory
  548.         }
  549.         
  550.         // Send email
  551.         try {
  552.             $this->mailerInterface->send($email);
  553.             return 1;
  554.         } catch (\Exception $e) {
  555.             // Log error
  556.             return 0;
  557.         }
  558.     }
  559.     function EnvoyerEmailAcommpatActivationNewMail($sejour$accomp)
  560.     {
  561.         $sendTo $accomp->getReponseemail();
  562.         $codeSej $sejour->getCodesejour();
  563.         
  564.         // Générer le lien de connexion
  565.         $loginUrl "5sur5sejour.com";
  566.         if ($accomp != null) {
  567.             $loginUrl $this->emailsCmdService->requestLoginLink($accomp);
  568.         }
  569.        // /var/www/5sur5sejour/public/pdf/Mode_emploi_Parent_5sur5sejour_v5_.pdf
  570.         // Générer les PDFs
  571.         $publicDirectory $this->params->get('kernel.project_dir') . '/public/pdf/';
  572.         $pdfFilepath1 $publicDirectory "Mode d'emploi 5sur5sejour" $sejour->getId() . ".pdf";
  573.         $pdfFilepath2 $publicDirectory "Mode d'emploi parent G 5sur5séjour " $sejour->getId() . ".pdf";
  574.         // Créer l'email avec Symfony Mailer
  575.         $email = (new TemplatedEmail())
  576.             ->from(new Address('info@5sur5sejour.com''5sur5 Séjour'))
  577.             ->to($sendTo)
  578.             ->subject('🤗 Votre espace accompagnateur 5sur5séjour est prêt')
  579.             ->htmlTemplate('emails/Activatiocompteaccompa.html.twig')
  580.             ->context([
  581.                 "identifiant" => $sendTo,
  582.                 "code" => $codeSej,
  583.                 "password" => $accomp->getPasswordNonCripted(),
  584.                 "senduser" => $accomp,
  585.                 "nom" => $accomp->getNom(),
  586.                 "prenom" => $accomp->getPrenom(),
  587.                 "loginLink" => $loginUrl,
  588.                 "idSejour" => $sejour->getId(),
  589.                 "sejour" => $sejour,
  590.                 'idSejour' => $sejour->getId(),
  591.                 "password" => $accomp->getPasswordNonCripted(),
  592.             ]);
  593.         // Ajouter les PDFs en pièces jointes
  594.         if (file_exists($pdfFilepath1)) {
  595.             $email->attachFromPath($pdfFilepath1"Mode d'emploi 5sur5sejour.pdf");
  596.         }
  597.         if (file_exists($pdfFilepath2)) {
  598.             $email->attachFromPath($pdfFilepath2"Mode d'emploi parent 5sur5sejour.pdf");
  599.         }
  600.       //  dump($_ENV['MAILER_DSN']);
  601. //dd(getenv('MAILER_DSN'));
  602.         try {
  603.             // AJOUT DEBUG : Vérifier si le template se rend
  604.             error_log("DEBUG: Tentative envoi email à " $sendTo);
  605.             error_log("DEBUG: Template: emails/Activatiocompteaccompa.html.twig");
  606.             error_log("DEBUG: Context prenom=" $accomp->getPrenom() . ", nom=" $accomp->getNom());
  607.             
  608.             $this->mailerInterface->send($email);
  609.  
  610.             return true;
  611.         } catch (\Exception $e) {
  612.             // Log l'erreur complète
  613.           
  614.             return false;
  615.         }
  616.     }
  617.     function EnvoyerEmailNewParent($user)
  618.     {
  619.         $sendTo $user->getEmail();
  620.         // Utiliser l'envoi direct sans queue
  621.         $this->sendEmailDirect(
  622.             $sendTo,
  623.             'Création de votre compte parent 5sur5sejour',
  624.                 'emails/Inscriptionparent.html.twig',
  625.                 [
  626.                     "Nomdestinataire" => $user->getNom(),
  627.                     "Predestinataire" => $user->getPrenom(),
  628.                 "image1" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274063/qw7csxayektmq1leqjpp.png",
  629.                 "image2" => "https://res.cloudinary.com/apss-factory/image/upload/a_exif/v1582274055/ackjwfswxqtv4kuhethg.png",
  630.                 "iconfooter" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png",
  631.                 "iconphoto" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png",
  632.                 "iconloca" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png",
  633.                 "iconmsg" => "https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png",
  634.                 "imggarcon" => "https://res.cloudinary.com/apss-factory/image/upload/v1582558737/shutterstock_13123054_ghafyg.png",
  635.                     "identifiant" => $sendTo,
  636.                     'accompagnateur' => $user
  637.                 ]
  638.         );
  639.     }
  640.     function verifmailold($mail)
  641.     {
  642.         $user $this->em->getRepository(User::class)->findOneBy(array('email' => $mail));
  643.         return $user;
  644.     }
  645.     function notifparentsejour($mail$sms$idSejour$iduser$refaverti)
  646.     {
  647.         // $user = $this->em->getRepository(User::class)->find($iduser);
  648.         // $sejour = $this->em->getRepository(Sejour::class)->find($idSejour);
  649.         $user $this->em->getRepository(User::class)->findOneBy(['id' => $iduser]);
  650.         $user->setSmsnotif($sms);
  651.         $user->setMailnotif($mail);
  652.         $this->em->getManager()->persist($user);
  653.         $parentsejour $this->em->getRepository(ParentSejour::class)->findBy(['idParent' => $user]);
  654.         foreach ($parentsejour as $sejr) {
  655.             $sejr->setSmsnotif($sms);
  656.             if (strpos($sejr->getIdSejour()->getCodeSejour(), "EF") !== false) {
  657.                 $sejr->setSmsnotif(0);
  658.             }
  659.             $sejr->setMailnotif($mail);
  660.             $this->em->getManager()->persist($sejr);
  661.         }
  662.         $this->em->getManager()->flush();
  663.         return $user;
  664.     }
  665.     function sendmailuserforfirstattach($sejId)
  666.     {
  667.         $liste = [];
  668.         $parentsejour $this->em->getRepository(ParentSejour::class)->findBy(array('idSejour' => $sejId'mailnotif' => 1));
  669.         $RefEmail $this->em->getRepository(Ref::class)->find(27);
  670.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail'statut' => 9));
  671.         foreach ($parentsejour as $parent) {
  672.             // $liste = $e->getName();
  673.             //$user = $this->em->getRepository(User::class)->find($parent->getIdParent());
  674.             array_push($liste$parent->getIdParent()->getEmail());
  675.             $sendTo $parent->getIdParent()->getEmail();
  676.             $message = (new \Swift_Message('Nouveau dépôt'))
  677.                 ->setFrom('info@5sur5sejour.com')
  678.                 ->setTo($sendTo);
  679.             //->setBcc(["contact@5sur5sejour.com"]);
  680.             $pathImage2 $Email->getIdImage2()->getPath();
  681.             $pathImage1 $Email->getIdImage1()->getPath();
  682.             $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  683.             $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  684.             $iconphoto $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  685.             $iconloca $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  686.             $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  687.             $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  688.             $message->setBody(
  689.                 $this->templating->render(
  690.                     'emails/MailAChaqueDepot.html.twig',
  691.                     [
  692.                         "image1" => $image1,
  693.                         "image2" => $image2,
  694.                         "iconfooter" => $iconfooter,
  695.                         "iconphoto" => $iconphoto,
  696.                         "iconloca" => $iconloca,
  697.                         "iconmsg" => $iconmsg,
  698.                     ]
  699.                 ),
  700.                 'text/html'
  701.             );
  702.             $signMail $this->params->get('signMail');
  703.             if ($signMail == 'yes') {
  704.                 $domainName $this->params->get('domaine');
  705.                 $selector $this->params->get('selector');
  706.                 $PrivateKey =  file_get_contents($this->params->get('pathDKIM'));
  707.                 $signer = new \Swift_Signers_DKIMSigner($PrivateKey$domainName$selector);
  708.                 $message->attachSigner($signer);
  709.             }
  710.             try {
  711.                 $this->mailer->send($message);
  712.             } catch (\Swift_SwiftException $ex) {
  713.                 $ex->getMessage();
  714.             }
  715.         }
  716.         return $liste;
  717.     }
  718.     function listeEtablissement()
  719.     {
  720.         $liste $this->em->getRepository(Etablisment::class)->findByRole('ROLE_PARTENAIRE');
  721.         return $liste;
  722.     }
  723.     function listePartenaire()
  724.     {
  725.         $liste $this->em->getRepository(User::class)->findByRole('ROLE_PARTENAIRE');
  726.         return $liste;
  727.     }
  728.     function addtoPanier($id)
  729.     {
  730.         $panier $this->session->get('Panier');
  731.         if ($panier == null) {
  732.             $panier = [];
  733.         }
  734.         $panier[] = $id;
  735.         $this->session->set('Panier'$panier);
  736.         return $panier;
  737.     }
  738.     function GetListePanier($id)
  739.     {
  740.         $panier $this->session->get('Panier');
  741.         $MonPanier $this->em->getRepository(Produit::class)->findBy(array('id' => $panier), array('id' => 'DESC'));
  742.         return $MonPanier;
  743.     }
  744.     function condition($id)
  745.     {
  746.         $sejour $this->em->getRepository(Sejour::class)->find($id);
  747.         $sejour->setCd(1);
  748.         $this->em->getManager()->persist($sejour);
  749.         $this->em->getManager()->flush();
  750.         return $sejour;
  751.     }
  752.     function getidlistePartenaire($id)
  753.     {
  754.         $user $this->em->getRepository(User::class)->find($id);
  755.         return $user;
  756.     }
  757.     function creationCompteP($nomP$prenomP$identifiantP$phoneP$emailP$roleP$infoComplementaireP$CompteBancaire$userS$password)
  758.     {
  759.         $user = new User();
  760.         $user->setNom($nomP);
  761.         $user->setPrenom($prenomP);
  762.         $user->setUsername($identifiantP);
  763.         $user->setNummobile($phoneP);
  764.         $user->setEmail(trim($emailP));
  765.         $user->setRoles($roleP);
  766.         $user->setInfocomple($infoComplementaireP);
  767.         $user->setComptebanque($CompteBancaire);
  768.         $user->setUsersecondaire($userS);
  769.         $password $this->genererPassword(10);
  770.         $user->setPasswordNonCripted($password);
  771.         $user->setPassword(
  772.             $this->passwordEncoder->hashPassword(
  773.                 $user,
  774.                 $password
  775.             )
  776.         );
  777.         $this->em->getManager()->persist($user);
  778.         $this->em->getManager()->flush();
  779.         return $user;
  780.     }
  781.     function creationComptePrincipale($nomP$prenomP$identifiantP$phoneP$emailP$roleP$infoComplementaireP$CompteBancaire$password)
  782.     {
  783.         // Compte Principale
  784.         $user = new User();
  785.         $user->setNom($nomP);
  786.         $user->setPrenom($prenomP);
  787.         $user->setUsername($identifiantP);
  788.         $user->setNummobile($phoneP);
  789.         $user->setEmail(trim($emailP));
  790.         $user->setRoles($roleP);
  791.         $user->setInfocomple($infoComplementaireP);
  792.         $user->setComptebanque($CompteBancaire);
  793.         $password $this->genererPassword(10);
  794.         $user->setPasswordNonCripted($password);
  795.         $user->setPassword(
  796.             $this->passwordEncoder->hashPassword(
  797.                 $user,
  798.                 $password
  799.             )
  800.         );
  801.         $this->em->getManager()->persist($user);
  802.         $this->em->getManager()->flush();
  803.         return $user;
  804.     }
  805.     function creationComptePrinc($nomP$prenomP$identifiantP$phoneP$emailP$roleP$infoComplementaireP$password)
  806.     {
  807.         // Compte Principale
  808.         $user = new User();
  809.         $user->setNom($nomP);
  810.         $user->setPrenom($prenomP);
  811.         $user->setUsername($identifiantP);
  812.         $user->setNummobile($phoneP);
  813.         $user->setEmail(trim($emailP));
  814.         $user->setRoles($roleP);
  815.         $user->setInfocomple($infoComplementaireP);
  816.         $password $this->genererPassword(10);
  817.         $user->setPasswordNonCripted($password);
  818.         $user->setPassword(
  819.             $this->passwordEncoder->hashPassword(
  820.                 $user,
  821.                 $password
  822.             )
  823.         );
  824.         $this->em->getManager()->persist($user);
  825.         $this->em->getManager()->flush();
  826.         return $user;
  827.     }
  828.     function creationCompteUSERP($nomP$prenomP$identifiantP$phoneP$emailP$roleP$userS$infoComplementaireP$password)
  829.     {
  830.         // Compte Principale
  831.         $user = new User();
  832.         $user->setNom($nomP);
  833.         $user->setPrenom($prenomP);
  834.         $user->setUsername($identifiantP);
  835.         $user->setNummobile($phoneP);
  836.         $user->setEmail(trim($emailP));
  837.         $user->setRoles($roleP);
  838.         $user->setUsersecondaire($userS);
  839.         $user->setInfocomple($infoComplementaireP);
  840.         $password $this->genererPassword(10);
  841.         $user->setPasswordNonCripted($password);
  842.         $user->setPassword(
  843.             $this->passwordEncoder->hashPassword(
  844.                 $user,
  845.                 $password
  846.             )
  847.         );
  848.         $this->em->getManager()->persist($user);
  849.         $this->em->getManager()->flush();
  850.         return $user;
  851.     }
  852.     function USERP($id$userS)
  853.     {
  854.         // Compte Principale
  855.         $user $this->em->getRepository(User::class)->find($id);
  856.         $user->setUsersecondaire($userS);
  857.         $this->em->getManager()->persist($user);
  858.         $this->em->getManager()->flush();
  859.         return $user;
  860.     }
  861.     function creationCompteS($nomS$prenomS$identifiantS$phoneS$emailS$infoComplementaireS$roleS$password)
  862.     {
  863.         $user = new User();
  864.         $user->setNom($nomS);
  865.         $user->setPrenom($prenomS);
  866.         $user->setUsername($identifiantS);
  867.         $user->setNummobile($phoneS);
  868.         $user->setEmail(trim($emailS));
  869.         $user->setInfocomple($infoComplementaireS);
  870.         $user->setRoles($roleS);
  871.         $user->setPassword(
  872.             $this->passwordEncoder->hashPassword(
  873.                 $user,
  874.                 $password
  875.             )
  876.         );
  877.         $this->em->getManager()->persist($user);
  878.         $this->em->getManager()->flush();
  879.         return $user;
  880.     }
  881.     function creationCompteBancaire($codebnaque$codeguichet$numcompt$clerib$iban$codebic$nom$domicilation)
  882.     {
  883.         // Compte Bancaire
  884.         $comptebancaire = new Comptebancaire();
  885.         $comptebancaire->setCodebnaque($codebnaque);
  886.         $comptebancaire->setCodeguichet($codeguichet);
  887.         $comptebancaire->setNumcompt($numcompt);
  888.         $comptebancaire->setClerib($clerib);
  889.         $comptebancaire->setIban($iban);
  890.         $comptebancaire->setCodebic($codebic);
  891.         $comptebancaire->setNom($nom);
  892.         $comptebancaire->setDomicilation($domicilation);
  893.         $this->em->getManager()->persist($comptebancaire);
  894.         $this->em->getManager()->flush();
  895.         return $comptebancaire;
  896.     }
  897.     function USERPP($id$comptebancaire)
  898.     {
  899.         // Compte Principale
  900.         $user $this->em->getRepository(User::class)->find($id);
  901.         $user->setComptebanque($comptebancaire);
  902.         $this->em->getManager()->persist($user);
  903.         $this->em->getManager()->flush();
  904.         return $user;
  905.     }
  906.     public function ModifcompteBancaire($id$codebnaque$codeguichet$numcompt$clerib$iban$codebic$nom$domicilation)
  907.     {
  908.         $comptebancaire $this->em->getRepository(Comptebancaire::class)->find($id);
  909.         if ($comptebancaire == null) {
  910.             $comptebancaire = new Comptebancaire();
  911.         }
  912.         $comptebancaire->setCodebnaque($codebnaque);
  913.         $comptebancaire->setCodeguichet($codeguichet);
  914.         $comptebancaire->setNumcompt($numcompt);
  915.         $comptebancaire->setClerib($clerib);
  916.         $comptebancaire->setIban($iban);
  917.         $comptebancaire->setCodebic($codebic);
  918.         $comptebancaire->setNom($nom);
  919.         $comptebancaire->setDomicilation($domicilation);
  920.         $this->em->getManager()->persist($comptebancaire);
  921.         $this->em->getManager()->flush();
  922.         return $comptebancaire;
  923.     }
  924.     public function updatepartenaireP($id$nomP$prenomP$identifiantP$phoneP$emailP$infoComplementaireP$roleP$usersecon)
  925.     {
  926.         $user $this->em->getRepository(User::class)->find($id);
  927.         $envoiMailEmailModifier true;
  928.         if ($emailP != $user->getEmail()) {
  929.             $envoiMailEmailModifier true;
  930.         }
  931.         $user->setNom($nomP);
  932.         $user->setPrenom($prenomP);
  933.         $user->setUsername($identifiantP);
  934.         $user->setNummobile($phoneP);
  935.         $user->setEmail(trim($emailP));
  936.         $user->setInfocomple($infoComplementaireP);
  937.         $user->setRoles($roleP);
  938.         if ($usersecon) {
  939.             $user->setUsersecondaire($usersecon);
  940.         }
  941.         $this->em->getManager()->persist($user);
  942.         $this->em->getManager()->flush();
  943.         if ($envoiMailEmailModifier) {
  944.             $this->EnvoyerEmailComptePartenaireModifier($user);
  945.         }
  946.         return $user;
  947.     }
  948.     function EnvoyerEmailComptePartenaireModifier($user)
  949.     {
  950.         $logo '';
  951.         $nom '';
  952.         if ($user->hasRole('ROLE_PARTENAIRE')) {
  953.             $logo $user->getLogourl();
  954.             $nom $user->getNometablisment();
  955.         }
  956.         $RefEmail $this->em->getRepository(Ref::class)->find(21);
  957.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail'statut' => 9));
  958.         $message = (new \Swift_Message('Bienvenue à 5sur5 séjour '))
  959.             ->setFrom('info@5sur5sejour.com')
  960.             ->setTo($user->getEmail());
  961.         //->setBcc(["contact@5sur5sejour.com"]);
  962.         $pathImage2 $Email->getIdImage2()->getPath();
  963.         $pathImage1 $Email->getIdImage1()->getPath();
  964.         $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  965.         $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  966.         $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  967.         $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  968.         $icon2 $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  969.         $icon3 $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  970.         $message->setBody(
  971.             $this->templating->render(
  972.                 'emails/ComptePartenaireModifier.html.twig',
  973.                 [
  974.                     "user" => $user,
  975.                     "image1" => $image1,
  976.                     "image2" => $image2,
  977.                     "icon2" => $icon2,
  978.                     "icon3" => $icon3,
  979.                     "iconfooter" => $iconfooter,
  980.                     "iconmsg" => $iconmsg,
  981.                     'logo' => $logo,
  982.                     'nom' => $nom,
  983.                 ]
  984.             ),
  985.             'text/html'
  986.         );
  987.         $signMail $this->params->get('signMail');
  988.         if ($signMail == 'yes') {
  989.             $domainName $this->params->get('domaine');
  990.             $selector $this->params->get('selector');
  991.             $PrivateKey =  file_get_contents($this->params->get('pathDKIM'));
  992.             $signer = new \Swift_Signers_DKIMSigner($PrivateKey$domainName$selector);
  993.             $message->attachSigner($signer);
  994.         }
  995.         try {
  996.             $this->mailer->send($message);
  997.         } catch (\Swift_SwiftException $ex) {
  998.             $ex->getMessage();
  999.         }
  1000.     }
  1001.     public function updatepartenairePrinc($id$nomP$prenomP$identifiantP$phoneP$emailP$infoComplementaireP$roleP)
  1002.     {
  1003.         $user $this->em->getRepository(User::class)->find($id);
  1004.         $envoiMailEmailModifier true;
  1005.         if ($emailP != $user->getEmail()) {
  1006.             $envoiMailEmailModifier true;
  1007.         }
  1008.         $user->setNom($nomP);
  1009.         $user->setPrenom($prenomP);
  1010.         $user->setUsername($identifiantP);
  1011.         $user->setNummobile($phoneP);
  1012.         $user->setEmail(trim($emailP));
  1013.         $user->setInfocomple($infoComplementaireP);
  1014.         $user->setRoles($roleP);
  1015.         $this->em->getManager()->persist($user);
  1016.         $this->em->getManager()->flush();
  1017.         if ($envoiMailEmailModifier) {
  1018.             $this->EnvoyerEmailComptePartenaireModifier($user);
  1019.         }
  1020.         return $user;
  1021.     }
  1022.     public function updatepartenaireS($user$nomS$prenomS$identifiantS$phoneS$emailS$infoComplementaireS$roleS)
  1023.     {
  1024.         if ($user) {
  1025.             //$user = $this->em->getRepository(User::class)->find($id);
  1026.             //$idusersecondaire= $user->getUsersecondaire();
  1027.             //$user = $this->em->getRepository(User::class)->find($idusersecondaire);
  1028.             $user->setNom($nomS);
  1029.             $user->setPrenom($prenomS);
  1030.             $user->setUsername($identifiantS);
  1031.             $user->setNummobile($phoneS);
  1032.             $user->setEmail(trim($emailS));
  1033.             $user->setInfocomple($infoComplementaireS);
  1034.             $user->setRoles($roleS);
  1035.             $this->em->getManager()->persist($user);
  1036.             $this->em->getManager()->flush();
  1037.         } else {
  1038.             if (($nomS != null) || ($prenomS != null) || ($identifiantS != null) || ($phoneS != null) || ($emailS != null) || ($infoComplementaireS != null) || ($roleS != null)) {
  1039.                 $user $this->creationCompteS($nomS$prenomS$identifiantS$phoneS$emailS$infoComplementaireS"ROLE_PARTENAIRE"'azerty123');
  1040.             }
  1041.         }
  1042.         return $user;
  1043.     }
  1044.     public function listesejourPartenaireconnecter($user)
  1045.     {
  1046.         $sejours $this->em->getRepository(Sejour::class)->NombreofsejourParten($user->getId());
  1047.         return $sejours;
  1048.     }
  1049.     function creationNewAcommpaviaenmasse($nom$prenom$etablisment$fonction$adressetablisment$phoneacc$mail$role$password$AccompaLogo$email)
  1050.     {
  1051.         $user = new User();
  1052.         $user->setNom($nom);
  1053.         $user->setPrenom($prenom);
  1054.         $user->setUsername($mail);
  1055.         $user->setReponseemail(trim($email));
  1056.         // $user->setUsername($identifiant);
  1057.         $user->setFonction($fonction);
  1058.         $user->setNummobile($phoneacc);
  1059.         $user->setEmail(trim($mail));
  1060.         $user->setAdresse($adressetablisment);
  1061.         $user->setNometablisment($etablisment);
  1062.         // Firas : ajouter logo
  1063.         $user->setLogourl($AccompaLogo);
  1064.         //$user->setnometablisment();
  1065.         $user->setDateCreation(new \DateTime());
  1066.         $user->addRole($role);
  1067.         $user->setPasswordNonCripted($password);
  1068.         $user->setPassword(
  1069.             $this->passwordEncoder->hashPassword(
  1070.                 $user,
  1071.                 $password
  1072.             )
  1073.         );
  1074.         $this->em->getManager()->persist($user);
  1075.         $this->em->getManager()->flush();
  1076.         return $user;
  1077.     }
  1078.     function   modifieradress_comande($rue$ville$pays$codepostal$iduser$prenom$nom$organism$prenomfacturation$nomfacturation$organismfacturation$ruefacturation$villefacturation$paysfacturation$codepostalfacturation)
  1079.     {
  1080.         $user $this->em->getRepository(User::class)->find($iduser);
  1081.         $Adress $user->getadresslivraison();
  1082.         if ($Adress == null) {
  1083.             $Adress = new Adress;
  1084.         }
  1085.         $Adress->setRuevoi($rue);
  1086.         $Adress->setCodepostal($codepostal);
  1087.         $Adress->setVille($ville);
  1088.         $Adress->setPays($pays);
  1089.         $Adress->setOrganism($organism);
  1090.         if (!is_null($nom) && trim($nom) != "") {
  1091.             $Adress->setNomadrres($nom);
  1092.         } else {
  1093.             $Adress->setNomadrres($user->getNom());
  1094.         }
  1095.         if (!is_null($prenom) && trim($prenom) != "") {
  1096.             $Adress->setPrenomadress($prenom);
  1097.         } else {
  1098.             $Adress->setPrenomadress($user->getPrenom());
  1099.         }
  1100.         $Adress->settype('livraison');
  1101.         $this->em->getManager()->persist($Adress);
  1102.         $this->em->getManager()->flush();
  1103.         $user->setadresslivraison($Adress);
  1104.         $AdressFacturation =   $user->getAdressfactoration();
  1105.         if ($AdressFacturation == null) {
  1106.             $AdressFacturation = new Adress;
  1107.         }
  1108.         $AdressFacturation->setRuevoi($ruefacturation);
  1109.         $AdressFacturation->setCodepostal($codepostalfacturation);
  1110.         $AdressFacturation->setVille($villefacturation);
  1111.         $AdressFacturation->setPays($paysfacturation);
  1112.         $AdressFacturation->setOrganism($organismfacturation);
  1113.         if (!is_null($nomfacturation) && trim($nomfacturation) != "") {
  1114.             $AdressFacturation->setNomadrres($nomfacturation);
  1115.         } else {
  1116.             $AdressFacturation->setNomadrres($user->getNom());
  1117.         }
  1118.         if (!is_null($prenomfacturation) && trim($prenomfacturation) != "") {
  1119.             $AdressFacturation->setPrenomadress($prenomfacturation);
  1120.         } else {
  1121.             $AdressFacturation->setPrenomadress($user->getPrenom());
  1122.         }
  1123.         $AdressFacturation->settype('Facturation');
  1124.         $this->em->getManager()->persist($AdressFacturation);
  1125.         $this->em->getManager()->flush();
  1126.         $user->setAdressfactoration($AdressFacturation);
  1127.         $this->em->getManager()->persist($user);
  1128.         $this->em->getManager()->flush();
  1129.         return $Adress;
  1130.     }
  1131.     function codesecuriter($code$id)
  1132.     {
  1133.         $user $this->em->getRepository(User::class)->find($id);
  1134.         $comptebancaire =  new Comptebancaire;
  1135.         $comptebancaire->setNumcompt($code);
  1136.         $this->em->getManager()->persist($comptebancaire);
  1137.         $this->em->getManager()->flush();
  1138.         $user->setComptebanque($comptebancaire);
  1139.         $this->em->getManager()->persist($user);
  1140.         $this->em->getManager()->flush();
  1141.     }
  1142.     function genererPassword($longueur)
  1143.     {
  1144.         $caracteres '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  1145.         $longueurMax strlen($caracteres);
  1146.         $chaineAleatoire '';
  1147.         for ($i 0$i $longueur$i++) {
  1148.             $chaineAleatoire .= $caracteres[rand(0$longueurMax 1)];
  1149.         }
  1150.         return $chaineAleatoire;
  1151.     }
  1152.     function modifierDetailsAcco($idAcco$nom$prenom$email$tel)
  1153.     {
  1154.         $Acco $this->em->getRepository(User::class)->find($idAcco);
  1155.         $Acco->setPrenom($prenom);
  1156.         $Acco->setNom($nom);
  1157.         $Acco->setNummobile($tel);
  1158.         $Acco->setReponseemail(trim($email));
  1159.         $this->em->getManager()->persist($Acco);
  1160.         $this->em->getManager()->flush();
  1161.     }
  1162.     function AjouterDocument_partenaitre($cloudImagescouleur$nomdocument$Etablisment_Find)
  1163.     {
  1164.         $Documentpartenaire = new Documentpartenaire();
  1165.         $Documentpartenaire->setIdetablisment($Etablisment_Find);
  1166.         $Documentpartenaire->setNomdocument($nomdocument);
  1167.         $Documentpartenaire->setPath($cloudImagescouleur[0]["path"]);
  1168.         $this->em->getManager()->persist($Documentpartenaire);
  1169.         $this->em->getManager()->flush();
  1170.     }
  1171.     function conditioncnx($id)
  1172.     {
  1173.         $user $this->em->getRepository(User::class)->find($id);
  1174.         $user->setCnxpartenaire(1);
  1175.         $this->em->getManager()->persist($user);
  1176.         $this->em->getManager()->flush();
  1177.         return $user;
  1178.     }
  1179.     function conditioncnxparent($id)
  1180.     {
  1181.         $user $this->em->getRepository(User::class)->find($id);
  1182.         $user->setCnxparent(1);
  1183.         $this->em->getManager()->persist($user);
  1184.         $this->em->getManager()->flush();
  1185.         return $user;
  1186.     }
  1187.     function findsejParent($id_parent)
  1188.     {
  1189.         $ParentSejour $this->em->getRepository(ParentSejour::class)->find($id_parent);
  1190.         return $ParentSejour;
  1191.     }
  1192.     function EnvoyerEmailNewUserediteuroradmin($user$password)
  1193.     {
  1194.         $RefEmail $this->em->getRepository(Ref::class)->find(20);
  1195.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail));
  1196.         $sendTo $user->getEmail();
  1197.         $senduser $user;
  1198.         $message = (new \Swift_Message('Nouveau admin ou editeur'))
  1199.             ->setFrom('info@5sur5sejour.com')
  1200.             ->setTo($sendTo);
  1201.         //->setBcc(["contact@5sur5sejour.com"]);
  1202.         $pathImage2 $Email->getIdImage2()->getPath();
  1203.         $pathImage1 $Email->getIdImage1()->getPath();
  1204.         $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  1205.         $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  1206.         $iconphoto $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  1207.         $iconloca $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  1208.         $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  1209.         $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  1210.         $message->setBody(
  1211.             $this->templating->render(
  1212.                 'emails/DesmandecreationAdminorEditeur.html.twig',
  1213.                 [
  1214.                     "Nomdestinataire" => $user->getNom(),
  1215.                     "Predestinataire" => $user->getPrenom(),
  1216.                     "image1" => $image1,
  1217.                     "image2" => $image2,
  1218.                     "iconfooter" => $iconfooter,
  1219.                     "iconphoto" => $iconphoto,
  1220.                     "iconloca" => $iconloca,
  1221.                     "iconmsg" => $iconmsg,
  1222.                     "identifiant" => $sendTo,
  1223.                     "senduser" => $senduser,
  1224.                     "roles" => $user->getRoles(),
  1225.                     "pass" => $password
  1226.                 ]
  1227.             ),
  1228.             'text/html'
  1229.         );
  1230.         try {
  1231.             $this->mailer->send($message);
  1232.         } catch (\Swift_SwiftException $ex) {
  1233.             $ex->getMessage();
  1234.         }
  1235.     }
  1236.     function ModifierPwdParent($idParent$passwordparent)
  1237.     {
  1238.         $user =  $this->em->getRepository(User::class)->find($idParent);
  1239.         $user->setPassword(
  1240.             $this->passwordEncoder->hashPassword(
  1241.                 $user,
  1242.                 $passwordparent
  1243.             )
  1244.         );
  1245.         $this->em->getManager()->persist($user);
  1246.         $this->em->getManager()->flush();
  1247.         $this->EnvoyerEmailPWDModifer($user);
  1248.         return $user;
  1249.     }
  1250.     function ModifierPwdPartenaire($idPatenaire$passwordpartenaire)
  1251.     {
  1252.         $user =  $this->em->getRepository(User::class)->find($idPatenaire);
  1253.         $user->setPassword(
  1254.             $this->passwordEncoder->hashPassword(
  1255.                 $user,
  1256.                 $passwordpartenaire
  1257.             )
  1258.         );
  1259.         $this->em->getManager()->persist($user);
  1260.         $this->em->getManager()->flush();
  1261.         $this->EnvoyerEmailPWDModifer($user);
  1262.         return $user;
  1263.     }
  1264.     function EnvoyerEmailPWDModifer($user)
  1265.     {
  1266.         $RefEmail $this->em->getRepository(Ref::class)->find(20);
  1267.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail));
  1268.         $sendTo $user->getEmail();
  1269.         $senduser $user;
  1270.         $message = (new \Swift_Message('Modification de votre mot de passe 5sur5sejour'))
  1271.             ->setFrom('info@5sur5sejour.com')
  1272.             ->setTo($sendTo);
  1273.         //->setBcc(["contact@5sur5sejour.com"]);
  1274.         $pathImage2 $Email->getIdImage2()->getPath();
  1275.         $pathImage1 $Email->getIdImage1()->getPath();
  1276.         $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  1277.         $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  1278.         $iconphoto $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  1279.         $iconloca $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  1280.         $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  1281.         $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  1282.         $message->setBody(
  1283.             $this->templating->render(
  1284.                 'emails/PwdModifer.html.twig',
  1285.                 [
  1286.                     "Nomdestinataire" => $user->getNom(),
  1287.                     "Predestinataire" => $user->getPrenom(),
  1288.                     "image1" => $image1,
  1289.                     "image2" => $image2,
  1290.                     "iconfooter" => $iconfooter,
  1291.                     "iconphoto" => $iconphoto,
  1292.                     "iconloca" => $iconloca,
  1293.                     "iconmsg" => $iconmsg,
  1294.                     "identifiant" => $sendTo,
  1295.                     "senduser" => $senduser,
  1296.                     "roles" => $user->getRoles(),
  1297.                 ]
  1298.             ),
  1299.             'text/html'
  1300.         );
  1301.         try {
  1302.             $this->mailer->send($message);
  1303.         } catch (\Swift_SwiftException $ex) {
  1304.             $ex->getMessage();
  1305.         }
  1306.     }
  1307.     function creationAccompagnateurPlus($nom$prenom$fonction$nomEtab$addressEtab$numTel$mail$password$role)
  1308.     {
  1309.         $user = new User();
  1310.         $user->setNom($nom);
  1311.         $user->setPrenom($prenom);
  1312.         $user->setNummobile($numTel);
  1313.         $user->setFonction($fonction);
  1314.         $user->setAdresse($addressEtab);
  1315.         $user->setNometablisment($nomEtab);
  1316.         $user->setEmail(trim($mail));
  1317.         $user->setReponseemail(trim($mail));
  1318.         $user->setUsername(trim($mail));
  1319.         $user->setPassword(
  1320.             $this->passwordEncoder->hashPassword(
  1321.                 $user,
  1322.                 $password
  1323.             )
  1324.         );
  1325.         $user->setAccompaplus("oui");
  1326.         $user->setPasswordNonCripted($password);
  1327.         $user->setDateCreation(new \DateTime());
  1328.         $user->addRole($role);
  1329.         $this->em->getManager()->persist($user);
  1330.         $this->em->getManager()->flush();
  1331.         return $user;
  1332.     }
  1333.     function EnvoyerEmailAccoPlusDevenirPartenaire($user)
  1334.     {
  1335.         $logo '';
  1336.         $nom '';
  1337.         if ($user->hasRole('ROLE_PARTENAIRE')) {
  1338.             $logo $user->getLogourl();
  1339.             $nom $user->getNometablisment();
  1340.         }
  1341.         $RefEmail $this->em->getRepository(Ref::class)->find(17);
  1342.         $Email $this->em->getRepository(Emailing::class)->findOneBy(array('typeemail' => $RefEmail));
  1343.         $sendTo $user->getEmail();
  1344.         $message = (new \Swift_Message('Déjà 5 séjours ensemble, devenons partenaire ?'))
  1345.             ->setFrom('info@5sur5sejour.com')
  1346.             ->setTo($sendTo);
  1347.         //->setBcc(["contact@5sur5sejour.com"]);
  1348.         $pathImage2 $Email->getIdImage2()->getPath();
  1349.         $pathImage1 $Email->getIdImage1()->getPath();
  1350.         $image1 $message->embed(Swift_Image::fromPath("$pathImage1"));
  1351.         $image2 $message->embed(Swift_Image::fromPath("$pathImage2"));
  1352.         $iconmsg $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Groupe_418_wbyysk.png"));
  1353.         $iconfooter $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719651/Picto5sur5_rapbfy.png"));
  1354.         $icon2 $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_420_uynuqz.png"));
  1355.         $icon3 $message->embed(Swift_Image::fromPath("https://res.cloudinary.com/apss-factory/image/upload/v1582719650/Groupe_419_pqx0dx.png"));
  1356.         $message->setBody(
  1357.             $this->templating->render(
  1358.                 'emails/AccompagnateurPlusDevenirPartenaire.html.twig',
  1359.                 [
  1360.                     "image1" => $image1,
  1361.                     "image2" => $image2,
  1362.                     "icon2" => $icon2,
  1363.                     "icon3" => $icon3,
  1364.                     "iconfooter" => $iconfooter,
  1365.                     "iconmsg" => $iconmsg,
  1366.                     "identifiant" => $sendTo,
  1367.                     'logo' => $logo,
  1368.                     'nom' => $nom,
  1369.                 ]
  1370.             ),
  1371.             'text/html'
  1372.         );
  1373.         $signMail $this->params->get('signMail');
  1374.         if ($signMail == 'yes') {
  1375.             $domainName $this->params->get('domaine');
  1376.             $selector $this->params->get('selector');
  1377.             $PrivateKey file_get_contents($this->params->get('pathDKIM'));
  1378.             $signer = new \Swift_Signers_DKIMSigner($PrivateKey$domainName$selector);
  1379.             $message->attachSigner($signer);
  1380.         }
  1381.         try {
  1382.             $this->mailer->send($message);
  1383.         } catch (\Swift_SwiftException $ex) {
  1384.             $ex->getMessage();
  1385.         }
  1386.     }
  1387.     public function sendCommandeGroupeeEmail($sejour$nbAlbums$email_accompagnateur$phone$address,$addressComplement,$postalCode$city ,$region,$country,$accompagnateur,$hasAlbum)
  1388.     { 
  1389.         $email = (new TemplatedEmail())
  1390.             ->from('info@5sur5sejour.com')
  1391.             ->to('contact@5sur5sejour.com')
  1392.             ->cc('ramzi.benlarbi@gmail.com')
  1393.             ->subject('Nouvelle commande groupée d\'albums - Séjour ' $sejour->getCodeSejour())
  1394.             ->htmlTemplate('emails/NotificationDemandeCommandeGroupee.html.twig')
  1395.             ->context([
  1396.                 'sejour' => $sejour,
  1397.                 'nbAlbums' => $nbAlbums,
  1398.                 'emailAccompagnateur' => $email_accompagnateur,
  1399.                 'phone' => $phone,
  1400.                 'address' => $address,
  1401.                 'accompagnateur' => $accompagnateur,
  1402.                 'city' => $city,
  1403.                 'region' => $region,
  1404.                 'country' => $country,
  1405.                 'addressComplement' => $addressComplement,
  1406.                 'postalCode' => $postalCode,
  1407.                 'hasAlbum' => $hasAlbum,
  1408.                 'date_commande' => new \DateTime()
  1409.             ]);
  1410.         $this->mailerInterface->send($email);
  1411.     }
  1412. }