<?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" || $session->get('type')=="Etudiant") 
        { 
            $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==54) 
        { 
            $session = $this->requestStack->getSession(); 
            if(!$session->has('emailSend')){ return  new RedirectResponse("/formulaire/evenement/54"); } 
            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'=>54]); 
                
                if(count($user2)==0) 
                { 
                    return  new RedirectResponse("/formulaire/evenement/54");  
                } 
               
               
            } 
        } 
       
        $autre=1; 
        $sesisonHas=0; 
        $sesisonHas49=0; 
        $evenementsprcifique=0; 
        if($id==49) 
        { 
            $evenementsprcifique=$id; 
        } 
        if($id==54) 
        { 
            $sesisonHas=1; 
        } 
        $session = $this->requestStack->getSession(); 
        $prix=0; 
        if($session->has('type')) 
        { 
            if($session->get('type')=="Non adhérent")$prix=0; 
            $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()]); 
           /* if($session->get('type')=="Non adhérent") 
            { 
                if($a->getId()==36) 
                { 
                    $tab=[]; 
                                array_push($tab,['id_evenement'=>$a->getEvenementprixId(),'id_prix'=>$a->getId(),'titre'=>$a->getName(),'category'=>$a->getCategory(),'prix'=>$a->getPrix()]); 
                    break; 
                } 
               
            }else  
            { 
                if($a->getId()==35) 
                { 
                                        $tab=[]; 
                                         array_push($tab,['id_evenement'=>$a->getEvenementprixId(),'id_prix'=>$a->getId(),'titre'=>$a->getName(),'category'=>$a->getCategory(),'prix'=>$a->getPrix()]); 
 break; 
 
                } 
                
            }*/ 
          
        } 
        
          
    } 
 
       $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,'prix'=>$prix]); 
    } 
    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(); 
             
 
           
                $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'=>52,'pay'=>true]); 
                      
                    if(count($user2)>0) 
                    { 
                        return  new RedirectResponse("/evenement/autre/detail/52/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!=54) 
                    { 
                        $erreur= "Erreur lors de l'inscription"; 
                    }else 
                    { 
                        $repository = $doctrine->getRepository(EvenementFormulaire::class); 
                        $p = $repository->findBy( 
                          ['phone' => $article->getPhone(), 
                          'evenement'=>54]   
                  ); 
                  $repository = $doctrine->getRepository(EvenementFormulaire::class); 
                 
                  $pp = $repository->findBy( 
                    [ 
                        'nom' => $article->getNom(), 
                        'prenom' => $article->getPrenom(), 
                        'evenement'=>54 
                         
                    ] 
                ); 
                        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' => 54]); 
                            $count=0; 
                           
                            
                            
                                $repository = $doctrine->getRepository(ConnexionUser::class); 
                                $user = $repository->findOneBy(['email' => $session->get('email')]); 
                                     
                                 
                              
                                $session = $this->requestStack->getSession(); 
                                $session->set('emailSend',$article->getEmail()); 
                                $session->set('fonction',$article->getFonction()); 
                                $session->set('type',$article->getType()); 
                                $session->set('nom',$article->getNom()); 
                                $session->set('prenom',$article->getPrenom()); 
                                $session->set('phone',$article->getPhone()); 
                       
                                return  new RedirectResponse("/evenement/autre/detail/54/register/");  
                               
                             
                          
             
                        } 
                    } 
                 
                 /* $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 { 
 
            } 
    } 
   
}