src/Controller/BaseValorisationsController.php line 165

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Services\ManagerEntity\ValorisationsManagers;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use App\Entity\Valorisations;
  8. use App\Twig\TranslationExtension;
  9. use App\Repository\CommandesValorisationsRepository;
  10. use App\Repository\CommandesRepository;
  11. use App\Services\MetaTag;
  12. use App\Entity\Panier;
  13. use Knp\Component\Pager\PaginatorInterface;
  14. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  15. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  16. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  17. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextType;
  19. use Symfony\Component\Form\Forms;
  20. use App\Services\ManagerEntity\SecteursActiviteManagers;
  21. use App\Services\ManagerEntity\DroitsAccesManagers;
  22. class BaseValorisationsController extends EntityUsingController {
  23.     
  24.     /*
  25.      * @var ValorisationsManagers $vm
  26.      */
  27.     private $vm;
  28.     /*
  29.      * @var EntityManagerInterface $em
  30.      */
  31.     private $em;
  32.     /**
  33.      * @var MetaTag
  34.      */
  35.     private $metaTag;
  36.     /**
  37.      * @var DroitsAccesManagers
  38.      */
  39.     private $dm;
  40.     
  41.     /**
  42.      * @param ValorisationsManagers $vm
  43.      */
  44.     public function __construct(ValorisationsManagers $vmEntityManagerInterface $emMetaTag $metaTagTranslationExtension $translationExtensionDroitsAccesManagers $dm) {
  45.         $this->vm $vm;
  46.         $this->em $em;
  47.         $this->metaTag $metaTag;
  48.         $this->translationExtension $translationExtension;
  49.         $this->dm $dm;
  50.     }
  51.     
  52.     public function index(Request $requestSecteursActiviteManagers $secteursActiviteManagerPaginatorInterface $paginator$codePays) {
  53.         $lang $request->getSession()->get('lang');
  54.         $parametres $request->query->all();
  55.         
  56.         $secteurs_activite1 $secteursActiviteManager->donne_option_select_secteurs_activite_niveau_1();
  57.         
  58.         if (isset($parametres['id_secteur_activite']) && $parametres['id_secteur_activite']) {
  59.             $secteurs_activite2 $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite']);
  60.             $show_secteur_niveau_2 true;
  61.         } else {
  62.             $secteurs_activite2 = [];
  63.             $show_secteur_niveau_2 false;
  64.         }
  65.         
  66.         if (isset($parametres['id_secteur_activite2']) && $parametres['id_secteur_activite2']) {
  67.             $secteurs_activite3 $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite2']);
  68.             $show_secteur_niveau_3 true;
  69.         } else {
  70.             $secteurs_activite3 = [];
  71.             $show_secteur_niveau_3 false;
  72.         }
  73.         
  74.         if (!isset($parametres['ca_min'])) {
  75.             $parametres['ca_min'] = 0;
  76.         }
  77.         
  78.         if (!isset($parametres['ca_max'])) {
  79.             $parametres['ca_max'] = 11000000;
  80.         }
  81.         
  82.         if (!isset($parametres['date_min'])) {
  83.             $parametres['date_min'] = date('Y') - 11;
  84.         }
  85.         
  86.         if (!isset($parametres['date_max'])) {
  87.             $parametres['date_max'] = date('Y');
  88.         }
  89.         
  90.         $formFactory Forms::createFormFactoryBuilder()->getFormFactory();
  91.         $form $formFactory->createNamedBuilder('')
  92.         ->add('ca'TextType::class, [
  93.             'required' => false
  94.         ])
  95.         ->add('date'TextType::class, [
  96.             'required' => false
  97.         ])
  98.         ->add('id_secteur_activite'ChoiceType::class, [
  99.             'choices' => $secteurs_activite1,
  100.             'data' => isset($parametres['id_secteur_activite']) ? $parametres['id_secteur_activite'] : null,
  101.         ])
  102.         ->add('id_secteur_activite2'ChoiceType::class, [
  103.             'choices' => $secteurs_activite2,
  104.             'data' => isset($parametres['id_secteur_activite2']) ? $parametres['id_secteur_activite2'] : null,
  105.         ])
  106.         ->add('id_secteur_activite3'ChoiceType::class, [
  107.             'choices' => $secteurs_activite3,
  108.             'data' => isset($parametres['id_secteur_activite3']) ? $parametres['id_secteur_activite3'] : null,
  109.         ])
  110.         ->add('reference_mots_cles'TextType::class, [
  111.             'attr' => array(
  112.                 'placeholder' => $this->translationExtension->translate("ex. transport, métalurgie ..."$lang'''M''')
  113.             ),
  114.             'data' => isset($parametres['reference_mots_cles']) ? $parametres['reference_mots_cles'] : null,
  115.             'required' => false
  116.         ])
  117.         ->add('rechercher'SubmitType::class)
  118.         ->setAction($this->generateUrl('base_valorisations_index', ['codePays' => $codePays]))
  119.         ->setMethod('GET')
  120.         ->getForm();
  121.         
  122.         $valorisations $this->vm->getValorisationsList($request$paginator$parametres);
  123.         
  124.         $tri $request->query->get('tri');
  125.         
  126.         return $this->render('base_valorisations/index.html.twig', [
  127.             'form' => $form->createView(),
  128.             'valorisations' => $valorisations,
  129.             'tri' => $tri,
  130.             'show_secteur_niveau_2' => $show_secteur_niveau_2,
  131.             'show_secteur_niveau_3' => $show_secteur_niveau_3,
  132.             'parametres' => $parametres
  133.         ]);
  134.     }
  135.     
  136.     public function specimen(Request $requestTranslationExtension $translationExtension) {
  137.         $lang $request->getSession()->get('lang');
  138.         $valorisation $this->em->getRepository(Valorisations::class)->findOneBy(['id_valorisation' => 29]); // ID 29 => SPECIMEN
  139.         
  140.         $titre_ariane $valorisation->_get('titre_valorisation') . " (CR" $valorisation->_get('id_valorisation') . ")";
  141.         
  142.         $hasCommande true;
  143.         $isNoLongerAvailable false;
  144.         
  145.         $arrayVarsTrans['titre_valorisation'] = $valorisation->_get('titre_valorisation');
  146.         $metaTitle "compte rendu d'opération - ".'%$titre_valorisation%$';
  147.         $metaDescription "consultez ce compte rendu d'opération - " .'%$titre_valorisation%$';
  148.         
  149.         $metaTag $this->metaTag
  150.         ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  151.         ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  152.         
  153.         return $this->render('base_valorisations/detail_valorisation.html.twig', [
  154.             'metaTag' => $metaTag,
  155.             'titre_ariane' => $titre_ariane,
  156.             'valorisation' => $valorisation,
  157.             'hasCommande' => $hasCommande,
  158.             'isNoLongerAvailable' => $isNoLongerAvailable
  159.         ]);
  160.     }
  161.     
  162.     public function detailvalorisation(Request $requestTranslationExtension $translationExtensionCommandesValorisationsRepository $cvrCommandesRepository $cr$idValorisation) {
  163.         $lang $request->getSession()->get('lang');
  164.         $valorisation $this->em->getRepository(Valorisations::class)->findOneBy(['id_valorisation' => $idValorisation]);
  165.         
  166.         if (!$valorisation) {
  167.             $this->addFlash('error'$translationExtension->translate('valorisation introuvable'$lang'''M'''));
  168.             
  169.             // On récupère l'URL de la page précédente
  170.             $referer $request->headers->get('referer');
  171.             
  172.             if ($referer) {
  173.                 return new RedirectResponse($referer);
  174.             } else {
  175.                 return $this->redirectToRoute("index");
  176.             }
  177.         }
  178.         
  179.         $hasCommande false;
  180.         $lignePanier false;
  181.         $hasServiceCRO false;
  182.         $hasForfait false;
  183.         $isNoLongerAvailable false;
  184.         $forfaitAUtiliser false;
  185.         $isFE false;
  186.         
  187.         $titre_ariane $valorisation->_get('titre_valorisation') . " (CR" $valorisation->_get('id_valorisation') . ")";
  188.         
  189.         $user $this->getUser();
  190.         
  191.         // On regarde si l'utilisateur est FE
  192.         $forfait = ($user)? $this->dm->getFrofaitAnnonceToUse($user):null;
  193.         if ($forfait && substr($forfait['code_service'], 06) == "abo_fe") {
  194.             $isFE true;
  195.         }
  196.         
  197.         if ($user) {
  198.             // On regarde si cette valorisation a été commandée dans l'ancienne table commandes_valorisations
  199.             $commandeValorisation $cvr->getUserCommandeValorisation($user->_get('id_utilisateur'), $idValorisation);
  200.             // On regarde ensuite si elle a été commandée dans la nouvelle table commandes
  201.             $commande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idValorisation,"valorisation");
  202.             
  203.             $hasCommande = ($commandeValorisation || $commande);
  204.             
  205.             $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  206.                 ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_CRO'"id_object" => $idValorisation]
  207.             );
  208.             
  209.             $forfaitAUtiliser $this->dm->getForfaitHorsFEAnnonceToUse($user);
  210.             if (!empty($forfaitAUtiliser)) {
  211.                 $hasForfait true;
  212.             }
  213.         }
  214.         
  215.         if ($valorisation->_get('mode') != "publique") {
  216.             // Si le CRO a été commandé, mais qu'il n'est plus publique
  217.             if ($hasCommande) {
  218.                 $isNoLongerAvailable true;
  219.             } else {
  220.                 $this->addFlash('error'$translationExtension->translate('valorisation introuvable'$lang'''M'''));
  221.                 
  222.                 // On récupère l'URL de la page précédente
  223.                 $referer $request->headers->get('referer');
  224.                 
  225.                 if ($referer) {
  226.                     return new RedirectResponse($referer);
  227.                 } else {
  228.                     return $this->redirectToRoute("index");
  229.                 }
  230.             }
  231.         }
  232.         
  233.         $arrayVarsTrans['titre_valorisation'] = $valorisation->_get('titre_valorisation');
  234.         $metaTitle "compte rendu d'opération - ".'%$titre_valorisation%$';
  235.         $metaDescription "consultez ce compte rendu d'opération - " .'%$titre_valorisation%$';
  236.         
  237.         $metaTag $this->metaTag
  238.         ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  239.         ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  240.         
  241.         return $this->render('base_valorisations/detail_valorisation.html.twig', [
  242.             'metaTag' => $metaTag,
  243.             'user' => $user,
  244.             'titre_ariane' => $titre_ariane,
  245.             'valorisation' => $valorisation,
  246.             'hasCommande' => $hasCommande,
  247.             'lignePanier' => $lignePanier,
  248.             'hasServiceCRO' => $hasServiceCRO,
  249.             'hasForfait' => $hasForfait,
  250.             'forfaitAUtiliser'=>$forfaitAUtiliser,
  251.             'isNoLongerAvailable' => $isNoLongerAvailable,
  252.             'isFE' => $isFE
  253.         ]);
  254.     }
  255. }