src/Controller/AdminController.php line 77

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Admin;
  4. use App\Entity\Enterprise;
  5. use App\Entity\User;
  6. use App\Form\AdminUserFormType;
  7. use App\Form\EnterpriseFormType;
  8. use App\Form\EnterpriseUserFormType;
  9. use App\Repository\AdminRepository;
  10. use App\Service\EmailNotification;
  11. use App\Service\FileUploader;
  12. use App\Service\SMSService;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Exception;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\Form\FormFactoryInterface;
  17. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  18. use Symfony\Component\HttpFoundation\File\UploadedFile;
  19. use Symfony\Component\HttpFoundation\JsonResponse;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. class AdminController extends AbstractController
  25. {
  26.     private $em;
  27.     private $rpe;
  28.     private $rpu;
  29.     private $rpa;
  30.     /**
  31.      * @param $em
  32.      * @param $rpe
  33.      * @param $rpu
  34.      * @param $rpa
  35.      */
  36.     public function __construct(EntityManagerInterface $em)
  37.     {
  38.         $this->em $em;
  39.         $this->enterpriseRepository $em->getRepository(Enterprise::class);
  40.         $this->userRepository $em->getRepository(User::class);
  41.         $this->adminRepository $em->getRepository(Admin::class);
  42.     }
  43.     /*
  44.      * Dashboard
  45.      */
  46.     #[Route('/admin'name'admin')]
  47.     public function admin(): Response
  48.     {
  49.         return $this->render('admin/dashboard/index.html.twig', [
  50.             'page' => 'd',
  51.             'numberSMS' => $this->enterpriseRepository->countMessages(),
  52.             'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  53.             'numberAdmin' => $this->adminRepository->countAdmins(),
  54.             'numberUserClients' => $this->userRepository->countClients(),
  55.             //'enterprises' => $this->enterpriseRepository->findBy([], ['id' => 'DESC']),
  56.             // 'years' => $years
  57.         ]);
  58.     }
  59.     #[Route('/admin/getstats'name'admin_getstats')]
  60.     public function getstats(): JSonResponse
  61.     {
  62.         extract($_GET);
  63.         $msg '';
  64.         $resp = array(
  65.             'msg' => '''chart' => []
  66.         );
  67. //        dd($this->rps->getStats($ide, $year));
  68.         $ide $this->getUser()->getEnterprise()->getId();
  69.         $year date('Y');
  70.         $stats = ($this->adminRepository->getStats($ide$year));
  71. //        dd($stats);
  72.         $chart = [000000000000];
  73.         foreach ($stats as $row) {
  74.             $chart[$row['month'] - 1] += $row['numbersms'];
  75.         }
  76. //            dd($chart);
  77.         $resp['chart'] = $chart;
  78. //                dd($resp['chart']);
  79.         return $this->json($resp);
  80.     }
  81.     #[Route('/getyears'name'getyears')]
  82.     public function getyears()
  83.     {
  84.         extract($_GET);
  85.         return new JsonResponse($this->adminRepository->getYears($id));
  86.     }
  87.     /*
  88.      * Entreprises
  89.      */
  90.     #[Route('/admin/enterprise'name'admin_enterprise')]
  91.     public function enterprise(Request $requestEntityManagerInterface $entityManagerFormFactoryInterface $formFactory): Response
  92.     {
  93.         $enterprise = new Enterprise();
  94.         $form $formFactory->createNamed(''EnterpriseFormType::class, $enterprise, [            
  95.             //'action' => $this->generateUrl('admin_enterprise_create')
  96.         ]);
  97.         return $this->render('admin/enterprise/index.html.twig', [
  98.                 'page' => 'e',
  99.                 'form' => $form->createView(),
  100.                 'enterprises' => $this->enterpriseRepository->findBy([], ['id' => 'DESC']),
  101.                 'numberSMS' => $this->enterpriseRepository->countMessages(),
  102.                 'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  103.                 'numberAdmin' => $this->adminRepository->countAdmins(),
  104.                 'numberUserClients' => $this->userRepository->countClients(),
  105.             ]
  106.         );
  107.     }
  108.     #[Route('/admin/enterprise/create'name'admin_enterprise_create')]
  109.     public function enterprise_create(Request $request,SMSService $service): JsonResponse
  110.     {
  111.         extract($_GETEXTR_OVERWRITE);
  112.         $nbreEnterprise $this->enterpriseRepository->count([]);
  113.         $enterprise = new Enterprise();
  114.         $enterprise->setName($name);
  115.         $enterprise->setPhone($phone);
  116.         $enterprise->setEmail($email);
  117.         $enterprise->setAddress($address);
  118.         $resp = array('status' => 'failed''msg' => "L'ajout ne s'est pas effectue"'e' => null);
  119.         $this->adminRepository->createTable($enterprise->getName());
  120.         $enterprise->setTableName($name "tab");
  121.         $enterprise->setCreditSMS(($creditSMS == '') ? : (int)$creditSMS);
  122.         $this->enterpriseRepository->add($enterprisetrue);
  123.         $nbreNouveauEnterprise $this->enterpriseRepository->count([]);
  124.         dd($nbreNouveauEnterprise .'-'.'sdsdsdsd');
  125.         $result = ($nbreEnterprise != $nbreNouveauEnterprise);
  126.         $lastEnterprise $this->enterpriseRepository->findBy([], ['id' => 'DESC'], 1);
  127. //        $result = (0 == 0);
  128.         if ($result) {
  129.             $resp['status'] = 'success';
  130.             $resp['msg'] = "L' entreprise a bien ete ajoutee";// . $conn->error;
  131.             $resp['number'] = $nbreNouveauEnterprise;
  132.             $updateEnterprise $lastEnterprise[0];
  133.             //$service->internalSMSNotification('SMS PLATFORM',$phone,'Bienvenu sur SMS PLATFORM,le compte de l\'entreprise '.$name.' a bien ete cree.');
  134.             $resp['e'] = array(
  135.                 $updateEnterprise->getId(),
  136.                 $updateEnterprise->getName(),
  137.                 $updateEnterprise->getPhone(),
  138.                 $updateEnterprise->getEmail(),
  139.                 $updateEnterprise->getAddress(),
  140.                 $updateEnterprise->getCreditSMS()
  141.             );;
  142.             $resp['ifFerme'] = $ifFerme;
  143.         }
  144.         return new JSonResponse($resp);
  145.     }
  146.     #[Route('/admin/enterprise/update/{id}'name'admin_enterprise_update')]
  147.     public function enterprise_update($idRequest $request): JSonResponse
  148.     {
  149.         extract($_GETEXTR_OVERWRITE);
  150.         $enterprise $this->enterpriseRepository->find($id);
  151.         $oldtablename $enterprise->getTablename();
  152.         $oldname $enterprise->getName();
  153. //        dd('ALTER TABLE `'.$oldtablename.'` RENAME TO `' . $name.'tab`');
  154. //            dd([$oldname,$oldtablename,$name]);
  155.         if ($name != $oldname) {
  156.             $enterprise->setName($name);
  157.             $this->adminRepository->executeSQL('ALTER TABLE ' $oldtablename ' RENAME TO `' $name 'tab`');
  158.             $enterprise->setTablename($name 'tab');
  159.         }
  160.         $enterprise->setPhone($phone);
  161.         $enterprise->setEmail($email);
  162.         $enterprise->setAddress($address);
  163.         $this->em->flush();
  164.         $updateEnterprise $this->enterpriseRepository->findOneBy(['id' => $id]);
  165.         $resp = array('status' => 'failed''msg' => "La modification n'a pas pu s'effectuer"'e' => null);
  166.         if ($enterprise->equals($updateEnterprise)) {
  167.             $resp['status'] = 'success';
  168.             $resp['msg'] = "La modification s'est effectue";
  169.             $resp['e'] = array(
  170.                 $updateEnterprise->getId(),
  171.                 $updateEnterprise->getName(),
  172.                 $updateEnterprise->getPhone(),
  173.                 $updateEnterprise->getEmail(),
  174.                 $updateEnterprise->getAddress(),
  175.                 $updateEnterprise->getCreditSMS()
  176.             );
  177.             $resp['ifFerme'] = $ifFerme;
  178.         }
  179.         return $this->json($resp);
  180. //        return $this->redirectToRoute('admin_enterprise');
  181.     }
  182.     #[Route('/admin/enterprise/delete/{id}'name'admin_enterprise_delete')]
  183.     public function enterprise_delete($idRequest $request): JSonResponse
  184.     {
  185.         $enterprise $this->enterpriseRepository->find($id);
  186. //        dd($enterprise);
  187. //        $this->rps->deleteTable($enterprise->getName());
  188.         $msg '';
  189.         try {
  190.             $this->adminRepository->executeSQL('DROP TABLE `'.$enterprise->getTableName().'`');
  191.         }
  192.         catch (Exception $e){
  193.             $msg 'Un probleme est survenu lors de la suppression de la table de l\'entreprise.';
  194.         }
  195.         $nbre1 $this->enterpriseRepository->count([]);
  196.         $this->enterpriseRepository->remove($enterprisetrue);
  197.         $nbre2 $this->enterpriseRepository->count([]);
  198.         $resp = array('status' => 'failed''msg' => "La suppression n'a pas pu s'effectuer");
  199.         if ($nbre1 != $nbre2) {
  200.             $resp['status'] = 'success';
  201.             $resp['msg'] = $msg."L'entreprise a ete supprimee";
  202.             $resp['number'] = $nbre2;
  203.             $resp['id'] = $id;
  204.         }
  205.         return $this->json($resp);
  206. //        return $this->redirectToRoute('admin_enterprise');
  207.     }
  208.     #[Route('/admin/enterprise/reload'name'admin_enterprise_reload')]
  209.     public function enterprise_reload(Request $request,SMSService $service): JSonResponse
  210.     {
  211.         extract($_GET);
  212.         $success true;
  213.         $resp = array(
  214.             'status' => 'success',
  215.             'msg' => 'Les comptes ont ete recharges',
  216.             'numberSMS' => null
  217.         );
  218.         $names = array();
  219.         $ids = array();
  220.         $word = ($operation == 'a') ? 'credite' 'debite';
  221.         foreach ($entreprises as $id) {
  222.             $enterprise $this->enterpriseRepository->find($id);
  223.             $numberSMS $enterprise->getCreditSMS();
  224.             if ($operation == 'a'$numberSMS += (int)$number;
  225.             else $numberSMS -= (int)$number;
  226.             $enterprise->setCreditSMS($numberSMS);
  227.             $this->em->flush();
  228.             $updateEnterprise = new Enterprise();
  229.             $updateEnterprise $this->enterpriseRepository->findOneBy(['id' => $id'creditSMS' => $numberSMS]);
  230.             $numberSMS $enterprise->getCreditSMS();
  231.             if (!$enterprise->equals($updateEnterprise)) {
  232.                 array_push($names$enterprise->getName());
  233.                 $success false;
  234.             } else {
  235.                 array_push($ids$id);
  236.                 $resp['numberSMS'] = $numberSMS;
  237.                 $resp['ifFerme'] = $ifFerme;
  238.                 //$service->internalSMSNotification('SMS PLATFORM',$enterprise->getPhone(),'Le compte SMS de '.$enterprise->getName().' a bien ete '.$word.'\nNouveau Solde : '.$numberSMS);
  239.             }
  240.         }
  241.         if (!$success) {
  242.             $resp['status'] = 'failed';
  243.             //Construction du message d'erreur
  244.             $msg 'Le';
  245.             if (count($names) == 1) {
  246.                 $msg .= ' compte de ' $names[0] . ' n\' a pas pu etre ' $word;
  247.             } else {
  248.                 $msg .= 's comptes des entreprises ' implode(','$names) . 'n \'ont pas pu etre ' $word 's';
  249.             }
  250.             $resp['msg'] = $msg;
  251.         }
  252.         $resp['ids'] = $ids;
  253.         return $this->json($resp);
  254. //        return $this->redirectToRoute('admin_enterprise');
  255.     }
  256.     #[Route('/admin/enterprise/check'name'admin_enterprise_check')]
  257.     public function enterprise_check(Request $request): JSonResponse
  258.     {
  259.         extract($_GET);
  260.         $msg '';
  261.         $resp = array(
  262.             'name' => true'phone' => true
  263.         );
  264.         $uniqueName $this->enterpriseRepository->count(['name' => $name]) > 0;
  265.         $uniquePhone $this->enterpriseRepository->count(['phone' => $phone]) > 0;
  266.         if ($ide != '') {
  267.             $enterpriseWithSameName $this->enterpriseRepository->findOneBy(['name' => $name]);
  268.             if ($enterpriseWithSameName != null) {
  269.                 $uniqueName $enterpriseWithSameName->getId() != $ide;
  270.             }
  271.             $enterpriseWithSamePhone $this->enterpriseRepository->findOneBy(['phone' => $phone]);
  272.             if ($enterpriseWithSamePhone != null) {
  273.                 $uniquePhone $enterpriseWithSamePhone->getId() != $ide;
  274.             }
  275.         }
  276.         if ($uniqueName) {
  277.             $resp['name'] = false;
  278.         }
  279.         if ($uniquePhone) {
  280.             $resp['phone'] = false;
  281.         }
  282.         return $this->json($resp);
  283.     }
  284.     /*
  285.      * Messages
  286.      */
  287.     #[Route('/admin/message'name'admin_message')]
  288.     public function message(): Response
  289.     {
  290.         return $this->render('admin/message/index.html.twig', [
  291.             'page' => 'm',
  292.             'enterprises' => $this->enterpriseRepository->findBy([], ['id' => 'DESC']),
  293.             'numberSMS' => $this->enterpriseRepository->countMessages(),
  294.             'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  295.             'numberAdmin' => $this->adminRepository->countAdmins(),
  296.             'numberUserClients' => $this->userRepository->countClients(),
  297.             //'numberSMS' => $this->rpa->countAllMessages('0','','','000'),
  298.             //'numberEnterprise' => $this->rpe->count([]),
  299.             //'numberAdmin' => $numberAdmin,
  300.             //'numberUserClients' => $numberUserClients,
  301.         ]);
  302.     }
  303.     /*
  304.      * Parametres
  305.      */
  306.     #[Route('/admin/setting'name'admin_setting')]
  307.     public function setting(FormFactoryInterface $formFactory): Response
  308.     {
  309.         $user = new User();
  310.         $form $formFactory->createNamed(''EnterpriseUserFormType::class, $user);
  311. //        foreach ($users as $user) {
  312. //            if (in_array('ROLE_ADMIN', $user->getRoles())) $numberAdmin++;
  313. //            else $numberUserClients++;
  314. //        }
  315.         return $this->render('admin/setting/index.html.twig', [
  316.             'page' => 's',
  317.             'numberSMS' => $this->enterpriseRepository->countMessages(),
  318.             'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  319.             'numberAdmin' => $this->adminRepository->countAdmins(),
  320.             'numberUserClients' => $this->userRepository->countClients(),
  321.             'form' => $form->createView()
  322.         ]);
  323.     }
  324.     #[Route('/admin/setting/update/{id}'methods: ['GET''POST'], name'admin_setting_update')]
  325.     public function setting_update($idRequest $requestFileUploader $fileUploaderEntityManagerInterface $entityManager): JSonResponse
  326.     {
  327.         extract($_POST);
  328.         extract($_FILES);
  329.         $entityRepository $this->userRepository;
  330.         $user $entityRepository->find($id);
  331.         if ($user == null) {
  332.             $entityRepository $this->adminRepository;
  333.             $user $entityRepository -> find($id);
  334.         }
  335.         $imgsdirectory $fileUploader->getTargetDirectory() . '/';
  336.         if ($username != $user->getUsername() && !($image)) {
  337.             $userNameImage $username $this->adminRepository->index(3) . '.' pathinfo($user->getImage(), PATHINFO_EXTENSION);
  338.             rename($imgsdirectory $user->getImage(), $imgsdirectory $userNameImage);
  339.             $user->setImage($userNameImage);
  340.         }
  341.         $user->setUsername($username);
  342.         $user->setEmail($email);
  343.         $user->setPhone($phone);
  344.         $resp = array('status' => 'failed''msg' => "La modification n'a pas pu s'effectuer"'e' => null);
  345.         if (isset($image) && $image['name'] != '') {
  346.             try {
  347.                 $path $image['tmp_name'];
  348.                 $originalName $image['name'];
  349.                 $type $image['type'];
  350.                 $error $image['error'];
  351.                 $fileImage = new UploadedFile($path$originalName$type$error);
  352. //                dd($imgsdirectory . $user->getImage());
  353.                 $filename $imgsdirectory $user->getImage();
  354.                 if (file_exists($filename) && $user->getImage() != ''unlink($filename);
  355.                 if ($path != '') {
  356.                     $fileName $fileUploader->upload($fileImage$user);
  357.                     $user->setImage($fileName);
  358.                 }
  359.             } catch (FileException $e) {
  360.                 $resp['status'] = 'failed';
  361.                 $resp['msg'] = 'Desole,nous n\'avons pas pu changer votre image';
  362.             }
  363.         }
  364.         $this->em->flush();
  365.         $updateUser $entityRepository->findOneBy(['id' => $id]);
  366.         if ($user->equals($updateUser)) {
  367.             $resp['status'] = 'success';
  368.             $resp['msg'] = "La modification s'est effectue";
  369.             $resp['id'] = $id;
  370.             $resp['u'] = array(
  371.                 $updateUser->getUsername(),
  372.                 $updateUser->getPhone(),
  373.                 $updateUser->getEmail(),
  374.                 $updateUser->getImage()
  375.             );
  376.         }
  377.         return new JsonResponse($resp);
  378.     }
  379.     #[Route('admin/setting/changepassword/{id}'name'admin_setting_changepassword')]
  380.     public function changepassword($idRequest $requestUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManager): JSonResponse
  381.     {
  382.         extract($_GET);
  383.         $entityRepository $this->rpu;
  384.         $user $entityRepository->find($id);
  385.         if ($user == null) {
  386.             $entityRepository $this->adminRepository;
  387.             $user $entityRepository -> find($id);
  388.         }
  389.         $resp = array('status' => 'failed''msg' => "La modification n'a pas pu s'effectuer");
  390.         // encode the plain password
  391.         if (!password_verify($oldpass$user->getPassword())) {
  392.             $resp['status'] = 'failed';
  393.             $resp['msg'] = 'Le premier mot de passe ne correspond pas';
  394.             return $this->json($resp);
  395.         }
  396.         // encode the plain password
  397.         $user->setPassword(
  398.             $userPasswordHasher->hashPassword(
  399.                 $user$newpass
  400.             )
  401.         );
  402.         $this->em->flush();
  403.         $updateUser $entityRepository->findOneBy(['id' => $id]);
  404.         if ($user->equals($updateUser)) {
  405.             $resp['status'] = 'success';
  406.             $resp['msg'] = "Votre mot de passe a bien ete modifiee";
  407.         }
  408.         return new JsonResponse($resp);
  409.     }
  410.     /*
  411.       * Change Theme
  412.     */
  413.     #[Route('/theme'name'theme'methods: ['GET'])]
  414.     public function theme(): JsonResponse
  415.     {
  416.         extract($_GET);
  417.         if($this->getUser())
  418.         {
  419.             if($this->getUser()->isTheme() == true )
  420.             {
  421.                 $this->getUser()->setTheme(false);
  422.             }
  423.             else
  424.             {
  425.                 $this->getUser()->setTheme(true);
  426.             }
  427.         }
  428.         
  429.         $this->em->flush();
  430.         
  431.         $resp['status'] = 'success';
  432.         return new JsonResponse($resp);
  433.     }
  434.     #[Route('/admin/users/clients'name'admin_users_clients')]
  435.     public function clients(Request $requestEntityManagerInterface $entityManagerFormFactoryInterface $formFactory): Response
  436.     {
  437.         $user = new User();
  438.         $form $formFactory->createNamed(''EnterpriseUserFormType::class, $user);
  439.         return $this->render('admin/users/clients/index.html.twig', [
  440.                 'page' => 'clients',
  441.                 'form' => $form->createView(),
  442.                 'numberSMS' => $this->enterpriseRepository->countMessages(),
  443.                 'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  444.                 'numberAdmin' => $this->adminRepository->countAdmins(),
  445.                 'numberUserClients' => $this->userRepository->countClients(),
  446.             ]
  447.         );
  448.     }
  449.     #[Route('/admin/users/admins'name'admin_users_admins')]
  450.     public function admins(AdminRepository $adminRepositoryFormFactoryInterface $formFactory): Response
  451.     {
  452.         $user = new User();
  453.         $form $formFactory->createNamed(''AdminUserFormType::class, $user);
  454.         return $this->render('admin/users/admins/index.html.twig', [
  455.                 'page' => 'a',
  456.                 'form' => $form->createView(),
  457.                 'admins' => $adminRepository->findBy([], ['id' => 'DESC']),
  458.                 'numberSMS' => $this->enterpriseRepository->countMessages(),
  459.                 'numberEnterprise' => $this->enterpriseRepository->countEntreprises(),
  460.                 'numberAdmin' => $this->adminRepository->countAdmins(),
  461.                 'numberUserClients' => $this->userRepository->countClients(),
  462.             ]
  463.         );
  464.     }
  465.     #[Route('/admin/users/{type}/check'name'admin_clients_check')]
  466.     public function user_check($typeRequest $request): JSonResponse
  467.     {
  468.         // ide : Identifiant utilisateur
  469.         // enterprise : Identifiant entreprise(type == user)
  470.         // username : Nom utilisateur
  471.         // phone : Telephone utilisateur
  472.         extract($_GET);
  473.         $msg '';
  474.         $resp = array(
  475.             'name' => true'phone' => true
  476.         );
  477.         $entityRepository null;
  478.         $enterprise null;
  479.         if ($type == 'user'){
  480.             $entityRepository $this->userRepository;
  481.             if ($enterprise$enterprise $this->enterpriseRepository->find($enterprise);
  482.         }
  483.         else{
  484.             $entityRepository $this->adminRepository;
  485.         }
  486.             //$test = $entityRepository->findBy(['username' => $username, 'enterprise' => $enterprise]);
  487.             $uniqueName $entityRepository->count(['username' => $username'enterprise' => $enterprise]) > 0;
  488.             $uniquePhone $entityRepository->count(['username' => $phone'enterprise' => $enterprise]) > 0;
  489.             if ($ide != '') {
  490.                 $userWithSameName $entityRepository->findOneBy(['username' => $username'enterprise' => $enterprise], ['id' => 'ASC']);
  491.                 if ($userWithSameName != null) {
  492.                     $uniqueName $userWithSameName->getId() != $ide;
  493.                 }
  494.                 $userWithSamePhone $entityRepository->findOneBy(['phone' => $phone'enterprise' => $enterprise]);
  495.                 if ($userWithSamePhone != null) {
  496.                     $uniquePhone $userWithSamePhone->getId() != $ide;
  497.                 }
  498.             }
  499.         if ($uniqueName) {
  500.             $resp['name'] = false;
  501.         }
  502.         if ($uniquePhone) {
  503.             $resp['phone'] = false;
  504.         }
  505. //        dd($resp);
  506.         return $this->json($resp);
  507.     }
  508.     #[Route('/admin/users/{type}/create'name'admin_users_clients_create')]
  509.     public function users_clients_create($type,FileUploader $fileUploaderRequest $requestUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManager): JSonResponse
  510.     {
  511.         extract($_POST);
  512.         extract($_FILES);
  513.         if ($type == 'admin'){
  514.             $entityRepository =  $this->adminRepository;
  515.             $user = new Admin();
  516.             $personneType "administrateur";
  517.         }
  518.         else{
  519.             $entityRepository $this->userRepository;
  520.             $user = new User();
  521.             $personneType "utilisateur";
  522.         }
  523.         $user->setUsername($username);
  524.         $user->setEmail($email);
  525.         $user->setPhone($phone);
  526.         $user->setRoles([$roles]);
  527.         if (isset($enterprise)) {
  528.             $user->setEnterprise($this->enterpriseRepository->find($enterprise));
  529.         }
  530.         if (isset($image) && $image['name'] != '') {
  531.             try {
  532.                 $path $image['tmp_name'];
  533.                 $originalName $image['name'];
  534.                 $type $image['type'];
  535.                 $error $image['error'];
  536.                 $fileImage = new UploadedFile($path$originalName$type$error);
  537.                 $fileName $fileUploader->upload($fileImage$user);
  538.                 $user->setImage($fileName);
  539.             } catch (FileException $e) {
  540.                 $resp['status'] = 'failed';
  541.                 $resp['msg'] = 'Desole,nous n\'avons pu ajouter l\'image de l\'utilisateur';
  542.             }
  543.         }
  544.         $nbreUser $entityRepository->count([]);
  545.         // encode the plain password
  546.         $password $password == '' '123456' $password;
  547.         $user->setPassword(
  548.             $userPasswordHasher->hashPassword(
  549.                 $user$password
  550.             )
  551.         );
  552.         $entityRepository->add($user,true);
  553.         $nbreUser1 $entityRepository->count([]);
  554.         $resp = array('status' => 'failed''msg' => "L'ajout ne s'est pas effectue"'e' => null);
  555.         $result $nbreUser1 != $nbreUser;
  556.         if ($result) {
  557.             $resp['status'] = 'success';
  558.             $resp['msg'] = "L' "$personneType ." a bien ete ajoutee";// . $conn->error;
  559.             $resp['number'] = $nbreUser1;
  560.             $lastUser $entityRepository->findBy([], ['id' => 'DESC'], 1);
  561.             $updateUser $lastUser[0];
  562.             $resp['ifFerme'] = $ifFerme;
  563.         }
  564.         // do anything else you need here, like send an email
  565.         return new JsonResponse($resp);
  566.     }
  567.     #[Route('/admin/users/{type}/update/{id}'name'admin_users_clients_update')]
  568.     public function users_clients_update($type$idFileUploader $fileUploaderRequest $requestUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManager): JSonResponse
  569.     {
  570.         extract($_POST);
  571.         extract($_FILES);
  572.         $entityRepository = ($type == "admin")? $this->adminRepository $this->rpu;
  573.         $user $entityRepository->find($id);
  574.         $user->setUsername($username);
  575.         $user->setEmail($email);
  576.         $user->setPhone($phone);
  577.         $user->setRoles([$roles]);
  578.         if (isset($enterprise)) $user->setEnterprise($this->enterpriseRepository->find($enterprise));
  579.         if (isset($image) && $image['name'] != '') {
  580.             try {
  581.                 $path $image['tmp_name'];
  582.                 $originalName $image['name'];
  583.                 $type $image['type'];
  584.                 $error $image['error'];
  585.                 $fileImage = new UploadedFile($path$originalName$type$error);
  586. //                dd($imgsdirectory . $user->getImage());
  587.                 $imgsdirectory $fileUploader->getTargetDirectory() . '/';
  588.                 $filename $imgsdirectory $user->getImage();
  589.                 if (file_exists($filename) && $user->getImage() != ''unlink($filename);
  590.                 $fileName $fileUploader->upload($fileImage$user);
  591.                 $user->setImage($fileName);
  592.             } catch (FileException $e) {
  593.                 $resp['status'] = 'failed';
  594.                 $resp['msg'] = 'Desole,nous n\'avons pas pu changer votre image';
  595.             }
  596.         }
  597.         // encode the plain
  598.         if ($password != '')
  599.             $user->setPassword(
  600.                 $userPasswordHasher->hashPassword(
  601.                     $user$password
  602.                 )
  603.             );
  604.         $this->em->flush();
  605.         $updateUser $entityRepository->findOneBy(['id' => $id]);
  606.         $resp = array('status' => 'failed''msg' => "La modification n'a pas pu s'effectuer"'e' => null);
  607.         if ($user->equals($updateUser)) {
  608.             $resp['status'] = 'success';
  609.             $resp['msg'] = "La modification s'est effectue";
  610.             $resp['ifFerme'] = $ifFerme;
  611.         }
  612.         return new JsonResponse($resp);
  613.     }
  614.     #[Route('/admin/users/{type}/delete/{id}'name'admin_users_clients_delete')]
  615.     public function users_clients_delete($type,$idFileUploader $fileUploaderRequest $request): JSonResponse
  616.     {
  617.         $entityRepository null;
  618.         $personneType '';
  619.         if ($type == "admin"){
  620.             $entityRepository $this->adminRepository ;
  621.             $personneType "administrateur";
  622.         }
  623.         else{
  624.             $entityRepository $this->rpu ;
  625.             $personneType "utilisateur";
  626.         }
  627.         $user $entityRepository->find($id);
  628.         $nbre1 $entityRepository->count([]);
  629.         $imgsdirectory $fileUploader->getTargetDirectory() . '/';
  630.         $filename $imgsdirectory $user->getImage();
  631.         if (file_exists($filename) && $user->getImage() != ''unlink($filename);
  632.         $entityRepository->remove($usertrue);
  633.         $nbre2 $entityRepository->count([]);
  634.         $resp = array('status' => 'failed''msg' => "La suppression n'a pas pu s'effectuer");
  635.         if ($nbre1 != $nbre2) {
  636.             $resp['status'] = 'success';
  637.             $resp['msg'] = "L' ".$personneType." a bien ete supprime";
  638.             $resp['number'] = $nbre2;
  639.             $resp['id'] = $id;
  640.         }
  641.         return $this->json($resp);
  642. //        return $this->redirectToRoute('admin_enterprise');
  643.     }
  644.     #[Route('/route'name'route')]
  645.     public function route(Request $requestMailerInterface $mailer): Response
  646.     {
  647.         $this->adminRepository->find(2)->setEnterprise(null);
  648.         $this->adminRepository->find(145)->setEnterprise(null);
  649.         $this->adminRepository->find(146)->setEnterprise(null);
  650.         return new Response($this->adminRepository->getTable(null));
  651.     }
  652. }