src/Controller/Compte/CvRepreneurController.php line 71

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Mehrez Labidi
  5.  */
  6. namespace App\Controller\Compte;
  7. use App\Services\MetaTag;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use App\Entity\{
  10.     AnnuaireRepreneurs
  11. };
  12. use App\Controller\EntityUsingController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  17. use App\Form\Type\Compte\{
  18.     CvRepreneurType
  19. };
  20. use App\Services\Compte\CvRepreneurs\CvRepreneursManagers;
  21. use App\Helper\Utils;
  22. use App\Services\LogMarketingProvider;
  23. class CvRepreneurController extends EntityUsingController {
  24.     public const MAX_AGE 43200// 12heures
  25.     /**
  26.      * @var EntityManagerInterface
  27.      */
  28.     protected $em;
  29.     /**
  30.      * @var MetaTag
  31.      */
  32.     private $metaTag;
  33.     /**
  34.      * 
  35.      * @var type
  36.      */
  37.     protected $cvm;
  38.     /**
  39.      * @var LogMarketingProvider
  40.      */
  41.     private $lmp;
  42.     /**
  43.      * 
  44.      * @param EntityManagerInterface $em
  45.      * @param CvRepreneursManagers $cvm
  46.      */
  47.     public function __construct(EntityManagerInterface $emCvRepreneursManagers $cvmMetaTag $metaTagLogMarketingProvider $lmp) {
  48.         $this->em $em;
  49.         $this->cvm $cvm;
  50.         $this->metaTag $metaTag;
  51.         $this->lmp $lmp;
  52.     }
  53.     /**
  54.      * 
  55.      * @param Request $request
  56.      * @param PaginatorInterface $paginator
  57.      * @param type $codePays
  58.      * @return Response
  59.      */
  60.     public function referencer(Request $request$codePays): Response {
  61.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  62.         $user $this->getUser();
  63.         if (!$user) { // authentification obligatoire
  64.             throw new AccessDeniedException();
  65.         }
  66.         $model $this->cvm->getData();
  67.         $mode_profil = (!empty($model['modeProfil'])) ? $model['modeProfil'] : "creation";
  68.         $form $this->createForm(CvRepreneurType::class, $model, [
  69.             'action' => $this->generateUrl(
  70.                     $request->attributes->get('_route'),
  71.                     [
  72.                         'codePays' => $codePays,
  73.                     ]
  74.             ),
  75.             'method' => 'POST',
  76.             'mode_profil' => $mode_profil,
  77.         ]);
  78.         if ($request->isMethod('POST')) {
  79.             $form->submit($request->request->get($form->getName()));
  80.             if ($form->isSubmitted()) {
  81.                 if ($form->getClickedButton()->getName() === CvRepreneurType::$BOUTON_ENREGISTRER_TEMPORAIREMENT) {
  82.                   
  83.                     if ($form->isValid()) {
  84.                         $data $form->getData();
  85.                         $this->cvm->enregistrerCV($data);
  86.                         $this->addFlash('success_modif_cv_repreneur''Votre profil est modifié');
  87.                     }
  88.                 }
  89.                 if ($form->getClickedButton()->getName() === CvRepreneurType::$BOUTON_METTRE_EN_LIGNE) {
  90.                     if ($form->isValid()) {
  91.                         $data $form->getData();
  92.                         $idCv $this->cvm->publierCv($data);
  93.                         return $this->redirectToRoute('compte_cv_repreneur_mise_en_avant',
  94.                                         [
  95.                                             'codePays' => $codePays,
  96.                                             "id" => $idCv,
  97.                                             "slug" => Utils::slugify($data["nom"] . " " $data["prenom"] . " " $data["formation"])
  98.                         ]);
  99.                     } else {
  100.                         $this->addFlash('echec_modif_cv_repreneur'"Certains champs sont vides ou invalides.");
  101.                     }
  102.                 }
  103.                 if ($form->getClickedButton()->getName() === CvRepreneurType::$BOUTON_METTRE_EN_ATTENTE) {
  104.                  
  105.                     if ($form->isValid()) {
  106.                         $data $form->getData();
  107.                         if (!empty($data["idRepreneur"])) {
  108.                             $this->cvm->changerStatut($data["idRepreneur"], "attente");
  109.                             $this->addFlash('success_modif_cv_repreneur''Votre profil est mis en attente');
  110.                             return $this->redirectToRoute('compte_cv_repreneur',
  111.                                             [
  112.                                                 'codePays' => $codePays
  113.                                             ]
  114.                                     );
  115.                         }
  116.                     }
  117.                 }
  118.             }
  119.         }
  120.         $response $this->render('compte/cv_repreneur/referencer.html.twig',
  121.                 ['form' => $form->createView(), 'cv' => $model]);
  122.         $response->setPublic();
  123.         $response->setMaxAge(self::MAX_AGE); // 12heures
  124.         return $response;
  125.     }
  126.     public function miseEnAvant(Request $request$id$codePays): Response {
  127.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  128.         $user $this->getUser();
  129.         if (!$user) { // authentification obligatoire
  130.             throw new AccessDeniedException();
  131.         }
  132.         $cv $this->em->getRepository(AnnuaireRepreneurs::class)->find($id);
  133.         if ($user->getLogin() !== $cv->getLogin()) { // le cv n'est pas le votre
  134.             throw new AccessDeniedException();
  135.         }
  136.         $response $this->render('compte/cv_repreneur/mise_en_avant.html.twig',
  137.                 ['cv' => $cv]
  138.         );
  139.         $response->setPublic();
  140.         $response->setMaxAge(self::MAX_AGE); // 12heures
  141.         return $response;
  142.     }
  143.     public function envoyePourValidation(Request $request$id$codePays): Response {
  144.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  145.         $user $this->getUser();
  146.         if (!$user) { // authentification obligatoire
  147.             throw new AccessDeniedException();
  148.         }
  149.         $cv $this->em->getRepository(AnnuaireRepreneurs::class)->find($id);
  150.         if ($user->getLogin() !== $cv->getLogin()) { // le cv n'est pas le votre
  151.             throw new AccessDeniedException();
  152.         }
  153.         $response $this->render('compte/cv_repreneur/envoye_pour_validation.html.twig', []);
  154.         $response->setPublic();
  155.         $response->setMaxAge(self::MAX_AGE); // 12heures
  156.         return $response;
  157.     }
  158.     public function supprimer(Request $request$id$codePays): Response {
  159.         $this->cvm->supprimerCV($id);
  160.         $this->addFlash('success_modif_cv_repreneur''Votre profil est supprimé');
  161.         return $this->redirectToRoute('compte_cv_repreneur',
  162.                         [
  163.                             'codePays' => $codePays
  164.                         ]
  165.                 );
  166.     }
  167. }