<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use App\Entity\Post;
use App\Entity\AncienEvenement;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Form\formulaireEvenementType;
use App\Entity\AttachmentCongre;
use App\Entity\Attachment;
use App\Entity\Carousel;
use App\Entity\Etape;
use App\Entity\Speakers;
use App\Entity\Sponsored;
use App\Entity\Congre;
use App\Entity\PrixVariableCongre;
use App\Entity\PrixVariable;
use App\Entity\PayementMethod;
use App\Entity\PaymenetMethode;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\EvenementAVenir;
use App\Entity\EvenementFormulaire;
use App\Entity\ConnexionUser;
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Component\HttpFoundation\RedirectResponse;
class EvenementController extends AbstractController
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function index(ManagerRegistry $doctrine,$id)
{
$title="";
if($id==1)
{
$ancien = $doctrine->getRepository(Congre::class)->findAll();
$title="Congre";
}
else
if($id==2)
{
$title="formation avec paiment";
$repository= $doctrine->getRepository(EvenementAVenir::class);
$ancien = $repository->findBy(
['category' => $title]
);
}
else if($id==3)
{
$title="webinaire sans paiment";
$repository= $doctrine->getRepository(EvenementAVenir::class);
$ancien = $repository->findBy(
['category' => $title]
);
}
else if($id==4)
{
$title="Symposium avec paiment";
$repository= $doctrine->getRepository(EvenementAVenir::class);
$ancien = $repository->findBy(
['category' => $title]
);
}
else
if($id==5)
{
$title="action humanitaire sans paiment";
$repository= $doctrine->getRepository(EvenementAVenir::class);
$ancien = $repository->findBy(
['category' => $title]
);
}
else
{
return $this->redirectToRoute('index');
}
$repository = $doctrine->getRepository(EvenementAVenir::class);
$article = $repository->findBy(
['id' => 20]
);
$article=$doctrine->getRepository(Congre::class)->findBy(array('desplay'=>1), array('id' => 'desc'),1,0);
$k=1;
if(count($article)<1)
{
$k=0;
$article=$doctrine->getRepository(EvenementAVenir::class)->findBy(array('desplay'=>1), array('id' => 'desc'),1,0);
}
$repository = $doctrine->getRepository(Attachment::class);
$carousel = $repository->findBy(
['evenement_id' => 20]);
// $repository = $doctrine->getRepository(PaymenetMethode::class);
return $this->render('evenement/index.html.twig',['event'=>$article,'ancien'=>$ancien,'carousel'=>$carousel,'title'=>$title,'id'=>$id,'tt'=>$k]);
}
public function detail(ManagerRegistry $doctrine,$id)
{
$autre=0;
$sesisonHas=0;
$session = $this->requestStack->getSession();
$session->set('typesendpaiment',1);
$evenementsprcifique=0;
if($id==49)
{
$evenementsprcifique=$id;
}
if(!$session->has('type') || !$session->has('fonction'))
{
return $this->redirectToRoute('formulaireEvenementCongreTypeDeuxtypeIdCongreFormationPaiment', [
'id' => $id
]);
}
$prix=0;
if($session->get('type')=="Adhérent")
{
$prix=0;
}else
{
$prix=0;
}
if($session->has('email') && $session->has('password'))
{
$sesisonHas=1;
}
$sesisonHas=1;
$tab=[];
$repository = $doctrine->getRepository(PrixVariableCongre::class);
$etape = $repository->findAll();
foreach($etape as $a)
{
if($a->getEvenementprixId()==$id)
{
array_push($tab,['id_evenement'=>$a->getEvenementprixId(),'id_prix'=>$a->getId(),'titre'=>$a->getName(),'category'=>$a->getCategory(),'prix'=>$a->getPrix()]);
}
}
return $this->render('detailEvenement/index.html.twig',['sessionHas'=>$sesisonHas,'tab'=>$tab,'autre'=>$autre,'nb'=>-1,'prix'=>$prix]);
}
public function congre(ManagerRegistry $doctrine,$id)
{
$session = $this->requestStack->getSession();
$session->set('typesendpaiment', "");
$repository = $doctrine->getRepository(Congre::class);
$article = $repository->find($id);
if($article==Null)
{
return $this->redirectToRoute('index');
}
$repository = $doctrine->getRepository(Carousel::class);
$carousel = $repository->findBy(
['carousel_congre_id' => $id]
);
$repository = $doctrine->getRepository(AttachmentCongre::class);
$gallerie = $repository->findBy(
['id' => $article->getId()]
);
$repository = $doctrine->getRepository(Etape::class);
$etape = $repository->findBy(
['etape_new_id' => $article->getId()]
);
$tab=[];
$tab2=[];
$tab3=[];
foreach($etape as $a)
{
//$arr = [ "id" => $bu->getId(), "name" => $bu->getName()];
array_push($tab,['Etape'=>$a->getId(),'posetion'=>$a->getPosetionEtape(),'decription'=>$a->getDescriptionEtape(),'timeN'=>$a->getTimeEtape(),'titre'=>$a->getTitreEtape()]);
$anis=$a->getPosetionEtape();
if (!in_array($anis, $tab2))
{
array_push($tab3,$a->getPosetionEtape());
}
array_push($tab2,$a->getPosetionEtape());
}
$repository = $doctrine->getRepository(Speakers::class);
$speakers = $repository->findBy(
['evenement_speaker_id' => $id]
);
$repository = $doctrine->getRepository(Sponsored::class);
$sponsored = $repository->findBy(
['evenement_sponsored_id' =>$id]
);
$tab5=[];
$repository = $doctrine->getRepository(PrixVariableCongre::class);
$etape = $repository->findAll();
foreach($etape as $a)
{
if($a->getEvenementprixId()==$id)
{
array_push($tab5,['id_evenement'=>$a->getEvenementprixId(),'id_prix'=>$a->getId(),'titre'=>$a->getName(),'category'=>$a->getCategory(),'prix'=>$a->getPrix()]);
}
}
return $this->render('congre/congre.html.twig',['article'=>$article,'gallerie'=>$gallerie,'carousel'=>$carousel,'tab'=>$tab,'tab3'=>$tab3,'speakers'=>$speakers,'sponsored'=>$sponsored,'id'=>$id,'tab5'=>$tab5]);
}
function autre(ManagerRegistry $doctrine,string $title,int $id)
{
//$product = $doctrine->getRepository(Accueil::class)->find(4);
$ancien = $doctrine->getRepository(EvenementAVenir::class)->find($id);
$gallerie = $doctrine->getRepository(Attachment::class);
$carousel = $gallerie->findBy(
['evenement_id' => $ancien->getId()]
);
return $this->render('ancien/index.html.twig',['ancien'=>$ancien,'carousel'=>$carousel]);
}
public function detailautre(ManagerRegistry $doctrine,$id)
{
if($id==51)
{
$session = $this->requestStack->getSession();
if($session->has('email') && $session->has('password'))
{
$repository = $doctrine->getRepository(ConnexionUser::class);
$user = $repository->findOneBy(['email' => $session->get('email')]);
$repository2 = $doctrine->getRepository(EvenementFormulaire::class);
$user2 = $repository2->findBy(['user' => $user->getId(),'evenement'=>51]);
if(count($user2)==0)
{
return new RedirectResponse("/formulaire/evenement/51");
}
}
}
$autre=1;
$sesisonHas=0;
$sesisonHas49=0;
$evenementsprcifique=0;
if($id==49)
{
$evenementsprcifique=$id;
}
$session = $this->requestStack->getSession();
if($session->has('email') && $session->has('password'))
{
$sesisonHas=1;
}
if($session->has('evenementspecifique'))
{
$sesisonHas49=1;
}
$tab=[];
$repository = $doctrine->getRepository(PrixVariable::class);
$etape = $repository->findAll();
foreach($etape as $a)
{
if($a->getEvenementprixId()==$id)
{
array_push($tab,['id_evenement'=>$a->getEvenementprixId(),'id_prix'=>$a->getId(),'titre'=>$a->getName(),'category'=>$a->getCategory(),'prix'=>$a->getPrix()]);
}
}
$nbevenement = $repository->findBy(
['id' => $id]);
$nbevenement=count($nbevenement);
$session->set('typesendpaiment',1);
return $this->render('detailEvenement/index.html.twig',['sessionHas'=>$sesisonHas,'tab'=>$tab,'autre'=>$autre,'nb'=>$nbevenement,'evenementsprcifique'=>$evenementsprcifique,'sesisonHas49'=>$sesisonHas49]);
}
public function getall(ManagerRegistry $doctrine,$id)
{
$ancien=[];
$tab=[];
if($id==2)
{
$ancien = $doctrine->getRepository(EvenementAVenir::class)->findAll();
foreach($ancien as $item)
{
array_push($tab,['id'=>$item->getId(),'titre'=>$item->getTitre()]);
}
}
else
{
$ancien = $doctrine->getRepository(Congre::class)->findAll();
foreach($ancien as $item)
{
array_push($tab,['id'=>$item->getId(),'titre'=>$item->getTitre()]);
}
}
$response = new Response(json_encode($tab));
$response->headers->set('Content-Type', 'application/json');
return $response;
}
public function formulaireEvenement(ManagerRegistry $doctrine,Request $request,int $id)
{
$session = $this->requestStack->getSession();
if(!$session->has('email') || !$session->has('password'))
{
return new RedirectResponse("/evenement/autre/detail/51/register/");
}
$session = $this->requestStack->getSession();
if($session->has('email') && $session->has('password'))
{
$repository = $doctrine->getRepository(ConnexionUser::class);
$user = $repository->findOneBy(['email' => $session->get('email')]);
$repository2 = $doctrine->getRepository(EvenementFormulaire::class);
$user2 = $repository2->findBy(['user' => $user->getId(),'evenement'=>51,'pay'=>true]);
if(count($user2)>0)
{
return new RedirectResponse("/evenement/autre/detail/51/register/");
}
}
$erreur="";
$verif=true;
$messageSuccess="";
$entityManager = $doctrine->getManager();
$article = new EvenementFormulaire();
$form = $this->createForm(formulaireEvenementType::class, $article);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if($article->getType() == "Etudiant")
{
$erreur="C'est exclusif pour les professionnels.";
$verif=false;
}
if(Empty($article->getNom()))
{
$erreur.="Nom invalide <br>";
$verif=false;
}
else if(strlen($article->getNom())<2 || strlen($article->getNom())>30)
{
$erreur.="Nom invalide <br>";
$verif=false;
}
else
{
$verif=true;
}
if(Empty($article->getPrenom()))
{
$erreur.="Prénom invalide <br>";
$verif=false;
}
else if(strlen($article->getPrenom())<2 || strlen($article->getPrenom())>30)
{
$erreur.="Prénom invalide <br>";
$verif=false;
}
/**** verif email */
if(strlen($article->getEmail())<4 || strlen($article->getEmail())>30)
{
$erreur.="Email invalide <br>";
$verif=false;
}
else
{
$verif=true;
}
/***** */
if(Empty($article->getPhone()))
{
$erreur.="Prénom invalide <br>";
$verif=false;
}
else if(strlen($article->getPhone())<7 || strlen($article->getPhone())>11)
{
$erreur.="Numéro de téléphone invalide <br>";
$verif=false;
}
if(strlen($erreur)==0)
{
if($id!=51)
{
$erreur= "Erreur lors de l'inscription";
}else
{
$repository = $doctrine->getRepository(EvenementFormulaire::class);
$p = $repository->findBy(
['phone' => $article->getPhone(),
'evenement'=>51]
);
$repository = $doctrine->getRepository(EvenementFormulaire::class);
$pp = $repository->findBy(
[
'nom' => $article->getNom(),
'prenom' => $article->getPrenom(),
'evenement'=>51
]
);
if(count($p)>0 || count($pp)>0)
{
$erreur.= "Vous êtes déjà inscrit à un événement.";
}
else
{
$repository = $doctrine->getRepository(EvenementFormulaire::class);
$evenements = $repository->findBy(['evenement' => 51]);
$count=0;
if($evenements)
{
$count = count($evenements);
}
if($count>40)
{
$erreur.= "Nous avons dépassé le nombre limite d'inscriptions. Au revoir.";
}
else if($count>32 && $count <= 60 )
{
$article->setEvenement($id);
$entityManager->persist($article);
$entityManager->flush();
$erreur="<center><b>Cher Participant,</b><center> merci pour l'intérêt que vous portez à vous inscrire. Actuellement vous êtes en liste d'attente , nous vous tiendrons informés dès qu'une place se liberera
<br>Merci pour votre intérêt.
";
}
else
{
$repository = $doctrine->getRepository(ConnexionUser::class);
$user = $repository->findOneBy(['email' => $session->get('email')]);
$article->setUser($user->getId());
$article->setEvenement($id);
$article->setPay(1);
$entityManager->persist($article);
$entityManager->flush();
$messageSuccess="Cher Participant, Votre pré-inscription est effectuée avec succès.
Vous avez 5 jours pour effectuer le paiement en ligne et valider votre inscription.
Merci
";
$session->set('message-success', $messageSuccess);
return new RedirectResponse("/formulaire/evenement/51");
}
}
}
/* $entityManager->persist($article);
$entityManager->flush();*/
}
}
return $this->render('formulaireevenement/formulaire.html.twig', array(
'form' => $form->createView(),'erreur'=>$erreur,'message'=>$messageSuccess,'id'=>$id
));
}
public function formulaireEvenementPost()
{
echo "hello";exit();
}
public function formulaireEvenementCongreDeuxType(ManagerRegistry $doctrine,Request $request)
{
$type=$_POST['id'];
if($type==1 || $type==2)
{
$session = $this->requestStack->getSession();
$session->set('typesendpaiment', $type);
}
$erreur="";
$messageSuccess="1";
$err='{"erreur": "'.$erreur.'", "message":"'.$messageSuccess.'"}';
echo $err;exit();
}
public function programme()
{
return $this->redirect('https://programme.astp.tn/login');
}
public function programmePdf($id)
{
if($id=='-18.pdf' || $id=='18-35.pdf' || $id='+35.pdf')
{
return $this->render('document/afficher_pdf.html.twig', array(
'id'=>$id
));
}else {
}
}
}