src/Controller/FilesUsersManage/AdminFilesUsersController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller\FilesUsersManage;
  3. use App\Entity\User;
  4. use App\Entity\FilesUser;
  5. use App\Form\FilesUserType;
  6. use App\Repository\FilesUserRepository;
  7. use App\Repository\UserRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use DateTime;
  13. use Symfony\Component\HttpFoundation\File\UploadedFile;
  14. use App\ExternalService\UtilsManageFiles\FileUtils;
  15. class AdminFilesUsersController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("flies-users-manage/home-admin", name="files_users_manage_home_admin")
  19.      */
  20.     public function index(UserRepository $userRepository)
  21.     { 
  22.       // check if user is connected 
  23.    if(!$this->getUser()) {return $this->redirectToRoute("logout");}
  24.         
  25.        $filesUser=$this->getUser()->getFilesUsers();               
  26.         
  27.          $users $userRepository->findAll();
  28.         //dd($users);
  29.         $usersFiles=array();
  30.         foreach($users as $user) {
  31.             $tab=$user->getFilesUsers();
  32.             array_push($usersFiles,array('user'=>$user,'files'=>$tab));
  33.         } 
  34.         $roles=$this->getUser()->getRoles();      
  35.        if (in_array("ROLE_DIRECTOR"$roles) OR in_array("ROLE_ADMIN"$roles)){
  36.           //dd($roles);
  37.           return $this->render('flies_users_manage/admin_files_users/admin_display_files_all_users.html.twig', [
  38.             'users'=>$users,
  39.             'usersFiles'=>$usersFiles,
  40.           ]);
  41.         }
  42.         if (in_array("ROLE_EMPLOYEE"$roles)){
  43.           return $this->render('flies_users_manage/files_user/display_files_user.html.twig', [           
  44.             'user'=>$this->getUser(),
  45.             'filesUser'=>$filesUser,
  46.          ]);
  47.         }
  48.       // empty template
  49.       return $this->render('flies_users_manage/index.html.twig', [
  50.             //'users'=>$users,
  51.             //'usersFiles'=>$usersFiles,
  52.       ]);
  53.     }
  54. /******************ajax**************************************/
  55. /**
  56.      * @Route("/ajax-admin-files-users/add-documents-list-users-choice", name="ajax_add_documents_list_user_choice")
  57.      */
  58.     public function addDocForUserInListAjax(Request $requestEntityManagerInterface $entityManager)
  59.     {      
  60.         $document = new FilesUser();
  61.         $document->setUploadAt(new DateTime());
  62.         
  63.         $form $this->createForm(FilesUserType::class, $document);
  64.          $form->handleRequest($request);
  65.         if($form->isSubmitted() && $form->isValid()){           
  66.           
  67.             $data $form->getData();
  68.             $uploadedFile $form['FileName']->getData();
  69.             $file_name_original=$uploadedFile->getClientOriginalName();         
  70.             $user=$form["User"]->getData();
  71.             $id=$user->getId();  
  72.             $concat=$id."-".date("YmdHms"); //concatenation  id .datetimenow to rename
  73.             $newFilename $concat."-".$file_name_original;             
  74.             //dd($newFilename);
  75.             $document->setFileName($newFilename);
  76.             $folder=$form["Folder"]->getData();
  77.               // destination and upload
  78.             $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder;;
  79.             $uploadedFile->move($destination,$newFilename);
  80.             
  81.             $entityManager->persist($document);
  82.             $entityManager->flush();
  83.     
  84.             $userName=$user->getLastName().' '.$user->getFirstName();
  85.              $this->addFlash('success','The document /<b> '$file_name_original.'</b>/ has been successfully added to /<b>'.$folder.'</b>/ for /<b>'.$userName.'</b>');
  86.             //return $this->redirect($request->headers->get('referer')); To seeeeee
  87.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);
  88.         }
  89.         
  90.         return $this->render('flies_users_manage/admin_files_users/ajax_add_documents_list_user_choice.html.twig', [
  91.             'form'=>$form->createView(),
  92.             //'user'=>$user,
  93.         ]);
  94.     }
  95. /******************************** AJAX widh parameter****************/
  96. /**
  97.      * @Route("/admin-files-users/ajax-add-multi-documents-for-user-{id}", name="ajax_add_multi_documents_for_user_parameter")
  98.      */
  99.     public function addMultiDocsForUserAsParameterAjax(User $userRequest $requestEntityManagerInterface $entityManager,UserRepository $userRepository)
  100.     {
  101.         
  102.         $form $this->createForm(FilesUserType::class);
  103.         $form->remove('User');
  104.         $form->remove('FileName');
  105.         $form->remove('info');
  106.         $form->remove('isPrivate');
  107.         $form->remove('Folder');
  108.         $form->handleRequest($request);
  109.         if($form->isSubmitted() && $form->isValid()){
  110.             $total_count count($_FILES['upload']['name']);
  111.             $files=$_FILES['upload'];
  112.             $folders=$_POST['folder'];
  113.             $infos=$_POST['info'];
  114.             for( $i=$i $total_count $i++ ) {
  115.    
  116.                 $tmpFilePath $files['tmp_name'][$i];   
  117.                 $file_name_original=$files['name'][$i];
  118.                 $folder=$folders[$i];
  119.                 //$folder='test';
  120.                 $info=$infos[$i];
  121.     
  122.                 $id$user->getId();  //concatenation  id .datetimenow to rename
  123.                 $concat=$id."-".date("YmdHms");
  124.                 $newFilename $concat."-".$file_name_original;           
  125.                 $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder.'/'.$newFilename;
  126.                 $document = new FilesUser();
  127.                 $document->setUser($user);
  128.                 $document->setFileName($newFilename);
  129.                 $document->setFolder($folder);
  130.                 $document->setInfo($info);
  131.                 $document->setIsPrivate(true);
  132.                 $document->setUploadAt(new DateTime());
  133.                     
  134.                 if(move_uploaded_file($tmpFilePath$destination)) {
  135.                    
  136.                     $entityManager->persist($document);
  137.                 }
  138.             
  139.             
  140.       
  141.             }
  142.         $entityManager->flush();
  143.         $userName=$user->getLastName().' '.$user->getFirstName();     
  144.             $this->addFlash('success','All documents  have been successfully added for /<b>'.$userName.'</b>');
  145.             //return $this->redirect($request->headers->get('referer')); To seeeeee
  146.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);  
  147.         }
  148.         return $this->render('flies_users_manage/admin_files_users/ajax_add_multi_documents_for_user_parameter.html.twig', [
  149.             'form'=>$form->createView(),
  150.             'user'=>$user,
  151.         ]);
  152.     }
  153. /**
  154.      * @Route("/admin-files-users/ajax-add-documents-for-user-{id}", name="ajax_add_documents_for_user_parameter")
  155.      */
  156.     public function addDocForUserAsParameterAjax(User $userRequest $requestEntityManagerInterface $entityManager,UserRepository $userRepository)
  157.     {
  158.        //if($id == '') { $user=$this->getUser();}
  159.       
  160.         $document = new FilesUser();
  161.         $document->setUser($user);
  162.         $document->setUploadAt(new DateTime());
  163.         $form $this->createForm(FilesUserType::class, $document);
  164.         $form->remove('User');
  165.         $form->handleRequest($request);
  166.         if($form->isSubmitted() && $form->isValid()){           
  167.           
  168.             $data $form->getData();
  169.             $uploadedFile $form['FileName']->getData();
  170.             $file_name_original=$uploadedFile->getClientOriginalName();         
  171.             $id=$user->getId();  
  172.             $concat=$id."-".date("YmdHms"); //concatenation  id .datetimenow to rename
  173.             $newFilename $concat."-".$file_name_original;             
  174.             //dd($newFilename);
  175.             $document->setFileName($newFilename);
  176.             $folder=$form["Folder"]->getData();
  177.               // destination and upload
  178.             $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder;;
  179.             $uploadedFile->move($destination,$newFilename);
  180.             
  181.             $entityManager->persist($document);
  182.             $entityManager->flush();
  183.     
  184.             $userName=$user->getLastName().' '.$user->getFirstName();
  185.              $this->addFlash('success','The document /<b> '$file_name_original.'</b>/ has been successfully added to /<b>'.$folder.'</b>/ for /<b>'.$userName.'</b>');
  186.             //return $this->redirect($request->headers->get('referer')); To seeeeee
  187.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);
  188.         }
  189.         return $this->render('flies_users_manage/admin_files_users/ajax_add_documents_for_user_parameter.html.twig', [
  190.             'form'=>$form->createView(),
  191.             'user'=>$user,
  192.         ]);
  193.     }
  194. /**
  195.      * @Route("/admin-files-users/ajax-rename-document-parameter-{id}", name="ajax_rename_document_parameter")
  196.      */
  197.     public function renameDocAsParameterAjax(FilesUser $filesUserRequest $requestEntityManagerInterface $entityManager)
  198.     {
  199.       
  200.       $folder=$filesUser->getFolder();
  201.       $fileName=$filesUser->getFileName();
  202.       $user=$filesUser->getUser();
  203.         
  204.         $form $this->createForm(FilesUserType::class,$filesUser);
  205.         $form->remove('User');
  206.         $form->remove('Folder');        
  207.         $form->remove('info');
  208.         $form->remove('isPrivate');
  209.         $form->remove('FileName');
  210.         $form->handleRequest($request);
  211.         if($form->isSubmitted() && $form->isValid()){ 
  212.           $newName $request->request->get('newName');
  213.           
  214.           $folder=$filesUser->getFolder();
  215.           $fileName=$filesUser->getFileName();          
  216.           $fileNameParts explode('.'$fileName);
  217.           $extension=  end($fileNameParts); 
  218.           $id=$user->getId();  
  219.           $concat=$id."-".date("YmdHms"); //concatenation  id .datetimenow to rename
  220.           $newFileName $concat."-".$newName.'.'.$extension;             
  221.           $filesUser->setFileName($newFileName);
  222.           $source $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder."/".$fileName;
  223.           $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder."/".$newFileName;
  224.           rename($source$destination);
  225.           $filesUser->setUploadAt(new DateTime());
  226.           $filesUser->setFileName($newFileName);
  227.           $entityManager->flush();
  228.           $userName=$user->getLastName().' '.$user->getFirstName();
  229.              $this->addFlash('success','The document  has been successfully modified to /<b>'.$folder.'</b>/ for /<b>'.$newName.'.'.$extension.'</b>');
  230.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);
  231.         }
  232.        
  233.    return $this->render('flies_users_manage/admin_files_users/ajax_rename_document_parameter.html.twig', [
  234.             'form'=>$form->createView(),
  235.             'filesUser'=>$filesUser,
  236.         ]);
  237.     }
  238. /**
  239.      * @Route("/admin-files/ajax-delete-document-user{id}",name="ajax_delete_document_user")
  240.      */
  241.    public function deleteDocumentForUserAjax(FilesUser $fileUserEntityManagerInterface $entityManagerRequest $request)
  242.    {
  243.       $folder=$fileUser->getFolder();
  244.       $fileName=$fileUser->getFileName();
  245.       $user=$fileUser->getUser();
  246.       $id=$user->getId();
  247.       $entityManager->remove($fileUser);
  248.       $entityManager->flush();
  249.       $source $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder."/".$fileName;
  250.       $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/Corbeille/".$fileName;
  251.       rename($source$destination);
  252.       return $this->render('flies_users_manage/admin_files_users/ajax_delete_document_user.html.twig', [
  253.         ]);
  254.     
  255.    }
  256. /**
  257.      * @Route("/admin-files/delete-document-user{id}",name="delete_document_user")
  258.      */
  259.     public function deleteDocumentUser(FilesUser $fileUserEntityManagerInterface $entityManager)
  260.     {
  261.        
  262.         $entityManager->remove($fileUser);
  263.         $entityManager->flush();
  264.         $this->addFlash('success','Document deleted with success');
  265.         return $this->redirectToRoute('files_users_manage_home_admin',[]);
  266.     }
  267. /**
  268.      * @Route("/admin-files-users/ajax-edit-info-document-parameter-{id}", name="ajax_edit_info_document_parameter")
  269.      */
  270.     public function editInfoDocAsParameterAjax(FilesUser $filesUserRequest $requestEntityManagerInterface $entityManager,UserRepository $userRepository)
  271.     { 
  272.       $form $this->createForm(FilesUserType::class,$filesUser);
  273.       $form->remove('User');
  274.       $form->remove('FileName');
  275.       $form->remove('Folder');
  276.       $form->remove('isPrivate');
  277.       $form->handleRequest($request);
  278.       if($form->isSubmitted() && $form->isValid()){
  279.         $info=$form["info"]->getData();
  280.         $filesUser->setInfo($info);
  281.         $filesUser->setUploadAt(new DateTime());
  282.         $entityManager->flush();
  283.         $user=$filesUser->getUser();
  284.         $id=$user->getId();
  285.         $userName=$user->getLastName().' '.$user->getFirstName();
  286.         $this->addFlash('success','Info  document /<b> '$info.'</b>/ has been successfully saved  for /<b>'.$userName.'</b>');
  287.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);   
  288.     }
  289.       
  290.     return $this->render('flies_users_manage/admin_files_users/ajax_edit_info_document_parameter.html.twig', [
  291.             'form'=>$form->createView(),
  292.             'filesUser'=>$filesUser,
  293.         ]);
  294.   }
  295. /**
  296.      * @Route("/admin-files-users/ajax-move-document-parameter-{id}", name="ajax_move_document_parameter")
  297.      */
  298.     public function moveDocAsParameterAjax(FilesUser $filesUserRequest $requestEntityManagerInterface $entityManager)
  299.     {
  300.       
  301.         $folder=$filesUser->getFolder();
  302.         $fileName=$filesUser->getFileName();
  303.         $form $this->createForm(FilesUserType::class,$filesUser);
  304.         $form->remove('User');
  305.         $form->remove('FileName');        
  306.         $form->remove('info');
  307.         $form->remove('isPrivate');
  308.         $form->handleRequest($request);
  309.         if($form->isSubmitted() && $form->isValid()){ 
  310.           $newFolder=$form["Folder"]->getData();
  311.           $source $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder."/".$fileName;
  312.           $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$newFolder."/".$fileName;
  313.          rename($source$destination);
  314.          
  315.          $filesUser->setUploadAt(new DateTime());
  316.          $filesUser->setFolder($newFolder);
  317.          $entityManager->flush();
  318.          
  319.          $user=$filesUser->getUser();
  320.          $id=$user->getId();
  321.         $userName=$user->getLastName().' '.$user->getFirstName();
  322.           $this->addFlash('success','Info  document / has been successfully saved  for /<b>'.$userName.'</b>');
  323.             //return $this->redirect($request->headers->get('referer')); To seeeeee
  324.           return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);  
  325.                 
  326. }
  327.        
  328.    return $this->render('flies_users_manage/admin_files_users/ajax_move_document_parameter.html.twig', [
  329.             'form'=>$form->createView(),
  330.             'filesUser'=>$filesUser,
  331.         ]);
  332.     }
  333. /**
  334.      * @Route("flies-users-manage/show-users-files", name="show_users_files")
  335.      */
  336.     public function showUserFolder(UserRepository $userRepository,FilesUserRepository $filesUserRepository)
  337.     { 
  338.           // check if user is connected 
  339.          // if(!$this->getUser()) {return $this->redirectToRoute("logout");}
  340.         $users=$userRepository->findAll();
  341.         $allFiles=$filesUserRepository->findAll();  
  342.         $folders=FileUtils::getFoldersInListFiles($allFiles);
  343.         $usersFiles=array();
  344.         foreach ($users as $user) {
  345.             $userFiles=$user->getFilesUsers();
  346.             $arr_files=FileUtils::getFilesForListFoldersInListFiles($folders,$userFiles);
  347.             array_push($usersFiles,array('user'=>$user,'datas'=>$arr_files));
  348.        }
  349. return $this->render('flies_users_manage/admin_files_users/show_users_files.html.twig', [
  350.     'usersFiles'=>$usersFiles,
  351.     
  352.         ]);
  353. }
  354. /**
  355.      * @Route("/admin-files-users/add-documents-for-user-{id}", name="add_documents_for_user_parameter")
  356.      */
  357.     public function addDocForUserAsParameter(User $userRequest $requestEntityManagerInterface $entityManager,UserRepository $userRepository)
  358.     {
  359.        //if($id == '') { $user=$this->getUser();}
  360.       
  361.         $document = new FilesUser();
  362.         $document->setUser($user);
  363.         $document->setUploadAt(new DateTime());
  364.         $form $this->createForm(FilesUserType::class, $document);
  365.         $form->remove('User');
  366.         $form->handleRequest($request);
  367.         if($form->isSubmitted() && $form->isValid()){           
  368.           
  369.             $data $form->getData();
  370.             $uploadedFile $form['FileName']->getData();
  371.             $file_name_original=$uploadedFile->getClientOriginalName();         
  372.             $id=$user->getId();  
  373.             $concat=$id."-".date("YmdHms"); //concatenation  id .datetimenow to rename
  374.             $newFilename $concat."-".$file_name_original;             
  375.             //dd($newFilename);
  376.             $document->setFileName($newFilename);
  377.             $folder=$form["Folder"]->getData();
  378.               // destination and upload
  379.             $destination $this->getParameter('kernel.project_dir')."/public/documents/filesUsers/".$folder;;
  380.             $uploadedFile->move($destination,$newFilename);
  381.             
  382.             $entityManager->persist($document);
  383.             $entityManager->flush();
  384.     
  385.             $userName=$user->getLastName().' '.$user->getFirstName();
  386.             $this->addFlash('success','The document /<b> '$file_name_original.'</b>/ has been successfully added to /<b>'.$folder.'</b>/ for /<b>'.$userName.'</b>');
  387.             //return $this->redirect($request->headers->get('referer')); To seeeeee
  388.             return $this->redirectToRoute('files_users_manage_home_admin',['myuser'=>$id]);
  389.         }
  390.         return $this->render('flies_users_manage/admin_files_users/add_documents_for_user_parameter.html.twig', [
  391.             'form'=>$form->createView(),
  392.             'user'=>$user,
  393.         ]);
  394.     }
  395. /********************************************************/
  396. /**
  397.      * @Route("/admin-files-users/add-documents-list-users-choice", name="add_documents_list_user_choice")
  398.      */
  399.     public function addDocForUserInList(Request $requestEntityManagerInterface $entityManager)
  400.     {      
  401.         $document = new FilesUser();
  402.         $document->setUploadAt(new DateTime());
  403.         
  404.         $form $this->createForm(FilesUserType::class, $document);
  405.          $form->handleRequest($request);
  406.         if($form->isSubmitted() && $form->isValid())
  407.         {           
  408.           $data $form->getData();
  409.           $uploadedFile $form['FileName']->getData();
  410.           $file_name_original=$uploadedFile->getClientOriginalName();         
  411.           $id$form["User"]->getData()->getId();  //concatenation  id .datetimenow to rename
  412.           $concat=$id."-".date("YmdHms");
  413.           $newFilename $concat."-".$file_name_original;
  414.           $folder=$form["Folder"]->getData();
  415.           $destination $this->getParameter('kernel.project_dir').'/public/mylog';
  416.           $uploadedFile->move($destination,$newFilename);
  417.           //dd($newFilename);
  418.           $entityManager->persist($document);
  419.           $entityManager->flush();
  420.              $this->addFlash('success','The document has been successfully added ! ');
  421.                 return $this->redirectToRoute('files_users_manage_home_admin',['document'=>$document]); 
  422.         }
  423.         return $this->render('flies_users_manage/admin_files_users/add_documents_list_user_choice.html.twig', [
  424.             'form'=>$form->createView(),
  425.             //'user'=>$user,
  426.         ]);
  427.     }
  428.     /**
  429.      * @Route("abdeldisplay", name="abdeldisplay")
  430.      */
  431.     public function indexa(UserRepository $userRepository)
  432.     { 
  433.       // check if user is connected 
  434.    if(!$this->getUser()) {return $this->redirectToRoute("logout");}
  435.         
  436.        $filesUser=$this->getUser()->getFilesUsers();               
  437.         
  438.          $users $userRepository->findAll();
  439.         //dd($users);
  440.         $usersFiles=array();
  441.         foreach($users as $user) {
  442.             $tab=$user->getFilesUsers();
  443.             array_push($usersFiles,array('user'=>$user,'files'=>$tab));
  444.         } 
  445.         $roles=$this->getUser()->getRoles();      
  446.        if (in_array("ROLE_DIRECTOR"$roles) OR in_array("ROLE_ADMIN"$roles)){
  447.           //dd($roles);
  448.           return $this->render('flies_users_manage/admin_files_users/abdeldisplay.html.twig', [
  449.             'users'=>$users,
  450.             'usersFiles'=>$usersFiles,
  451.           ]);
  452.         }
  453.         if (in_array("ROLE_EMPLOYEE"$roles)){
  454.           return $this->render('flies_users_manage/files_user/display_files_user.html.twig', [           
  455.             'user'=>$this->getUser(),
  456.             'filesUser'=>$filesUser,
  457.          ]);
  458.         }
  459.       // empty template
  460.       return $this->render('flies_users_manage/index.html.twig', [
  461.             //'users'=>$users,
  462.             //'usersFiles'=>$usersFiles,
  463.       ]);
  464.     }
  465. }