src/ProPneu/Service/UserBundle/Controller/UserController.php line 495

Open in your IDE?
  1. <?php
  2. namespace App\ProPneu\Service\UserBundle\Controller;
  3. use App\ProPneu\Service\MetierManagerBundle\Utils\RoleName;
  4. use App\ProPneu\Service\MetierManagerBundle\Utils\ServiceName;
  5. use App\ProPneu\Service\UserBundle\Entity\User;
  6. use App\ProPneu\Service\UserBundle\Form\ProfileType;
  7. use App\ProPneu\Service\UserBundle\Form\UserType;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. /**
  13.  * Class UserController
  14.  */
  15. class UserController extends AbstractController
  16. {
  17.     /**
  18.      * Json data recovery
  19.      * @param Request $_request
  20.      * @param int $_nb_total
  21.      * @param int $_nb_displayed
  22.      * @param mixed $_values
  23.      * @param string $_template
  24.      * @return string
  25.      */
  26.     public function getDataJson($_request$_nb_total$_nb_displayed$_values$_template)
  27.     {
  28.         $_data['sEcho']                = $_request->query->get('sEcho');
  29.         $_data['iTotalRecords']        = (int)$_nb_total;
  30.         $_data['iTotalDisplayRecords'] = (int)$_nb_displayed;
  31.         return $this->renderView($_template, array(
  32.             'data'   => $_data,
  33.             'values' => $_values
  34.         ));
  35.     }
  36.     /**
  37.      * Ajax list user
  38.      * @param \Symfony\Component\HttpFoundation\Request $_request
  39.      * @return \Symfony\Component\HttpFoundation\Response
  40.      */
  41.     public function listAjaxAction(Request $_request)
  42.     {
  43.         // Get service
  44.         $_user_manager $this->get(ServiceName::SRV_METIER_USER);
  45.         // Filter and sorting
  46.         $_filters  $_user_manager->getFilters($_request);
  47.         $_sortings $_user_manager->getSortings($_request, array(
  48.             '',
  49.             '',
  50.             'usr.usrFirstname',
  51.             'usr.email',
  52.             'usr.usrAddress',
  53.             'usr_rl.usrRlName',
  54.             'usr.usrDateCreate',
  55.         ));
  56.         // Search filter
  57.         $_options = array(
  58.             'search'   => $_request->query->get('sSearch'),
  59.             'usr_role' => $_request->query->get('usr_role'),
  60.         );
  61.         // Retrieve records
  62.         $_nb_paris $_user_manager->getNbPpUserBy($_options);
  63.         $_city_result $_user_manager->getAllPpUserBy($_options$_filters$_sortings);
  64.         // Json treatment
  65.         $_template 'UserBundle:User:list.json.twig';
  66.         $_content  $this->getDataJson(
  67.             $_request,
  68.             $_nb_paris['nb'],
  69.             $_nb_paris['nb'],
  70.             $_city_result,
  71.             $_template
  72.         );
  73.         $_response = new Response($_content);
  74.         $_response->headers->set('Content-Type''application/json');
  75.         return $_response;
  76.     }
  77.     /**
  78.      * Display all user
  79.      * @return Render page
  80.      */
  81.     public function indexAction()
  82.     {
  83.         $_roles RoleName::$ROLE_LIST;
  84.         return $this->render('UserBundle:User:index.html.twig', [
  85.             'roles' => $_roles
  86.         ]);
  87.     }
  88.     /**
  89.      * Display a page update user
  90.      * @param User $_user
  91.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  92.      */
  93.     public function editAction(User $_user)
  94.     {
  95.         $_utils_manager    $this->get(ServiceName::SRV_METIER_UTILS);
  96.         $_branche          $_user->getPpBranche() ? $_user->getPpBranche() : '';
  97.         $_check_branch     $_utils_manager->checkBrancheValid($_branche);
  98.         $_user_roles       $_user->getRoles();
  99.         $_role_super_admin RoleName::ROLE_SUPER_ADMINISTRATEUR;
  100.         if (count($_user_roles) && in_array($_role_super_admin$_user_roles)) {
  101.             $_utils_manager->setFlash('error''Accès non autorisé');
  102.             return $this->redirectToRoute('user_index');
  103.         }
  104.         if ($_check_branch == false) {
  105.             return $this->redirect($this->generateUrl('user_index'));
  106.         }
  107.         $_edit_form        $this->createEditForm($_user);
  108.         $_has_role_checker in_array(RoleName::ROLE_CHECKER$_user->getRoles()) ? true false;
  109.         return $this->render('UserBundle:User:edit.html.twig', array(
  110.             'user'             => $_user,
  111.             'edit_form'        => $_edit_form->createView(),
  112.             'role_super_admin' => RoleName::ID_ROLE_SUPERADMIN,
  113.             'has_role_checker' => $_has_role_checker
  114.         ));
  115.     }
  116.     /**
  117.      * Display a page update user
  118.      * @param User $_user
  119.      * @return Render page
  120.      */
  121.     public function showAction(User $_user)
  122.     {
  123.         // Get manager
  124.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  125.         $_branche $_user->getPpBranche() ? $_user->getPpBranche() : '';
  126.         $_check_branch $_utils_manager->checkBrancheValid($_branche);
  127.         if ($_check_branch == false) {
  128.             return $this->redirect($this->generateUrl('user_index'));
  129.         }
  130.         if (!$_user) {
  131.             $_exception_message $this->get('translator')->trans('exception.entity');
  132.             throw $this->createNotFoundException($_exception_message);
  133.         }
  134.         return $this->render('UserBundle:User:show.html.twig', array(
  135.             'user' => $_user,
  136.         ));
  137.     }
  138.     /**
  139.      * Creation user
  140.      * @param Request $_request
  141.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  142.      * @throws \Exception
  143.      */
  144.     public function newAction(Request $_request)
  145.     {
  146.         // Get manager
  147.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  148.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  149.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  150.         $_user = new User();
  151.         /**
  152.          * si connecte autre que superadmin centre par defaut centre user connected
  153.          */
  154.         $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  155.         $_has_role_superadmin in_array('ROLE_SUPERADMIN'$_user_connected->getRoles());
  156.         if (!$_has_role_superadmin) {
  157.             $_user->setPpCentres($_user_connected->getPpCentres());
  158.         }
  159.         $_form $this->createCreateForm($_user);
  160.         $_form->handleRequest($_request);
  161.         if ($_form->isSubmitted() && $_form->isValid()) {
  162.             // time slot
  163.             if ($_user->getUsrOpeningTime() && $_user->getUsrClosingTime()) {
  164.                 $opening_time = new \DateTime(($_user->getUsrOpeningTime())->format('H:i:s'));
  165.                 $closing_time = new \DateTime(($_user->getUsrClosingTime())->format('H:i:s'));
  166.                 $_user->setUsrOpeningTime($opening_time);
  167.                 $_user->setUsrClosingTime($closing_time);
  168.             }
  169.             $_is_enabled $_request->request->get('enabled');
  170.             if ($_is_enabled$_user->setEnabled(1);
  171.             $_file $_request->files->all();
  172.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  173.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  174.             }
  175.             $_is_checker $_request->request->get('checker');
  176.             $_user_manager->addUser($_user$_form$_is_checker);
  177.             $_flash_message $this->get('translator')->trans('bo.confirmation.add');
  178.             $_utils_manager->setFlash('success'$_flash_message);
  179.             return $this->redirect($this->generateUrl('user_index'));
  180.         }
  181.         return $this->render('UserBundle:User:add.html.twig', array(
  182.             'user'             => $_user,
  183.             'role_super_admin' => RoleName::ID_ROLE_SUPERADMIN,
  184.             'form'             => $_form->createView()
  185.         ));
  186.     }
  187.     /**
  188.      * Update user
  189.      * @param Request $_request
  190.      * @param User $_user
  191.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  192.      * @throws \Exception
  193.      */
  194.     public function updateAction(Request $_requestUser $_user)
  195.     {
  196.         // Get manager
  197.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  198.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  199.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  200.         $_user_roles       $_user->getRoles();
  201.         $_role_super_admin RoleName::ROLE_SUPER_ADMINISTRATEUR;
  202.         $_timezone         $this->get('security.token_storage')->getToken()->getAttributes()['_timezone'];
  203.         if (count($_user_roles) && in_array($_role_super_admin$_user_roles)) {
  204.             $_utils_manager->setFlash('error''Accès non autorisé');
  205.             return $this->redirectToRoute('user_index');
  206.         }
  207.         $_edit_form $this->createEditForm($_user);
  208.         $_edit_form->handleRequest($_request);
  209.         $_has_role_checker in_array('ROLE_CHECKER'$_user->getRoles()) ? true false;
  210.         if ($_edit_form->isValid()) {
  211.             // time slot
  212.             if ($_user->getUsrOpeningTime() && $_user->getUsrClosingTime()) {
  213.                 $opening_time = new \DateTime(($_user->getUsrOpeningTime())->format('H:i:s'));
  214.                 $closing_time = new \DateTime(($_user->getUsrClosingTime())->format('H:i:s'));
  215.                 $_user->setUsrOpeningTime($opening_time);
  216.                 $_user->setUsrClosingTime($closing_time);
  217.             }
  218.             $_is_enabled $_request->request->get('enabled');
  219.             if ($_is_enabled$_user->setEnabled(1);
  220.             //upload fichier image
  221.             $_file $_request->files->all();
  222.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  223.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  224.             }
  225.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrPj'])) {
  226.                 $_user_upload_manager->uploadPj($_user$_file['pp_userbundle_user']['usrPj']);
  227.             }
  228.             $_is_checker $_request->request->get('checker');
  229.             /**
  230.              * si connecte autre que superadmin centre par defaut centre user connected
  231.              */
  232.             $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  233.             $_has_role_superadmin in_array('ROLE_SUPERADMIN'$_user_connected->getRoles()) ? true false;
  234.             if (!$_has_role_superadmin) {
  235.                 $_user->setPpCentres($_user_connected->getPpCentres());
  236.             }
  237.             $_user_manager->updateUser($_user$_edit_form$_is_checker);
  238.             $_flash_message $this->get('translator')->trans('bo.confirmation.update');
  239.             $_utils_manager->setFlash('success'$_flash_message);
  240.             $_user_manager->destroyAllConnexion($_user$_timezone);
  241.             $_refers         $_request->headers->get('referer');
  242.             if ($_user->getId() == $_user_connected->getId() && strpos($_refers"my-profile") !== false) {
  243.                 return $this->redirect($this->generateUrl('user_profile'));
  244.             }
  245.             return $this->redirect($this->generateUrl('user_index'));
  246.         }
  247.         return $this->render('UserBundle:User:edit.html.twig', array(
  248.             'user'             => $_user,
  249.             'edit_form'        => $_edit_form->createView(),
  250.             'role_super_admin' => RoleName::ID_ROLE_SUPERADMIN,
  251.             'has_role_checker' => $_has_role_checker
  252.         ));
  253.     }
  254.     /**
  255.      * Creation editing form user
  256.      * @param User $_user The entity
  257.      * @return \Symfony\Component\Form\Form The form
  258.      */
  259.     private function createCreateForm(User $_user)
  260.     {
  261.         // Get user connected
  262.         $_utils_manager  $this->get(ServiceName::SRV_METIER_UTILS);
  263.         $_user_connected $this->container->get('security.token_storage')->getToken()->getUser();
  264.         $_branche_id     $_utils_manager->findCurrentBranche() ? $_utils_manager->findCurrentBranche()->getId() : 0;
  265.         $_user_role      $_user_connected->getPpUserRole()->getId();
  266.         $_form $this->createForm(UserType::class, $_user, array(
  267.             'action'     => $this->generateUrl('user_new'),
  268.             'method'     => 'POST',
  269.             'user_role'  => $_user_role,
  270.             'branche_id' => $_branche_id,
  271.             'centres' => $this->getUser()->getIdPpCentres()
  272.         ));
  273.         return $_form;
  274.     }
  275.     /**
  276.      * Creation additing form user
  277.      * @param User $_user The entity
  278.      * @return \Symfony\Component\Form\Form The form
  279.      */
  280.     private function createEditForm(User $_user$_is_profile false)
  281.     {
  282.         // Get user connected
  283.         $_utils_manager  $this->get(ServiceName::SRV_METIER_UTILS);
  284.         $_user_connected $this->container->get('security.token_storage')->getToken()->getUser();
  285.         $_user_role      $_user_connected->getPpUserRole()->getId();
  286.         $_branche_id     $_utils_manager->findCurrentBranche() ? $_utils_manager->findCurrentBranche()->getId() : 0;
  287.         $_form $this->createForm(UserType::class, $_user, array(
  288.             'action'     => $this->generateUrl('user_update', array('id' => $_user->getId())),
  289.             'method'     => 'PUT',
  290.             'user_role'  => $_user_role,
  291.             'branche_id' => $_branche_id,
  292.             'is_profile' => $_is_profile,
  293.             'centres' => $this->getUser()->getIdPpCentres()
  294.         ));
  295.         return $_form;
  296.     }
  297.     /**
  298.      * Creation profile form user
  299.      * @param User $_user The entity
  300.      * @return \Symfony\Component\Form\Form The form
  301.      */
  302.     private function createProfileForm(User $_user)
  303.     {
  304.         $_form $this->createForm(ProfileType::class, $_user, array(
  305.             'action'     => $this->generateUrl('user_profile'),
  306.             'method'     => 'POST'
  307.         ));
  308.         return $_form;
  309.     }
  310.     /**
  311.      * Deleting user
  312.      * @param Request $_request requête
  313.      * @param User $_user
  314.      * @return Redirect redirection
  315.      */
  316.     public function deleteAction(Request $_requestUser $_user)
  317.     {
  318.         // Get manager
  319.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  320.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  321.         $_branche          $_user->getPpBranche() ? $_user->getPpBranche() : '';
  322.         $_check_branch     $_utils_manager->checkBrancheValid($_branche);
  323.         $_user_roles       $_user->getRoles();
  324.         $_role_super_admin RoleName::ROLE_SUPER_ADMINISTRATEUR;
  325.         if (count($_user_roles) && in_array($_role_super_admin$_user_roles)) {
  326.             $_utils_manager->setFlash('error''Accès non autorisé');
  327.             return $this->redirectToRoute('user_index');
  328.         }
  329.         $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  330.         if ($_user_connected->getId() == $_user->getId()) {
  331.             $_utils_manager->setFlash('error''Accès non autorisé');
  332.             return $this->redirectToRoute('user_index');
  333.         }
  334.         if ($_check_branch == false) {
  335.             return $this->redirect($this->generateUrl('user_index'));
  336.         }
  337.         $_form $this->createDeleteForm($_user);
  338.         $_form->handleRequest($_request);
  339.         if ($_request->isMethod('GET') || ($_form->isSubmitted() && $_form->isValid())) {
  340.             $_user_manager->deleteUser($_user);
  341.             $_flash_message $this->get('translator')->trans('bo.confirmation.delete');
  342.             $_utils_manager->setFlash('success'$_flash_message);
  343.         }
  344.         return $this->redirectToRoute('user_index');
  345.     }
  346.     /**
  347.      * Creation deleting form user
  348.      * @param User $_user The user entity
  349.      * @return \Symfony\Component\Form\Form The form
  350.      */
  351.     private function createDeleteForm(User $_user)
  352.     {
  353.         return $this->createFormBuilder()
  354.             ->setAction($this->generateUrl('user_delete', array('id' => $_user->getId())))
  355.             ->setMethod('DELETE')
  356.             ->getForm();
  357.     }
  358.     /**
  359.      * Ajax user image file deletion
  360.      * @param Request $_request
  361.      * @return JsonResponse
  362.      */
  363.     public function deleteImageAjaxAction(Request $_request)
  364.     {
  365.         // Get manager
  366.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  367.         // Get all data form
  368.         $_data $_request->request->all();
  369.         $_id   $_data['id'];
  370.         $_response $_user_upload_manager->deleteImageById($_id);
  371.         return new JsonResponse($_response);
  372.     }
  373.     /**
  374.      * Ajax user  file pj
  375.      * @param Request $_request
  376.      * @return JsonResponse
  377.      */
  378.     public function deletePjAjaxAction(Request $_request)
  379.     {
  380.         // Get manager
  381.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  382.         // Get all data form
  383.         $_data $_request->request->all();
  384.         $_id   $_data['id'];
  385.         $_response $_user_upload_manager->deletePjById($_id);
  386.         return new JsonResponse($_response);
  387.     }
  388.     /**
  389.      * Deleting by group selected
  390.      * @param Request $_request
  391.      * @return Redirect liste utilisateur
  392.      */
  393.     public function deleteGroupAction(Request $_request)
  394.     {
  395.         // Get manager
  396.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  397.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  398.         if ($_request->request->get('_group_delete') !== null) {
  399.             $_ids $_request->request->get('delete');
  400.             if ($_ids == null) {
  401.                 $_flash_message $this->get('translator')->trans('bo.confirmation.selection.delete');
  402.                 $_utils_manager->setFlash('success'$_flash_message);
  403.                 return $this->redirect($this->generateUrl('user_index'));
  404.             }
  405.             $_user_manager->deleteGroupUser($_ids);
  406.         }
  407.         $_flash_message $this->get('translator')->trans('bo.confirmation.delete');
  408.         $_utils_manager->setFlash('success'$_flash_message);
  409.         return $this->redirect($this->generateUrl('user_index'));
  410.     }
  411.     /**
  412.      * @param Request $_request
  413.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  414.      * @throws \Exception
  415.      */
  416.     public function resettingPasswordAction(Request $_request)
  417.     {
  418.         // Récupérer manager
  419.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  420.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  421.         // Récupérer l'utilisateur connecté
  422.         $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  423.         if ($_request->isMethod('POST')) {
  424.             // Récuperer les données formulaire
  425.             $_post $_request->request->all();
  426.             $_resetting_password $_user_manager->resettingPassword($_post$_request);
  427.             if (!$_resetting_password) {
  428.                 $_flash_message $this->get('translator')->trans('resetting.pasword.user.not.identified');
  429.                 $_utils_manager->setFlash('error'$_flash_message);
  430.                 return $this->redirect($this->generateUrl('eternaly_resetting_password'));
  431.             }
  432.             $_flash_message $this->get('translator')->trans('resetting.pasword.email.sent', array(
  433.                 "%adresse%" => $_post['_email']
  434.             ));
  435.             $_utils_manager->setFlash('success'$_flash_message);
  436.             return $this->redirect($this->generateUrl('eternaly_resetting_password'));
  437.         }
  438.         return $this->render('UserBundle:Security:resetting_password.html.twig');
  439.     }
  440.     /**
  441.      * Change password
  442.      * @param null $_code
  443.      * @param Request $_request
  444.      * @return JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
  445.      * @throws \Exception
  446.      */
  447.     public function changePasswordAction($_code nullRequest $_request)
  448.     {
  449.         // Get manager
  450.         $_user_manager $this->get(ServiceName::SRV_METIER_USER);
  451.         $_user         $_user_manager->getUserByToken($_code);
  452.         if ($_request->isMethod('POST') && $_user) {
  453.             $_password $_request->request->get('user_password');
  454.             $_result $_user_manager->changePassword($_user$_password);
  455.             $_data           = array();
  456.             $_data['status'] = false;
  457.             if ($_result) {
  458.                 $_data['status']  = true;
  459.                 $_data['message'] = $this->get('translator')->trans('resetting.pasword.success');
  460.                 $_data['url']     = $this->generateUrl('fos_user_security_logout');
  461.             }
  462.             return new JsonResponse($_data);
  463.         }
  464.         if ($_user && !$this->getUser())
  465.             return $this->render('UserBundle:Security:change_password.html.twig');
  466.         return $this->redirectToRoute('dashboard_index');
  467.     }
  468.     /**
  469.      * mon profil
  470.      * @return Response
  471.      */
  472.     public function myProfileAction(Request $_request)
  473.     {
  474.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  475.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  476.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  477.         // Recuperer l utilisateur connecte
  478.         $_user      $this->getUser();
  479.         $_profile_form $this->createProfileForm($_user);
  480.         $_profile_form->handleRequest($_request);
  481.         if ($_profile_form->isSubmitted() && $_profile_form->isValid()) {
  482.             //upload fichier image
  483.             $_file $_request->files->all();
  484.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  485.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  486.             }
  487.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrPj'])) {
  488.                 $_user_upload_manager->uploadPj($_user$_file['pp_userbundle_user']['usrPj']);
  489.             }
  490.             $_user_manager->updateUser($_user$_profile_form);
  491.             $_flash_message $this->get('translator')->trans('bo.confirmation.update');
  492.             $_utils_manager->setFlash('success'$_flash_message);
  493.             return $this->redirect($this->generateUrl('user_profile'));
  494.         }
  495.         return $this->render('UserBundle:User:my_profile.html.twig', array(
  496.             'user'      => $_user,
  497.             'edit_form' => $_profile_form->createView()
  498.         ));
  499.     }
  500. }