src/Service/AccountService.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Entity\Email;
  4. use App\Entity\Entreprise;
  5. use App\Entity\Parametrage;
  6. use App\Entity\Utilisateur;
  7. use App\Repository\EmailModeleRepository;
  8. use App\Repository\UtilisateurRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. class AccountService
  11. {
  12.     public function __construct(EntityManagerInterface $managerAppParametersService $appParametersService,UtilisateurRepository $utilisateurRepository,EmailModeleRepository $emailModeleRepository)
  13.     {
  14.         $this->appParametersService $appParametersService;
  15.         $this->utilisateurRepository $utilisateurRepository;
  16.         $this->emailModeleRepository $emailModeleRepository;
  17.         $this->manager $manager;
  18.     }
  19.     public function reinitialisePassword(Utilisateur $user){
  20.         $paramUrl $this->appParametersService->getAppLocalParameter('APPLICATION_URL');
  21.         $token=uniqid(''true);
  22.         $user->setToken($token);
  23.         $url=$paramUrl.'#/resetpassword/'.$user->getEmail().'/'.$token;
  24.         //PASSWORD_DEFINITION
  25.         $emailModele=$this->emailModeleRepository->findOneBy(array("code" => 'PASSWORD_DEFINITION'));
  26.         $titre=$emailModele->getObjet();
  27.         $content=$emailModele->getCorps();
  28.         //remplacer les variables
  29.         $vars=array(
  30.             'prenom' => $user->getPrenom(),
  31.             'nom' => $user->getNom(),
  32.             'url'=> $url
  33.         );
  34.         while($i current($vars)) {
  35.             $content str_replace('{{'.key($vars).'}}'$i$content);
  36.             next($vars);
  37.         }
  38.         //Envoyer l'email d'activation de compte
  39.         $email=new Email();
  40.         $email->setObjet($titre);
  41.         $email->setCorps($content);
  42.         $email->setDestinataire($user->getEmail());
  43.         $this->manager->persist($user);
  44.         $this->manager->persist($email);
  45.         return true;
  46.     }
  47.     public function avertirFirstAccountEntreprise(Entreprise $entrepriseUtilisateur $user){
  48.         $paramUrl $this->appParametersService->getAppLocalParameter('APPLICATION_URL');
  49.         //trouver le premier compte de l'entreprise
  50.         $sql="select id from commun.utilisateur where actif=true and entreprise_id=:uuidEntreprise order by inscription asc";
  51.         $conn $this->manager->getConnection();
  52.         $stmt $conn->prepare($sql);
  53.         $resultSet $stmt->executeQuery(['uuidEntreprise' => $entreprise->getId()]);
  54.         $resultFirstUser=$resultSet->fetchAllAssociative();
  55.         //lire l'utilisateur
  56.         if(count($resultFirstUser)>0){
  57.             $firstUser=$this->utilisateurRepository->findOneBy(array("id" => $resultFirstUser[0]['id'], "actif" => true));
  58.             $token=uniqid(''true);
  59.             $user->setToken($token);
  60.             $url=$paramUrl.'#/activeaccount/'.$user->getEmail().'/'.$token;
  61.             //ACTIVE_ACCOUNT
  62.             $emailModele=$this->emailModeleRepository->findOneBy(array("code" => 'ACTIVE_ACCOUNT'));
  63.             $titre=$emailModele->getObjet();
  64.             $content=$emailModele->getCorps();
  65.             //remplacer les variables
  66.             $vars=array(
  67.                 'prenom' => $firstUser->getPrenom(),
  68.                 'nom' => $firstUser->getNom(),
  69.                 'nomEntreprise' =>  $entreprise->getNom(),
  70.                 'siretEntreprise' =>  $entreprise->getSiret(),
  71.                 'prenomUtilisateur' =>  $user->getPrenom(),
  72.                 'nomUtilisateur' =>  $user->getNom(),
  73.                 'emailUtilisateur' => $user->getEmail(),
  74.                 'url'=> $url
  75.             );
  76.             while($i current($vars)) {
  77.                 $content str_replace('{{'.key($vars).'}}'$i$content);
  78.                 next($vars);
  79.             }
  80.             //Envoyer l'email d'activation de compte
  81.             $email=new Email();
  82.             $email->setObjet($titre);
  83.             $email->setCorps($content);
  84.             $email->setDestinataire($firstUser->getEmail());
  85.             $this->manager->persist($user);
  86.             $this->manager->persist($email);
  87.             $this->avertirNewAccountEntreprise($user);
  88.         }else{
  89.             $this->reinitialisePassword($user);
  90.         }
  91.     }
  92.     public function avertirNewAccountEntreprise(Utilisateur $user){
  93.         //ATTENTE_VALIDATION
  94.         $emailModele=$this->emailModeleRepository->findOneBy(array("code" => 'ATTENTE_VALIDATION'));
  95.         $titre=$emailModele->getObjet();
  96.         $content=$emailModele->getCorps();
  97.         //remplacer les variables
  98.         $vars=array(
  99.             'prenom' => $user->getPrenom(),
  100.             'nom' => $user->getNom()
  101.         );
  102.         while($i current($vars)) {
  103.             $content str_replace('{{'.key($vars).'}}'$i$content);
  104.             next($vars);
  105.         }
  106.         $email=new Email();
  107.         $email->setObjet($titre);
  108.         $email->setCorps($content);
  109.         $email->setDestinataire($user->getEmail());
  110.         $this->manager->persist($email);
  111.     }
  112.     public function avertirUnactiveAccount(Utilisateur $user$motif ''){
  113.         //ATTENTE_VALIDATION
  114.         $emailModele=$this->emailModeleRepository->findOneBy(array("code" => 'UNACTIVE_ACCOUNT'));
  115.         $titre=$emailModele->getObjet();
  116.         $content=$emailModele->getCorps();
  117.         //remplacer les variables
  118.         $vars=array(
  119.             'entreprise' => $user->getEntreprise()->getNom().' ('.$user->getEntreprise()->getSiret().')',
  120.             'prenom' => $user->getPrenom(),
  121.             'nom' => $user->getNom(),
  122.             'email' => $user->getEmail()
  123.         );
  124.         while($i current($vars)) {
  125.             $content str_replace('{{'.key($vars).'}}'$i$content);
  126.             next($vars);
  127.         }
  128.         //Remplacer le motif
  129.         if($motif != ''){
  130.             $content str_replace('{{motif}}''<p>Pour le motif suivant : '.$motif.'</p>'$content);
  131.         }else{
  132.             $content str_replace('{{motif}}'''$content);
  133.         }
  134.         //Lire l'adresse email destinatrice
  135.         $param $this->manager->getRepository(Parametrage::class)->findOneBy(array('code' => 'NOTIFICATION_DESINSCRIPTIONS_DESTINATAIRES'));
  136.         $emails explode(',',$param->getValeur());
  137.         foreach ($emails as $mail){
  138.             $email=new Email();
  139.             $email->setObjet($titre);
  140.             $email->setCorps($content);
  141.             $email->setDestinataire($mail);
  142.             $this->manager->persist($email);
  143.         }
  144.     }
  145. }