<?php
namespace App\Controller;
use App\Services\ManagerEntity\ValorisationsManagers;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Valorisations;
use App\Twig\TranslationExtension;
use App\Repository\CommandesValorisationsRepository;
use App\Repository\CommandesRepository;
use App\Services\MetaTag;
use App\Entity\Panier;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Forms;
use App\Services\ManagerEntity\SecteursActiviteManagers;
use App\Services\ManagerEntity\DroitsAccesManagers;
class BaseValorisationsController extends EntityUsingController {
/*
* @var ValorisationsManagers $vm
*/
private $vm;
/*
* @var EntityManagerInterface $em
*/
private $em;
/**
* @var MetaTag
*/
private $metaTag;
/**
* @var DroitsAccesManagers
*/
private $dm;
/**
* @param ValorisationsManagers $vm
*/
public function __construct(ValorisationsManagers $vm, EntityManagerInterface $em, MetaTag $metaTag, TranslationExtension $translationExtension, DroitsAccesManagers $dm) {
$this->vm = $vm;
$this->em = $em;
$this->metaTag = $metaTag;
$this->translationExtension = $translationExtension;
$this->dm = $dm;
}
public function index(Request $request, SecteursActiviteManagers $secteursActiviteManager, PaginatorInterface $paginator, $codePays) {
$lang = $request->getSession()->get('lang');
$parametres = $request->query->all();
$secteurs_activite1 = $secteursActiviteManager->donne_option_select_secteurs_activite_niveau_1();
if (isset($parametres['id_secteur_activite']) && $parametres['id_secteur_activite']) {
$secteurs_activite2 = $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite']);
$show_secteur_niveau_2 = true;
} else {
$secteurs_activite2 = [];
$show_secteur_niveau_2 = false;
}
if (isset($parametres['id_secteur_activite2']) && $parametres['id_secteur_activite2']) {
$secteurs_activite3 = $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite2']);
$show_secteur_niveau_3 = true;
} else {
$secteurs_activite3 = [];
$show_secteur_niveau_3 = false;
}
if (!isset($parametres['ca_min'])) {
$parametres['ca_min'] = 0;
}
if (!isset($parametres['ca_max'])) {
$parametres['ca_max'] = 11000000;
}
if (!isset($parametres['date_min'])) {
$parametres['date_min'] = date('Y') - 11;
}
if (!isset($parametres['date_max'])) {
$parametres['date_max'] = date('Y');
}
$formFactory = Forms::createFormFactoryBuilder()->getFormFactory();
$form = $formFactory->createNamedBuilder('')
->add('ca', TextType::class, [
'required' => false
])
->add('date', TextType::class, [
'required' => false
])
->add('id_secteur_activite', ChoiceType::class, [
'choices' => $secteurs_activite1,
'data' => isset($parametres['id_secteur_activite']) ? $parametres['id_secteur_activite'] : null,
])
->add('id_secteur_activite2', ChoiceType::class, [
'choices' => $secteurs_activite2,
'data' => isset($parametres['id_secteur_activite2']) ? $parametres['id_secteur_activite2'] : null,
])
->add('id_secteur_activite3', ChoiceType::class, [
'choices' => $secteurs_activite3,
'data' => isset($parametres['id_secteur_activite3']) ? $parametres['id_secteur_activite3'] : null,
])
->add('reference_mots_cles', TextType::class, [
'attr' => array(
'placeholder' => $this->translationExtension->translate("ex. transport, métalurgie ...", $lang, '', 'M', '')
),
'data' => isset($parametres['reference_mots_cles']) ? $parametres['reference_mots_cles'] : null,
'required' => false
])
->add('rechercher', SubmitType::class)
->setAction($this->generateUrl('base_valorisations_index', ['codePays' => $codePays]))
->setMethod('GET')
->getForm();
$valorisations = $this->vm->getValorisationsList($request, $paginator, $parametres);
$tri = $request->query->get('tri');
return $this->render('base_valorisations/index.html.twig', [
'form' => $form->createView(),
'valorisations' => $valorisations,
'tri' => $tri,
'show_secteur_niveau_2' => $show_secteur_niveau_2,
'show_secteur_niveau_3' => $show_secteur_niveau_3,
'parametres' => $parametres
]);
}
public function specimen(Request $request, TranslationExtension $translationExtension) {
$lang = $request->getSession()->get('lang');
$valorisation = $this->em->getRepository(Valorisations::class)->findOneBy(['id_valorisation' => 29]); // ID 29 => SPECIMEN
$titre_ariane = $valorisation->_get('titre_valorisation') . " (CR" . $valorisation->_get('id_valorisation') . ")";
$hasCommande = true;
$isNoLongerAvailable = false;
$arrayVarsTrans['titre_valorisation'] = $valorisation->_get('titre_valorisation');
$metaTitle = "compte rendu d'opération - ".'%$titre_valorisation%$';
$metaDescription = "consultez ce compte rendu d'opération - " .'%$titre_valorisation%$';
$metaTag = $this->metaTag
->setTitle($translationExtension->translate($metaTitle, $lang, "", "M", "", $arrayVarsTrans))
->setDescription($translationExtension->translate($metaDescription, $lang, "", "M", "", $arrayVarsTrans));
return $this->render('base_valorisations/detail_valorisation.html.twig', [
'metaTag' => $metaTag,
'titre_ariane' => $titre_ariane,
'valorisation' => $valorisation,
'hasCommande' => $hasCommande,
'isNoLongerAvailable' => $isNoLongerAvailable
]);
}
public function detailvalorisation(Request $request, TranslationExtension $translationExtension, CommandesValorisationsRepository $cvr, CommandesRepository $cr, $idValorisation) {
$lang = $request->getSession()->get('lang');
$valorisation = $this->em->getRepository(Valorisations::class)->findOneBy(['id_valorisation' => $idValorisation]);
if (!$valorisation) {
$this->addFlash('error', $translationExtension->translate('valorisation introuvable', $lang, '', 'M', ''));
// On récupère l'URL de la page précédente
$referer = $request->headers->get('referer');
if ($referer) {
return new RedirectResponse($referer);
} else {
return $this->redirectToRoute("index");
}
}
$hasCommande = false;
$lignePanier = false;
$hasServiceCRO = false;
$hasForfait = false;
$isNoLongerAvailable = false;
$forfaitAUtiliser = false;
$isFE = false;
$titre_ariane = $valorisation->_get('titre_valorisation') . " (CR" . $valorisation->_get('id_valorisation') . ")";
$user = $this->getUser();
// On regarde si l'utilisateur est FE
$forfait = ($user)? $this->dm->getFrofaitAnnonceToUse($user):null;
if ($forfait && substr($forfait['code_service'], 0, 6) == "abo_fe") {
$isFE = true;
}
if ($user) {
// On regarde si cette valorisation a été commandée dans l'ancienne table commandes_valorisations
$commandeValorisation = $cvr->getUserCommandeValorisation($user->_get('id_utilisateur'), $idValorisation);
// On regarde ensuite si elle a été commandée dans la nouvelle table commandes
$commande = $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idValorisation,"valorisation");
$hasCommande = ($commandeValorisation || $commande);
$lignePanier = $this->em->getRepository(Panier::class)->findOneBy(
['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_CRO', "id_object" => $idValorisation]
);
$forfaitAUtiliser = $this->dm->getForfaitHorsFEAnnonceToUse($user);
if (!empty($forfaitAUtiliser)) {
$hasForfait = true;
}
}
if ($valorisation->_get('mode') != "publique") {
// Si le CRO a été commandé, mais qu'il n'est plus publique
if ($hasCommande) {
$isNoLongerAvailable = true;
} else {
$this->addFlash('error', $translationExtension->translate('valorisation introuvable', $lang, '', 'M', ''));
// On récupère l'URL de la page précédente
$referer = $request->headers->get('referer');
if ($referer) {
return new RedirectResponse($referer);
} else {
return $this->redirectToRoute("index");
}
}
}
$arrayVarsTrans['titre_valorisation'] = $valorisation->_get('titre_valorisation');
$metaTitle = "compte rendu d'opération - ".'%$titre_valorisation%$';
$metaDescription = "consultez ce compte rendu d'opération - " .'%$titre_valorisation%$';
$metaTag = $this->metaTag
->setTitle($translationExtension->translate($metaTitle, $lang, "", "M", "", $arrayVarsTrans))
->setDescription($translationExtension->translate($metaDescription, $lang, "", "M", "", $arrayVarsTrans));
return $this->render('base_valorisations/detail_valorisation.html.twig', [
'metaTag' => $metaTag,
'user' => $user,
'titre_ariane' => $titre_ariane,
'valorisation' => $valorisation,
'hasCommande' => $hasCommande,
'lignePanier' => $lignePanier,
'hasServiceCRO' => $hasServiceCRO,
'hasForfait' => $hasForfait,
'forfaitAUtiliser'=>$forfaitAUtiliser,
'isNoLongerAvailable' => $isNoLongerAvailable,
'isFE' => $isFE
]);
}
}