src/Services/UserService.php line 52

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  */
  5. namespace App\Services;
  6. use App\Entity\Entreprise;
  7. use App\Entity\Fournisseur;
  8. use App\Entity\FournisseurProject;
  9. use App\Entity\Project;
  10. use App\Entity\User;
  11. use App\Entity\UserStripe;
  12. use App\Form\FournisseurProjectType;
  13. use App\Form\UserFournisseurProjectType;
  14. use App\Form\UserIntervenantType;
  15. use App\Form\UserProjectType;
  16. use App\Form\UserSpvType;
  17. use App\Form\UserType;
  18. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  19. use PhpOffice\PhpSpreadsheet\Style\Border;
  20. use PhpOffice\PhpSpreadsheet\Style\Color;
  21. use PhpOffice\PhpSpreadsheet\Style\Fill;
  22. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  23. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use Symfony\Component\Form\FormFactoryInterface;
  26. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  27. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  28. use Symfony\Contracts\Translation\TranslatorInterface;
  29. use Symfony\Component\Security\Core\Security;
  30. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  31. use Twig\Environment;
  32. use App\Entity\Centrale;
  33. use Symfony\Component\Validator\Constraints as Assert;
  34. use Symfony\Component\Validator\Validator\ValidatorInterface;
  35. class UserService
  36. {
  37.     private $em;
  38.     private $trans;
  39.     private $params;
  40.     private $security;
  41.     private $session;
  42.     private $twig;
  43.     private $notification;
  44.     public function __construct(
  45.         Environment $twig,
  46.         SessionInterface $session,
  47.         Security $security,
  48.         ParameterBagInterface $params,
  49.         EntityManagerInterface $em,
  50.         TranslatorInterface $trans,
  51.         ValidatorInterface $validator,
  52.         FlashBagInterface $flashBag,
  53.         UserPasswordEncoderInterface $passwordEncoder,
  54.         Notifications $notifications,
  55.         FormFactoryInterface $form
  56.     ) {
  57.         $this->em = $em;
  58.         $this->trans = $trans;
  59.         $this->params = $params;
  60.         $this->security = $security;
  61.         $this->session = $session;
  62.         $this->twig = $twig;
  63.         $this->validator = $validator;
  64.         $this->form = $form;
  65.         $this->flashBag = $flashBag;
  66.         $this->passwordEncoder = $passwordEncoder;
  67.         $this->notification = $notifications;
  68.     }
  69.     public function paginate($request){
  70.         $length = $request->get('length');
  71.         $length = $length && ($length!=-1)?$length:0;
  72.         $start = $request->get('start');
  73.         $start = $length?($start && ($start!=-1)?$start:0)/$length:0;
  74.         $column =  $search = $request->get('columns');
  75.         $order = $request->get('order')[0];
  76.         $columnOrder = $order['column'];
  77.         $dirOrder = $order['dir'];
  78.         $columNameOrder = $column[$columnOrder]['data'];
  79.         $search = $request->get('search');
  80.         $role = $request->get('role');
  81.         $isArchive = $request->get('isArchive');
  82.         $filters = [
  83.             'query' => trim(@$search['value']),
  84.             'isArchive' => $isArchive
  85.         ];
  86.         $users= $this->em->getRepository(\App\Entity\User::class)->search($role,$filters, $start, $length, true,$columNameOrder, $dirOrder);
  87.         $recordsFiltered= $this->em->getRepository(\App\Entity\User::class)->search($role,$filters, $start, $length, true,$columNameOrder, $dirOrder,true);
  88.         $recordsTotal= $this->em->getRepository(\App\Entity\User::class)->search($role,array(), $start, $length, true,$columNameOrder, $dirOrder,true);
  89.         $output = array(
  90.             'data' => array(),
  91.             'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
  92.             'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
  93.         );
  94.         $baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
  95.         $intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
  96.         foreach ($users as $user) {
  97.            if(in_array('ROLE_SUPER_ADMINISTRATOR',$user->getRoles())){
  98.                $acces = '-';
  99.            }else{
  100.                if($user->getAcces()== User::ACCES_LECTURE){
  101.                    $acces = 'Lecture';
  102.                }else{
  103.                    $acces = 'Écriture';
  104.                }
  105.            }
  106.             $action =
  107.                 $this->twig->render(
  108.                     'admin/user/default/bouton.html.twig', array(
  109.                     'user' => $user
  110.                 ));
  111.             $checkbox =
  112.                 $this->twig->render(
  113.                     'admin/user/default/checkbox.html.twig', array(
  114.                     'user' => $user
  115.                 ));
  116.             $statut =
  117.                 $this->twig->render(
  118.                     'admin/user/default/status.html.twig', array(
  119.                     'status' => $user->getIsEnabled()
  120.                 ));
  121.             $role =
  122.                 $this->twig->render(
  123.                     'admin/user/default/role.html.twig', array(
  124.                     'role' =>  strtoupper($user->getRoleString()),
  125.                     'user' => $user
  126.                 ));
  127.             $output['data'][] = [
  128.                 'responsive_id' => '',
  129.                 'id' => $user->getId(),
  130.                 'typeAcces' => $user->getTypeAccesStr(),
  131.                 'firstname' => $user->getFirstname(),
  132.                 'lastname' => $user->getLastname(),
  133.                 'entreprise' => $user->getEntreprise() ? $user->getEntreprise()->getName() : '' ,
  134.                 'email' => $user->getEmail(),
  135.                 'role' =>  $role,
  136.                 'derniereConnecxion' => $user->getDerniereConnecxion() ? $intl->format($user->getDerniereConnecxion()).' '.$user->getDerniereConnecxion()->format('H:i:s') :' - ',
  137.                 'acces' => $acces,
  138.                 'status' => $statut,
  139.                 'isLoginSso' => $user->getIsLoginSso() ? '<span class="colorGreen">Oui</span>' : '<span class="colorRed">Non</span>',
  140.                 'action' => $action,
  141.                 'checkbox' => $checkbox,
  142.             ];
  143.         }
  144.         return $output;
  145.     }
  146.     /**
  147.      * GENERATE RANDOM PASSWORD ON CREATE USER
  148.      * @return string
  149.      */
  150.     function randomPassword() {
  151.         $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  152.         $pass = array(); //remember to declare $pass as an array
  153.         $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
  154.         for ($i = 0; $i < 8; $i++) {
  155.             $n = rand(0, $alphaLength);
  156.             $pass[] = $alphabet[$n];
  157.         }
  158.         return implode($pass); //turn the array into a string
  159.     }
  160.     public function addUser($request) : array
  161.     {
  162.         $user = new \App\Entity\User();
  163.         $formUser = $this->form->create(UserType::class, $user);
  164.         $formUser->handleRequest($request);
  165.         if ($formUser->isSubmitted() && $formUser->isValid()) {
  166.             $role = $request->get('role');
  167.             $role = $request->get('role');
  168.             $typeFournissuer = 0;
  169.             if(!$role){
  170.                 return [
  171.                     'formUser' => $formUser->createView(),
  172.                     'success' => false,
  173.                 ];
  174.             }
  175.             if(in_array($role,[User::fournisseur_type_EPC,User::fournisseur_type_Installateur,User::fournisseur_type_Charpentier,User::fournisseur_type_Notaire,User::fournisseur_type_Constructeur,User::fournisseur_type_Mainteneur,User::fournisseur_type_Conducteur,User::fournisseur_type_AMO])){
  176.                 $typeFournissuer = $role;
  177.                 $role = 'ROLE_FOURNISSEUR';
  178.                 if(!$request->get('user')['fournisseur']){
  179.                     return [
  180.                         'formUser' => $formUser->createView(),
  181.                         'msgErreur' => 'Veillez choisir le fournisseur',
  182.                         'success' => false,
  183.                     ];
  184.                 }
  185.             }
  186.             $password = $this->randomPassword();
  187.             $user->setPassword(
  188.                 $this->passwordEncoder->encodePassword(
  189.                     $user,
  190.                     $password
  191.                 )
  192.             );
  193.             $user->setFournisseurType($typeFournissuer);
  194.             $user->setRoles(array($role));
  195.             $this->em->persist($user);
  196.             $this->em->flush();
  197.             $this->notification->createUser($user, $password);
  198.             $this->flashBag->add(
  199.                 'success',
  200.                 $this->trans->trans('Vous avez ajouté un nouveau compte.')
  201.             );
  202.             return [
  203.                 'formUser' => $formUser->createView(),
  204.                 'success' => true
  205.             ];
  206.         }
  207.         return [
  208.             'formUser' => $formUser->createView(),
  209.             'success' => false,
  210.         ];
  211.     }
  212.     public function editUser($request,$id) : array
  213.     {
  214.         $user = $this->em->getRepository(User::class)->find($id);
  215.         $formUser = $this->form->create(UserType::class, $user,['userEntity'=>$user]);
  216.         $formUser->handleRequest($request);
  217.         if ($formUser->isSubmitted() && $formUser->isValid()) {
  218.             $role = $request->get('role');
  219.             $typeFournissuer = 0;
  220.             if(in_array($role,[User::fournisseur_type_EPC,User::fournisseur_type_Installateur,User::fournisseur_type_Charpentier,User::fournisseur_type_Notaire,User::fournisseur_type_Constructeur,User::fournisseur_type_Mainteneur,User::fournisseur_type_Conducteur,User::fournisseur_type_AMO])){
  221.                 $typeFournissuer = $role;
  222.                 $role = 'ROLE_FOURNISSEUR';
  223.                 $user->setRoles(array($role));
  224.                 if(!$request->get('user')['fournisseur']){
  225.                     return [
  226.                         'formUser' => $formUser->createView(),
  227.                         'msgErreur' => 'Veillez choisir le fournisseur',
  228.                         'success' => false,
  229.                     ];
  230.                 }
  231.             }else{
  232.                 if($role){
  233.                     $user->setRoles(array($role));
  234.                 }
  235.             }
  236.             $user->setFournisseurType($typeFournissuer);
  237.             $this->em->persist($user);
  238.             $this->em->flush();
  239.             $this->flashBag->add(
  240.                 'success',
  241.                 $this->trans->trans('Vous avez modifié le compte.')
  242.             );
  243.             return [
  244.                 'formUser' => $formUser->createView(),
  245.                 'success' => true,
  246.                 'user' => $user
  247.             ];
  248.         }
  249.         return [
  250.             'formUser' => $formUser->createView(),
  251.             'success' => false,
  252.             'user' => $user,
  253.         ];
  254.     }
  255.     public function addUserIntervenant($request) : array
  256.     {
  257.         $user = new \App\Entity\User();
  258.         $formUserIntervenant = $this->form->create(UserIntervenantType::class, $user);
  259.         $formUserIntervenant->handleRequest($request);
  260.         if ($formUserIntervenant->isSubmitted() && $formUserIntervenant->isValid()) {
  261.             $role = $request->get('role');
  262.             $password = $this->randomPassword();
  263.             $user->setPassword(
  264.                 $this->passwordEncoder->encodePassword(
  265.                     $user,
  266.                     $password
  267.                 )
  268.             );
  269.             $user->setRoles(array($role));
  270.             $this->em->persist($user);
  271.             $this->em->flush();
  272.             $this->setIntervenantNum($user);
  273.             $this->notification->createUser($user, $password);
  274.             $this->flashBag->add(
  275.                 'success',
  276.                 $this->trans->trans('Vous avez ajouté un nouveau compte.')
  277.             );
  278.             return [
  279.                 'formUserIntervenant' => $formUserIntervenant->createView(),
  280.                 'success' => true
  281.             ];
  282.         }
  283.         return [
  284.             'formUserIntervenant' => $formUserIntervenant->createView(),
  285.             'success' => false,
  286.         ];
  287.     }
  288.     public function editUserIntervenant($request,$id) : array
  289.     {
  290.         $user = $this->em->getRepository(User::class)->find($id);
  291.         $formUserIntervenant = $this->form->create(UserIntervenantType::class, $user);
  292.         $formUserIntervenant->handleRequest($request);
  293.         if ($formUserIntervenant->isSubmitted() && $formUserIntervenant->isValid()) {
  294.             $role = $request->get('role');
  295.             if($role){
  296.                 $user->setRoles(array($role));
  297.             }
  298.             $this->em->persist($user);
  299.             $this->em->flush();
  300.             $this->setIntervenantNum($user);
  301.             $this->flashBag->add(
  302.                 'success',
  303.                 $this->trans->trans('Vous avez modifié le compte.')
  304.             );
  305.             return [
  306.                 'formUserIntervenant' => $formUserIntervenant->createView(),
  307.                 'success' => true,
  308.                 'user' => $user
  309.             ];
  310.         }
  311.         return [
  312.             'formUserIntervenant' => $formUserIntervenant->createView(),
  313.             'success' => false,
  314.             'user' => $user,
  315.         ];
  316.     }
  317.     public function extractXlsx($users){
  318.         $file= $this->params->get('zips_directory')."/extraire_users.xlsx";
  319.         $spreadsheet = new Spreadsheet();
  320.         $sheet = $spreadsheet->getActiveSheet();
  321.         // Head 2
  322.         $tableHead2 = [
  323.             'font'=>[
  324.                 'color'=>[
  325.                     'rgb'=>'0071c1'
  326.                 ],
  327.                 'bold'=>true,
  328.                 'size'=>12
  329.             ],
  330.             'fill'=>[
  331.                 'fillType' => Fill::FILL_SOLID,
  332.                 'startColor' => [
  333.                     'rgb' => 'dcebf4'
  334.                 ]
  335.             ],
  336.         ];
  337.         $sheet->setCellValue('A1',"Nom")
  338.             ->setCellValue('B1',"Prénom")
  339.             ->setCellValue('C1',"Entreprise")
  340.             ->setCellValue('D1',"Adresse mail")
  341.             ->setCellValue('E1',"Droits")
  342.             ->setCellValue('F1',"Statut")
  343.             ->setCellValue('G1',"DERNIÉRE CONNEXION");
  344.         // Borders a2 z2
  345.         $spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  346.         $spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  347.         $spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  348.         $spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  349.         $spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  350.         $spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  351.         $spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
  352.         //width
  353.         $spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(50);
  354.         $spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
  355.         $spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
  356.         $spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(50);
  357.         $spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
  358.         $spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
  359.         $spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
  360.         $spreadsheet->getActiveSheet()->getStyle('A1:G1')->applyFromArray($tableHead2);
  361.         //loop through the data
  362.         //current row
  363.         $row=2;
  364.         foreach ($users as $user) {
  365.             $intl = new \IntlDateFormatter('fr', \IntlDateFormatter::LONG, \IntlDateFormatter::NONE, null, null, 'd MMMM YYYY');
  366.             $spreadsheet->getActiveSheet()
  367.                 ->setCellValue('A'.$row , $user->getLastname())
  368.                 ->setCellValue('B'.$row , $user->getFirstname())
  369.                 ->setCellValue('C'.$row , $user->getEntreprise() ? $user->getEntreprise()->getName() : '')
  370.                 ->setCellValue('D'.$row , $user->getEmail())
  371.                 ->setCellValue('E'.$row , $user->getTypeAccesStr())
  372.                 ->setCellValue('F'.$row , $user->getIsEnabled() ? 'Activé' : 'Desativé')
  373.                 ->setCellValue('G'.$row , $user->getDerniereConnecxion() ? $intl->format($user->getDerniereConnecxion()).' '.$user->getDerniereConnecxion()->format('H:i:s') :' - ')
  374.             ;
  375.             //increment row
  376.             $row++;
  377.         }
  378.         $firstRow=1;
  379.         $lastRow=$row-1;
  380.         $spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":G".$lastRow);
  381.         $writer = new Xlsx($spreadsheet);
  382.         $writer->save($file);
  383.         return $file;
  384.     }
  385.     private  function setIntervenantNum($user){
  386.         $intervenant = 0;
  387.         if($user){
  388.             if(in_array('ROLE_MAITRE_OEUVRE',$user->getRoles())){
  389.                 $intervenant = User::INTERVENANT_MAITRE_OEUVRE;
  390.             }elseif (in_array('ROLE_AMO',$user->getRoles())){
  391.                 $intervenant = User::INTERVENANT_AMO;
  392.             }elseif (in_array('ROLE_MACON',$user->getRoles())){
  393.                 $intervenant = User::INTERVENANT_MACON;
  394.             }elseif (in_array('ROLE_CONSTRUCTEUR',$user->getRoles())){
  395.                 $intervenant = User::INTERVENANT_CONSTRUCTEUR;
  396.             }elseif (in_array('ROLE_CHARPENTIER',$user->getRoles())){
  397.                 $intervenant = User::INTERVENANT_CHARPENTIER;
  398.             }elseif (in_array('ROLE_ELECTRICIEN',$user->getRoles())){
  399.                 $intervenant = User::INTERVENANT_ELECTRICIEN;
  400.             }elseif (in_array('ROLE_COUVREUR',$user->getRoles())){
  401.                 $intervenant = User::INTERVENANT_COUVREUR;
  402.             }elseif (in_array('ROLE_POSEUR',$user->getRoles())){
  403.                 $intervenant = User::INTERVENANT_POSEUR;
  404.             }elseif (in_array('ROLE_AUTRE',$user->getRoles())){
  405.                 $intervenant = User::INTERVENANT_AUTRE;
  406.             }
  407.             $user->setIntervenantNum($intervenant);
  408.             $this->em->persist($user);
  409.             $this->em->flush();
  410.         }
  411.     }
  412.     public function addSpvUser($request,$id) : array
  413.     {
  414.         $user = $this->em->getRepository(User::class)->find($id);
  415.         $formUser = $this->form->create(UserSpvType::class, $user);
  416.         $formUser->handleRequest($request);
  417.         if ($formUser->isSubmitted() && $formUser->isValid()) {
  418.             $this->em->persist($user);
  419.             $this->em->flush();
  420.             $this->flashBag->add(
  421.                 'success',
  422.                 $this->trans->trans('Vous avez modifié le compte.')
  423.             );
  424.             return [
  425.                 'formSpvUser' => $formUser->createView(),
  426.                 'success' => true,
  427.                 'user' => $user
  428.             ];
  429.         }
  430.         return [
  431.             'formSpvUser' => $formUser->createView(),
  432.             'success' => false,
  433.             'user' => $user,
  434.         ];
  435.     }
  436.     public function addProjectUser($request,$id) : array
  437.     {
  438.         $user = $this->em->getRepository(User::class)->find($id);
  439.         $fournisseur = $this->em->getRepository(Fournisseur::class)->findOneBy(['user'=>$id]);
  440.         $projects = $this->em->getRepository(Project::class)->findAllProjectActive();
  441.         if($user) {
  442.             $fournisseurNotaires = $this->em->getRepository(FournisseurProject::class)->findBy(['user'=>$user->getId()]);
  443.             if(!$fournisseurNotaires && $fournisseur){
  444.                 $fournisseurNotaires = $this->em->getRepository(FournisseurProject::class)->findBy(['fournisseur'=>$fournisseur->getId()]);
  445.             }
  446.             if ($request->isMethod('POST')) {
  447.                 $projectsIds = $request->get('projectFournisseur');
  448.                 if($fournisseurNotaires){
  449.                     foreach ($fournisseurNotaires as $fournisseurNotaire){
  450.                         $this->em->remove($fournisseurNotaire);
  451.                         $this->em->flush();
  452.                     }
  453.                 }
  454.                 if($projectsIds){
  455.                     foreach ($projectsIds as $projectId){
  456.                         $project = $this->em->getRepository(Project::class)->find($projectId);
  457.                         $fournisseurNotaireEntity = new FournisseurProject();
  458.                         $fournisseurNotaireEntity->setProject($project);
  459.                         if($fournisseur){
  460.                             $fournisseurNotaireEntity->setFournisseur($fournisseur);
  461.                         }else{
  462.                             $fournisseurNotaireEntity->setUser($user);
  463.                         }
  464.                         if($user->getFournisseurType()){
  465.                             $fournisseurNotaireEntity->setTitre($user->getFournisseurTypeStr());
  466.                         }
  467.                         $this->em->persist($fournisseurNotaireEntity);
  468.                         $this->em->flush();
  469.                     }
  470.                 }
  471.                 $this->flashBag->add(
  472.                     'success',
  473.                     $this->trans->trans('Vous avez modifié le compte.')
  474.                 );
  475.                 return [
  476.                     'success' => true,
  477.                     'user' => $user
  478.                 ];
  479.             }
  480.             $fournisseurNotairesIdProject = [];
  481.             foreach ($fournisseurNotaires as $fournisseurNotaire){
  482.                 $fournisseurNotairesIdProject[] = $fournisseurNotaire->getProject()->getId();
  483.             }
  484.             return [
  485.                 'projects' => $projects,
  486.                 'fournisseurNotairesIdProject' => $fournisseurNotairesIdProject,
  487.                 'success' => false,
  488.                 'user' => $user,
  489.             ];
  490.         }else{
  491.             return [
  492.                 'success' => false,
  493.                 'user' => $user,
  494.             ];
  495.         }
  496.     }
  497.     public function addUsersByArray($firstname,$lastname,$email,$tel)
  498.     {
  499.         if($email && $firstname && $lastname){
  500.             $role = 'ROLE_RESPONSABLE_DEVELOPPEMENT';
  501.             $entreprise = $this->em->getRepository(Entreprise::class)->findOneBy(['isAlteria'=>true]);
  502.             $user = $this->em->getRepository(User::class)->findOneBy(['email'=>$email]);
  503.             if(!$user){
  504.                 $user = new User();
  505.                 $user->setLastname($lastname);
  506.                 $user->setFirstname($firstname);
  507.                 $user->setEmail($email);
  508.                 $user->setTel($tel);
  509.                 $user->setEntreprise($entreprise);
  510.                 $user->setRoles(array($role));
  511.                 $user->setIsEnabled(1);
  512.                 $user->setAcces(User::ACCES_ECRETURE);
  513.                 $user->setTypeAcces(User::ACCES_interne_prejeance);
  514.                 $password = $this->randomPassword();
  515.                 $user->setPassword(
  516.                     $this->passwordEncoder->encodePassword(
  517.                         $user,
  518.                         $password
  519.                     )
  520.                 );
  521.                 $this->em->persist($user);
  522.                 $this->em->flush();
  523.                 $this->notification->createUser($user, $password);
  524.             }
  525.         }
  526.     }
  527. }