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

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 Response
  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.         if ($_check_branch == false) {
  99.             return $this->redirect($this->generateUrl('user_index'));
  100.         }
  101.         $_edit_form        $this->createEditForm($_user);
  102.         $_has_role_checker in_array(RoleName::ROLE_CHECKER$_user->getRoles()) ? true false;
  103.         return $this->render('UserBundle:User:edit.html.twig', array(
  104.             'user'             => $_user,
  105.             'edit_form'        => $_edit_form->createView(),
  106.             'role_super_admin' => RoleName::ID_ROLE_SUPERADMIN,
  107.             'has_role_checker' => $_has_role_checker
  108.         ));
  109.     }
  110.     /**
  111.      * Display a page update user
  112.      * @param User $_user
  113.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response page
  114.      */
  115.     public function showAction(User $_user)
  116.     {
  117.         // Get manager
  118.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  119.         $_branche       $_user->getPpBranche() ? $_user->getPpBranche() : '';
  120.         $_check_branch  $_utils_manager->checkBrancheValid($_branche);
  121.         if ($_check_branch == false) {
  122.             return $this->redirect($this->generateUrl('user_index'));
  123.         }
  124.         if (!$_user) {
  125.             $_exception_message $this->get('translator')->trans('exception.entity');
  126.             throw $this->createNotFoundException($_exception_message);
  127.         }
  128.         return $this->render('UserBundle:User:show.html.twig', array(
  129.             'user' => $_user,
  130.         ));
  131.     }
  132.     /**
  133.      * Creation user
  134.      * @param Request $_request
  135.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  136.      * @throws \Exception
  137.      */
  138.     public function newAction(Request $_request)
  139.     {
  140.         // Get manager
  141.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  142.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  143.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  144.         $_user = new User();
  145.         $_form $this->createCreateForm($_user);
  146.         $_form->handleRequest($_request);
  147.         if ($_form->isSubmitted() && $_form->isValid()) {
  148.             $_file $_request->files->all();
  149.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  150.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  151.             }
  152.             $_is_checker $_request->request->get('checker');
  153.             $_user_manager->addUser($_user$_form$_is_checker);
  154.             $_flash_message $this->get('translator')->trans('bo.confirmation.add');
  155.             $_utils_manager->setFlash('success'$_flash_message);
  156.             return $this->redirect($this->generateUrl('user_index'));
  157.         }
  158.         return $this->render('UserBundle:User:add.html.twig', array(
  159.             'user' => $_user,
  160.             'form' => $_form->createView()
  161.         ));
  162.     }
  163.     /**
  164.      * Update user
  165.      * @param Request $_request
  166.      * @param User $_user
  167.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  168.      * @throws \Exception
  169.      */
  170.     public function updateAction(Request $_requestUser $_user)
  171.     {
  172.         // Get manager
  173.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  174.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  175.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  176.         $_edit_form $this->createEditForm($_user);
  177.         $_edit_form->handleRequest($_request);
  178.         $_has_role_checker in_array('ROLE_CHECKER'$_user->getRoles()) ? true false;
  179.         if ($_edit_form->isValid()) {
  180.             //upload fichier image
  181.             $_file $_request->files->all();
  182.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  183.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  184.             }
  185.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrPj'])) {
  186.                 $_user_upload_manager->uploadPj($_user$_file['pp_userbundle_user']['usrPj']);
  187.             }
  188.             $_is_checker $_request->request->get('checker');
  189.             $_user_manager->updateUser($_user$_edit_form$_is_checker);
  190.             $_flash_message $this->get('translator')->trans('bo.confirmation.update');
  191.             $_utils_manager->setFlash('success'$_flash_message);
  192.             $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  193.             $_refers         $_request->headers->get('referer');
  194.             if ($_user->getId() == $_user_connected->getId() && strpos($_refers"my-profile") !== false) {
  195.                 return $this->redirect($this->generateUrl('user_profile'));
  196.             }
  197.             return $this->redirect($this->generateUrl('user_index'));
  198.         }
  199.         return $this->render('UserBundle:User:edit.html.twig', array(
  200.             'user'             => $_user,
  201.             'edit_form'        => $_edit_form->createView(),
  202.             'role_super_admin' => RoleName::ID_ROLE_SUPERADMIN,
  203.             'has_role_checker' => $_has_role_checker
  204.         ));
  205.     }
  206.     /**
  207.      * Creation editing form user
  208.      * @param User $_user The entity
  209.      * @return \Symfony\Component\Form\Form The form
  210.      */
  211.     private function createCreateForm(User $_user)
  212.     {
  213.         // Get user connected
  214.         $_utils_manager  $this->get(ServiceName::SRV_METIER_UTILS);
  215.         $_user_connected $this->container->get('security.token_storage')->getToken()->getUser();
  216.         $_branche_id     $_utils_manager->findCurrentBranche() ? $_utils_manager->findCurrentBranche()->getId() : 0;
  217.         $_user_role      $_user_connected->getPpUserRole()->getId();
  218.         $_form $this->createForm(UserType::class, $_user, array(
  219.             'action'     => $this->generateUrl('user_new'),
  220.             'method'     => 'POST',
  221.             'user_role'  => $_user_role,
  222.             'branche_id' => $_branche_id
  223.         ));
  224.         return $_form;
  225.     }
  226.     /**
  227.      * Creation additing form user
  228.      * @param User $_user The entity
  229.      * @return \Symfony\Component\Form\Form The form
  230.      */
  231.     private function createEditForm(User $_user$_is_profile false)
  232.     {
  233.         // Get user connected
  234.         $_utils_manager  $this->get(ServiceName::SRV_METIER_UTILS);
  235.         $_user_connected $this->container->get('security.token_storage')->getToken()->getUser();
  236.         $_user_role      $_user_connected->getPpUserRole()->getId();
  237.         $_branche_id     $_utils_manager->findCurrentBranche() ? $_utils_manager->findCurrentBranche()->getId() : 0;
  238.         $_form $this->createForm(UserType::class, $_user, array(
  239.             'action'     => $this->generateUrl('user_update', array('id' => $_user->getId())),
  240.             'method'     => 'PUT',
  241.             'user_role'  => $_user_role,
  242.             'branche_id' => $_branche_id,
  243.             'is_profile' => $_is_profile
  244.         ));
  245.         return $_form;
  246.     }
  247.     /**
  248.      * Creation profile form user
  249.      * @param User $_user The entity
  250.      * @return \Symfony\Component\Form\Form The form
  251.      */
  252.     private function createProfileForm(User $_user)
  253.     {
  254.         $_form $this->createForm(ProfileType::class, $_user, array(
  255.             'action' => $this->generateUrl('user_profile'),
  256.             'method' => 'POST'
  257.         ));
  258.         return $_form;
  259.     }
  260.     /**
  261.      * Deleting user
  262.      * @param Request $_request requête
  263.      * @param User $_user
  264.      * @return \Symfony\Component\HttpFoundation\RedirectResponse redirection
  265.      */
  266.     public function deleteAction(Request $_requestUser $_user)
  267.     {
  268.         // Get manager
  269.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  270.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  271.         $_branche       $_user->getPpBranche() ? $_user->getPpBranche() : '';
  272.         $_check_branch  $_utils_manager->checkBrancheValid($_branche);
  273.         if ($_check_branch == false) {
  274.             return $this->redirect($this->generateUrl('user_index'));
  275.         }
  276.         $_form $this->createDeleteForm($_user);
  277.         $_form->handleRequest($_request);
  278.         if ($_request->isMethod('GET') || ($_form->isSubmitted() && $_form->isValid())) {
  279.             $_user_manager->deleteUser($_user);
  280.             $_flash_message $this->get('translator')->trans('bo.confirmation.delete');
  281.             $_utils_manager->setFlash('success'$_flash_message);
  282.         }
  283.         return $this->redirectToRoute('user_index');
  284.     }
  285.     /**
  286.      * Creation deleting form user
  287.      * @param User $_user The user entity
  288.      * @return \Symfony\Component\Form\FormInterface
  289.      */
  290.     private function createDeleteForm(User $_user)
  291.     {
  292.         return $this->createFormBuilder()
  293.             ->setAction($this->generateUrl('user_delete', array('id' => $_user->getId())))
  294.             ->setMethod('DELETE')
  295.             ->getForm();
  296.     }
  297.     /**
  298.      * Ajax user image file deletion
  299.      * @param Request $_request
  300.      * @return JsonResponse
  301.      */
  302.     public function deleteImageAjaxAction(Request $_request)
  303.     {
  304.         // Get manager
  305.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  306.         // Get all data form
  307.         $_data $_request->request->all();
  308.         $_id   $_data['id'];
  309.         $_response $_user_upload_manager->deleteImageById($_id);
  310.         return new JsonResponse($_response);
  311.     }
  312.     /**
  313.      * Ajax user  file pj
  314.      * @param Request $_request
  315.      * @return JsonResponse
  316.      */
  317.     public function deletePjAjaxAction(Request $_request)
  318.     {
  319.         // Get manager
  320.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  321.         // Get all data form
  322.         $_data $_request->request->all();
  323.         $_id   $_data['id'];
  324.         $_response $_user_upload_manager->deletePjById($_id);
  325.         return new JsonResponse($_response);
  326.     }
  327.     /**
  328.      * Deleting by group selected
  329.      * @param Request $_request
  330.      * @return \Symfony\Component\HttpFoundation\RedirectResponse
  331.      */
  332.     public function deleteGroupAction(Request $_request)
  333.     {
  334.         // Get manager
  335.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  336.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  337.         if ($_request->request->get('_group_delete') !== null) {
  338.             $_ids $_request->request->get('delete');
  339.             if ($_ids == null) {
  340.                 $_flash_message $this->get('translator')->trans('bo.confirmation.selection.delete');
  341.                 $_utils_manager->setFlash('success'$_flash_message);
  342.                 return $this->redirect($this->generateUrl('user_index'));
  343.             }
  344.             $_user_manager->deleteGroupUser($_ids);
  345.         }
  346.         $_flash_message $this->get('translator')->trans('bo.confirmation.delete');
  347.         $_utils_manager->setFlash('success'$_flash_message);
  348.         return $this->redirect($this->generateUrl('user_index'));
  349.     }
  350.     /**
  351.      * @param Request $_request
  352.      * @return \Symfony\Component\HttpFoundation\RedirectResponse|Response
  353.      * @throws \Exception
  354.      */
  355.     public function resettingPasswordAction(Request $_request)
  356.     {
  357.         // Récupérer manager
  358.         $_utils_manager $this->get(ServiceName::SRV_METIER_UTILS);
  359.         $_user_manager  $this->get(ServiceName::SRV_METIER_USER);
  360.         // Récupérer l'utilisateur connecté
  361.         $_user_connected $this->get('security.token_storage')->getToken()->getUser();
  362.         // Redirection vers page si l'utilisateur est déjà connecté
  363.         if ($_user_connected != 'anon.') {
  364.             if ($_user_connected->getCsnRole()->getId() == RoleName::ID_ROLE_ABONNE) {
  365.                 return $this->redirectToRoute('timeline_index');
  366.             }
  367.         }
  368.         if ($_request->isMethod('POST')) {
  369.             // Récuperer les données formulaire
  370.             $_post $_request->request->all();
  371.             $_resetting_password $_user_manager->resettingPassword($_post$_request);
  372.             if (!$_resetting_password) {
  373.                 $_flash_message $this->get('translator')->trans('resetting.pasword.user.not.identified');
  374.                 $_utils_manager->setFlash('error'$_flash_message);
  375.                 return $this->redirect($this->generateUrl('eternaly_resetting_password'));
  376.             }
  377.             $_flash_message $this->get('translator')->trans('resetting.pasword.email.sent', array(
  378.                 "%adresse%" => $_post['_email']
  379.             ));
  380.             $_utils_manager->setFlash('success'$_flash_message);
  381.             return $this->redirect($this->generateUrl('eternaly_resetting_password'));
  382.         }
  383.         return $this->render('UserBundle:Security:resetting_password.html.twig');
  384.     }
  385.     /**
  386.      * Change password
  387.      * @param null $_code
  388.      * @param Request $_request
  389.      * @return JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse|Response
  390.      * @throws \Exception
  391.      */
  392.     public function changePasswordAction($_code nullRequest $_request)
  393.     {
  394.         // Get manager
  395.         $_user_manager $this->get(ServiceName::SRV_METIER_USER);
  396.         $_user         $_user_manager->getUserByToken($_code);
  397.         if ($_request->isMethod('POST') && $_user) {
  398.             $_password $_request->request->get('user_password');
  399.             $_result $_user_manager->changePassword($_user$_password);
  400.             $_data           = array();
  401.             $_data['status'] = false;
  402.             if ($_result) {
  403.                 $_data['status']  = true;
  404.                 $_data['message'] = $this->get('translator')->trans('resetting.pasword.success');
  405.                 $_data['url']     = $this->generateUrl('fos_user_security_logout');
  406.             }
  407.             return new JsonResponse($_data);
  408.         }
  409.         if ($_user && !$this->getUser())
  410.             return $this->render('UserBundle:Security:change_password.html.twig');
  411.         return $this->redirectToRoute('dashboard_index');
  412.     }
  413.     /**
  414.      * mon profil
  415.      * @param Request $_request
  416.      * @return Response
  417.      * @throws \Exception
  418.      */
  419.     public function myProfileAction(Request $_request)
  420.     {
  421.         $_utils_manager       $this->get(ServiceName::SRV_METIER_UTILS);
  422.         $_user_manager        $this->get(ServiceName::SRV_METIER_USER);
  423.         $_user_upload_manager $this->get(ServiceName::SRV_METIER_USER_UPLOAD);
  424.         // Recuperer l utilisateur connecte
  425.         $_user         $this->getUser();
  426.         $_profile_form $this->createProfileForm($_user);
  427.         $_profile_form->handleRequest($_request);
  428.         if ($_profile_form->isSubmitted() && $_profile_form->isValid()) {
  429.             //upload fichier image
  430.             $_file $_request->files->all();
  431.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrImgUrl'])) {
  432.                 $_user_upload_manager->upload($_user$_file['pp_userbundle_user']['usrImgUrl']);
  433.             }
  434.             if (isset($_file['pp_userbundle_user']) && isset($_file['pp_userbundle_user']['usrPj'])) {
  435.                 $_user_upload_manager->uploadPj($_user$_file['pp_userbundle_user']['usrPj']);
  436.             }
  437.             $_user_manager->updateUser($_user$_profile_form);
  438.             $_flash_message $this->get('translator')->trans('bo.confirmation.update');
  439.             $_utils_manager->setFlash('success'$_flash_message);
  440.             return $this->redirect($this->generateUrl('user_profile'));
  441.         }
  442.         return $this->render('UserBundle:User:my_profile.html.twig', array(
  443.             'user'      => $_user,
  444.             'edit_form' => $_profile_form->createView()
  445.         ));
  446.     }
  447.     /**
  448.      * @param Request $_request
  449.      * @return JsonResponse
  450.      */
  451.     public function listAllAjaxAction(Request $_request)
  452.     {
  453.         // Get manager
  454.         $_user_manager $this->get(ServiceName::SRV_METIER_USER);
  455.         $_term $_request->query->get('term');
  456.         $_users   $_user_manager->getAllByTerm($_term);
  457.         return new JsonResponse($_users);
  458.     }
  459. }