src/Controller/Compte/InvestisseurPriveController.php line 72

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\Helper\Utils;
  8. use App\Services\MetaTag;
  9. use App\Controller\EntityUsingController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use App\Form\Type\Compte\{
  14.     InvestisseurPriveType
  15. };
  16. use App\Entity\InvestisseursPrives;
  17. use App\Services\Compte\InvestisseurPrive\InvestisseurPriveManagers;
  18. use App\Services\Encryptage\AesEncrytageStrategy;
  19. class InvestisseurPriveController extends EntityUsingController {
  20.     public const MAX_AGE 43200// 12heures
  21.     public const ROUTE_TO_LISTE 'compte_investisseur_prive_liste';
  22.     public const ROUTE_TO_EDIT 'compte_investisseur_prive_modifier';
  23.     /**
  24.      * @var EntityManagerInterface
  25.      */
  26.     protected $em;
  27.     /**
  28.      *
  29.      * @var type
  30.      */
  31.     private $ipm;
  32.     /**
  33.      *
  34.      * @var type
  35.      */
  36.     private $metaTag;
  37.     /**
  38.      * @var AesEncrytageStrategy
  39.      */
  40.     private $encrypt;
  41.     /**
  42.      *
  43.      * @param EntityManagerInterface $em
  44.      * @param MetaTag $metaTag
  45.      * @param InvestisseurPriveManagers $ipm
  46.      * @param AesEncrytageStrategy $aesEncrytageStrategy
  47.      */
  48.     public function __construct(EntityManagerInterface $emMetaTag $metaTagInvestisseurPriveManagers $ipmAesEncrytageStrategy $aesEncrytageStrategy) {
  49.         $this->em $em;
  50.         $this->metaTag $metaTag;
  51.         $this->ipm $ipm;
  52.         $this->encrypt $aesEncrytageStrategy;
  53.     }
  54.     /**
  55.      * 
  56.      * @param Request $request
  57.      * @param PaginatorInterface $paginator
  58.      * @param type $codePays
  59.      * @return Response
  60.      */
  61.     public function referencer(Request $request$codePays): Response {
  62.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  63.         $newsValues = [// LES  Coordonnées utilisateur
  64.             "nom" => ($this->getUser()->_get("nom_utilisateur")) ?? NULL,
  65.             "prenom" => ($this->getUser()->_get("prenom_utilisateur")) ?? NULL,
  66.             "telephone" => ($this->getUser()->_get("telephone_utilisateur")) ? $this->encrypt->decryptage($this->getUser()->_get("telephone_utilisateur")) : NULL,
  67.             "indicatif" => ($this->getUser()->_get("indicatif_tel")) ?? NULL,
  68.             "email" => ($this->getUser()->_get("email_utilisateur")) ?? NULL
  69.         ];
  70.         $form $this->createForm(InvestisseurPriveType::class, $newsValues, [
  71.             'action' => $this->generateUrl(
  72.                     $request->attributes->get('_route'),
  73.                     [
  74.                         'codePays' => $codePays,
  75.                     ]
  76.             ),
  77.             'method' => 'POST',
  78.             'mode' => NULL
  79.         ]);
  80.         if ($request->isMethod('POST')) {
  81.             $form->submit($request->request->get($form->getName()));
  82.             if ($form->isSubmitted()) {
  83.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_ENREGISTRER_TEMPORAIREMENT) {
  84.                     $form->clearErrors(true);
  85.                     $data $form->getData();
  86.                     $data["mode"] = "attente";
  87.                     $id $this->ipm->saveData($data);
  88.                     $this->addFlash('success_investisseur_prive''les données  sont enregistrées avec succès');
  89.                     return $this->redirectToRoute(self::ROUTE_TO_EDIT, ['id' => $id'codePays' => $codePays]);
  90.                 }
  91.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_METTRE_EN_LIGNE) {
  92.                     if ($form->isValid()) {
  93.                         $data $form->getData();
  94.                         $data["mode"] = "demande_publication";
  95.                         $this->ipm->saveData($data);
  96.                         return $this->redirectToRoute(self::ROUTE_TO_LISTE, ['codePays' => $codePays]);
  97.                     } else {
  98.                         $this->addFlash('echec_investisseur_prive''les champs suivants doivent être renseignés');
  99.                     }
  100.                 }
  101.             }
  102.         }
  103.         $metaTag $this->metaTag->setTitle("Compte / Investisseur privé")->setDescription("Compte / Investisseur privé");
  104.         $response $this->render('compte/investisseur_prive/referencer.html.twig', [
  105.             'form' => $form->createView(), "cv" => null,
  106.             'metaTag' => $metaTag,
  107.             "data" => $form->getData()
  108.         ]);
  109.         return $response;
  110.     }
  111.     /**
  112.      *
  113.      * @param Request $request
  114.      * @param type $codePays
  115.      * @return Response
  116.      */
  117.     public function listeInvestisseurs(Request $request$codePays): Response {
  118.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  119.         $investisseurs $this->ipm->getListInvestisseursByUtilisateur();
  120.         $metaTag $this->metaTag
  121.                 ->setTitle("Compte / Vos profils d'investisseur référencés")
  122.                 ->setDescription("Compte / Vos profils d'investisseur référencés");
  123.         $response $this->render('compte/investisseur_prive/liste_investisseurs.html.twig', [
  124.             'metaTag' => $metaTag'investisseurs' => $investisseurs
  125.         ]);
  126.         $response->setPublic();
  127.         $response->setMaxAge(self::MAX_AGE);
  128.         return $response;
  129.     }
  130.     /**
  131.      *
  132.      * @param Request $request
  133.      * @param type $id
  134.      * @param type $codePays
  135.      * @return Response
  136.      */
  137.     public function supprimer(Request $request$id$codePays): Response {
  138.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  139.         $this->ipm->supprimer($id);
  140.         $this->addFlash('success_delete_investisseur_prive''Votre investisseur privé est supprimé');
  141.         return $this->redirectToRoute(self::ROUTE_TO_LISTE, ['codePays' => $codePays]);
  142.     }
  143.     /**
  144.      *
  145.      * @param Request $request
  146.      * @param type $id
  147.      * @param type $codePays
  148.      * @return Response
  149.      * @throws MissingMandatoryParams
  150.      * @throws NotFound
  151.      */
  152.     public function modifier(Request $request$id$codePays): Response {
  153.         $this->denyAccessUnlessGranted('ROLE_USER'); //  page inaccessible sans authentification
  154.         if (!$id) {
  155.             throw new MissingMandatoryParams();
  156.         }
  157.         $ip $this->getDoctrine()->getRepository(InvestisseursPrives::class)->find($id);
  158.         if (!$ip) {
  159.             throw new NotFound();
  160.         }
  161.         if ($ip->getIdUser() != $this->getUser()->getId()) {
  162.             throw $this->createNotFoundException("ce profile n'est pas le votre");
  163.         }
  164.         $oldCoordonnees = [// LES  Coordonnées utilisateur
  165.             "nom" => ($ip->_get("nom_contact")) ?? NULL,
  166.             "prenom" => ($ip->_get("prenom_contact")) ?? NULL,
  167.             "telephone" => ($ip->_get("telephone_contact")) ?? NULL,
  168.             "indicatif" => ($ip->_get("indicatif_telephone_contact")) ?? NULL,
  169.             "email" => ($ip->_get("email_contact")) ?? NULL
  170.         ];
  171.         $form $this->createForm(InvestisseurPriveType::class, array_merge(Utils::convertObjectToArray($ip), $oldCoordonnees), [
  172.             'action' => $this->generateUrl(
  173.                     $request->attributes->get('_route'),
  174.                     [
  175.                         'codePays' => $codePays,
  176.                         'id' => $id
  177.                     ]
  178.             ),
  179.             'method' => 'POST',
  180.             'mode' => $ip->_get("mode") ?? NULL
  181.         ]);
  182.         if ($request->isMethod('POST')) {
  183.             $form->submit($request->request->get($form->getName()));
  184.             if ($form->isSubmitted()) {
  185.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_METTRE_EN_ATTENTE) {
  186.                     $form->clearErrors(true);
  187.                     $data $form->getData();
  188.                     $this->ipm->mettreEnAttente($id);
  189.                     return $this->redirectToRoute(self::ROUTE_TO_EDIT, ['id' => $id'codePays' => $codePays]);
  190.                 }
  191.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_SUPPRIMER) {
  192.                     $form->clearErrors(true);
  193.                     $data $form->getData();
  194.                     $this->ipm->supprimer($id);
  195.                     return $this->redirectToRoute(self::ROUTE_TO_EDIT, ['id' => $id'codePays' => $codePays]);
  196.                 }
  197.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_ENREGISTRER_TEMPORAIREMENT) {
  198.                     $form->clearErrors(true);
  199.                     $data $form->getData();
  200.                     $data["mode"] = "attente";
  201.                     $this->ipm->saveData($data$id);
  202.                     $this->addFlash('success_investisseur_prive''les données  sont enregistrées avec succès');
  203.                     return $this->redirectToRoute(self::ROUTE_TO_EDIT, ['id' => $id'codePays' => $codePays]);
  204.                 }
  205.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_METTRE_EN_LIGNE) {
  206.                     if ($form->isValid()) {
  207.                         $data $form->getData();
  208.                         $data["mode"] = "demande_publication";
  209.                         $this->ipm->saveData($data$id);
  210.                         return $this->redirectToRoute(self::ROUTE_TO_LISTE, ['codePays' => $codePays]);
  211.                     } else {
  212.                         $this->addFlash('echec_investisseur_prive''les champs suivants doivent être renseignés');
  213.                     }
  214.                 }
  215.                 if ($form->getClickedButton()->getName() === InvestisseurPriveType::$BOUTON_LAISSER_EN_LIGNE) {
  216.                     if ($form->isValid()) {
  217.                         $data $form->getData();
  218.                         $data["mode"] = "publique";
  219.                         $this->ipm->saveData($data$id);
  220.                         return $this->redirectToRoute(self::ROUTE_TO_LISTE, ['codePays' => $codePays]);
  221.                     } else {
  222.                         $this->addFlash('echec_investisseur_prive''les champs suivants doivent être renseignés');
  223.                     }
  224.                 }
  225.             }
  226.         }
  227.         $metaTag $this->metaTag->setTitle("Compte / Investisseur privé")->setDescription("Compte / Investisseur privé");
  228.         $response $this->render('compte/investisseur_prive/referencer.html.twig', [
  229.             'form' => $form->createView(),
  230.             "ip" => $ip,
  231.             'metaTag' => $metaTag,
  232.             "data" => $form->getData()
  233.         ]);
  234.  
  235.         return $response;
  236.     }
  237.  
  238. }