<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; //A voir
use App\Entity\Actualite;
use Symfony\Component\HttpFoundation\JsonResponse;//A voir
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;//A voir
use Symfony\Contracts\Translation\TranslatorInterface;
use App\Repository\ATBGRepository;
use App\Repository\AbbreviationLangueRepository;
use App\Repository\AbbreviationRepository;
use App\Repository\ActualiteRepository;
use App\Repository\AntibiotiqueRepository;
use App\Repository\CasCliniquesCategorieRepository;
use App\Repository\CasCliniquesQuestionRepository;
use App\Repository\CasCliniquesReponseRepository;
use App\Repository\CasCliniquesReponseUtilisateurRepository;
use App\Repository\CelluleRepository;
use App\Repository\CelluleTitreCompletRepository;
use App\Repository\CoAntibiotiqueCalculRepository;
use App\Repository\ContenuRepository;
use App\Repository\EtablissementRepository;
use App\Repository\FamilleAntibiotiqueRepository;
use App\Repository\FavorisRepository;
use App\Repository\InformationHopitalRepository;
use App\Repository\InformationReferenceRepository;
use App\Repository\InformationRepository;
use App\Repository\IntervenantSessioneppRepository;
use App\Repository\LangueRepository;
use App\Repository\MicroorganismeRepository;
use App\Repository\NoteRepository;
use App\Repository\ParametreRepository;
use App\Repository\PaysRepository;
use App\Repository\PersonnalisationRepository;
use App\Repository\PersonnalisationSpectreRepository;
use App\Repository\QualiteRepository;
use App\Repository\ReferenceHopitalRepository;
use App\Repository\ReferenceRepository;
use App\Repository\SessioneppRepository;
use App\Repository\SessioneppUrlRepository;
use App\Repository\SpecialiteRepository;
use App\Repository\SpectreRepository;
use App\Repository\TicketPatientRepository;
use App\Repository\TypeInformationRepository;
use App\Repository\UtilisateurRepository;
use App\Repository\VersionRepository;
use App\Service\StatistiquesService;
use Symfony\Component\HttpFoundation\Request;
use App\Service\ContentHandler;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
class ActualitesController extends ATBGController
{
public function __construct(
private AbbreviationLangueRepository $abbreviationLangueRepo,
private AbbreviationRepository $abbreviationRepo,
private ActualiteRepository $actualiteRepo,
private AntibiotiqueRepository $antibiotiqueRepo,
private CasCliniquesCategorieRepository $casCliniquesCategorieRepo,
private CasCliniquesQuestionRepository $casCliniquesQuestionRepo,
private CasCliniquesReponseRepository $casCliniquesReponseRepo,
private CasCliniquesReponseUtilisateurRepository $casCliniquesReponseUtilisateurRepo,
private CelluleRepository $celluleRepo,
private CelluleTitreCompletRepository $celluleTitreCompletRepo,
private CoAntibiotiqueCalculRepository $coAntibiotiqueCalculRepo,
private ContenuRepository $contenuRepo,
private EtablissementRepository $etablissementRepo,
private FamilleAntibiotiqueRepository $familleAntibiotiqueRepository,
private FavorisRepository $favorisRepo,
private InformationHopitalRepository $informationHopitalRepo,
private InformationReferenceRepository $informationReferenceRepo,
private InformationRepository $informationRepo,
private IntervenantSessioneppRepository $intervenantSessioneppRepo,
private LangueRepository $langueRepo,
private MicroorganismeRepository $microorganismeRepo,
private NoteRepository $noteRepo,
private ParametreRepository $parametreRepo,
private PaysRepository $paysRepo,
private PersonnalisationRepository $personnalisationRepo,
private PersonnalisationSpectreRepository $personnalisationSpectreRepo,
private QualiteRepository $qualiteRepo,
private ReferenceHopitalRepository $referenceHopitalRepo,
private ReferenceRepository $referenceRepo,
private SessioneppRepository $sessioneppRepo,
private SessioneppUrlRepository $sessioneppUrlRepo,
private SpecialiteRepository $specialiteRepo,
private SpectreRepository $spectreRepo,
private TicketPatientRepository $ticketPatientRepo,
private TypeInformationRepository $typeInformationRepo,
private UtilisateurRepository $utilisateurRepo,
private VersionRepository $versionRepo,
private ContentHandler $contentHandler,
private TranslatorInterface $translator
){}
public function index(Request $request)
{
$session = $request->getSession();
$returned = parent::suppression_parametres_get($request);
if ($returned != null)
{
return $returned;
}
return $this->render('Actualites/index.html.twig', array());
}
public function load_actualites_block($page, Request $request)
{
if ($request->isXmlHttpRequest())
{
//$request = $this->get('request_stack');
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$onlyContent = ($page > 0) ? true : false ;
$actualites = $this->actualiteRepo->findFirstActualitesWithNombreActualite($page,$client_id_adada);
// dump($session->get('client_id_adada'));
// dump($page);
// dump($client_id_adada);
//dd($actualites);
$content = $this->render('Actualites/actualites-block.html.twig', array(
'actualites' => $actualites,
'onlyContent' => $onlyContent
));
return new JsonResponse( array (
'content' => $content->getContent(),
'responseCode' => 0,
'contentFinish' => (count($actualites) == 0) ? true : false
));
} else throw $this->createNotFoundException();
}
public function load_infos_block(Request $request)
{
if ($request->isXmlHttpRequest())
{
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0)');
$feed = file_get_contents($this->getParameter('url_info_atbvac')."feed");
$infoatbvac = simplexml_load_string($feed);
$content = $this->render('Actualites/infoatbvac-block.html.twig', array('infoatbvac' => $infoatbvac->channel));
return new JsonResponse( array (
'responseCode' => 0,
'content' => $content->getContent()
));
} else throw $this->createNotFoundException();
}
public function detail(StatistiquesService $statistiquesService, int $id, Request $request)
{
$returned = parent::suppression_parametres_get($request);
if ($returned != null)
{
return $returned;
}
// $request = $this->get('request_stack');
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$actualite = $this->actualiteRepo->findActualiteWithIdActualite($id,$client_id_adada);
if ($actualite == null)
{
return $this->redirect($this->get('router')->generate('actualites_home'));
}
$path = $request->getUri();
$libelle_page = $this->contentHandler->full_title_with_url($path,null,null,null, $request);
$statistiquesService->addStatistique($id,$path,$libelle_page);
return $this->render('Actualites/actualite-detail.html.twig', array('actualite' => $actualite));
}
/**
* Require ROLE_REFERENT only for this action
*
* @IsGranted("ROLE_REFERENT")
*/
public function edit(Request $request, $id, $submit = false)
{
$errors = array();
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
if ($id > 0)
$actualite = $this->actualiteRepo->findActualiteWithIdActualite($id,$client_id_adada);
else
$actualite = new Actualite();
$message = '';
if ($submit)
{
$actualite->setTitreActualite(trim($request->request->get('titreActualite')));
$actualite->setTexteActualite(trim($request->request->get('texteActualite')));
if ($actualite->getDateActualite() == null)
$actualite->setDateActualite(new \DateTime('now'));
if ( $actualite->getTitreActualite() == '')
$errors['titreActualite'] = $this->translator->trans("actualites_titre_obligatoire");
else if (strlen($actualite->getTitreActualite()) > 255)
$errors['titreActualite'] = $this->translator->trans("actualites_titre_max255");
if ($actualite->getTexteActualite() == '')
$errors['texteActualite'] = $this->translator->trans("actualites_texte_obligatoire");
if (count($errors) == 0)
{
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$actualite->setClientIdAdada($client_id_adada);
if ($actualite->getIdActualite() == null)
{
$actualite->setAuteurActualite($session->get('nom_auteur_utilisateur'));
$em->persist($actualite);
}
$em->flush();
$message = $this->translator->trans("actualites_modifications_ok");
}
}
return $this->render('Actualites/form.html.twig', array('actualite' => $actualite, 'errors' => $errors, 'message' => $message));
}
/**
* Require ROLE_REFERENT only for this action
*
* @IsGranted("ROLE_REFERENT")
*/
public function delete($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$session = $request->getSession();
$client_id_adada = $session->get('client_id_adada');
$actualite = $this->actualiteRepo->findActualiteWithIdActualite($id,$client_id_adada);
if ($actualite != null)
{
$em->remove($actualite);
$em->flush();
}
return new JsonResponse( array (
'responseCode' => 0,
'content' => ''
));
}
/**
* Require ROLE_REFERENT only for this action
*
* @IsGranted("ROLE_REFERENT")
*/
public function add(Request $request)
{
return $this->edit($request, 0, false);
}
/**
* Require ROLE_REFERENT only for this action
*
* @IsGranted("ROLE_REFERENT")
*/
public function form($id, Request $request)
{
return $this->edit($request, $id, true);
}
}