src/Controller/PaimentController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. use App\Entity\PayementMethod;
  9. use App\Entity\Congre;
  10. use App\Entity\ConnexionUser;
  11. use App\Entity\PrixVariableCongre;
  12. use App\Entity\PrixVariable;
  13. use Symfony\Component\Validator\Constraints\DateTime;
  14. use App\Entity\EvenementAVenir;
  15. use App\Entity\EvenementFormulaire;
  16. use App\Form\formulaireEvenementType;
  17. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  18. use Symfony\Component\String\Slugger\SluggerInterface;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\RedirectResponse;
  21. class PaimentController extends AbstractController
  22. {
  23.   private $requestStack;
  24.   public function __construct(RequestStack $requestStack)
  25.   {
  26.       $this->requestStack $requestStack;
  27.   }
  28.   public function addmail(Request $request): Response
  29.   {
  30.     $email $request->request->get('email');
  31.     $session $this->requestStack->getSession();
  32.     $session->set('accompanientSend',$email);
  33.     return new Response("nom" $email);
  34.   }
  35.   public function virrementbancaireSend(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supSluggerInterface $slugger)
  36.   {
  37.    
  38.     $file $request->files->get('receipt'); // Récupère le fichier du formulaire
  39. $ret="";
  40. $success="";
  41. $session $this->requestStack->getSession();
  42. $repository $doctrine->getRepository(PrixVariableCongre::class);
  43. $p $repository->findBy(
  44.   ['id' => $idprix]
  45. );
  46. $prix=0;
  47.     if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  48.     {
  49.         $prix=0;
  50.     }else 
  51.     {
  52.         $prix=0;
  53.     }
  54.     if($prix==0)
  55.     {
  56.       $prix $p[0]->getPrix();
  57.     }else 
  58.     {
  59.       $prix $p[0]->getPrix()+0;
  60.     }
  61.     $prix+=$sup;
  62.     if ($file) {
  63.       $allowedExtensions = ['png''jpg''jpeg''pdf'];
  64.         $fileExtension $file->guessExtension();
  65.         if (!in_array($fileExtension$allowedExtensions)) {
  66.           $ret"Extension non autorisée. Seuls les fichiers PNG, JPG, JPEG et PDF sont acceptés.";
  67.           return $this->render('paiment/virement.html.twig',['prix'=>$prix,'id'=>$id,'idprix'=>$idprix,'ret'=>$ret,'success'=>$success]);
  68.       }
  69.       $maxFileSize 2097152// 2 Mo en octets
  70.       if ($file->getSize() > $maxFileSize) {
  71.           $ret"La taille du fichier ne doit pas dépasser 2 Mo.";
  72.           return $this->render('paiment/virement.html.twig',['prix'=>$prix,'id'=>$id,'idprix'=>$idprix,'ret'=>$ret,'success'=>$success]);
  73.       }
  74.         $originalFilename pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
  75.         $safeFilename $slugger->slug($originalFilename);
  76.         $newFilename $safeFilename.'-'.uniqid().'.'.$file->guessExtension();
  77.         $em $this->getDoctrine()->getManager();
  78.         $lastOrder $em->getRepository(PayementMethod::class)
  79.         ->createQueryBuilder('o')
  80.         ->orderBy('o.id''DESC'
  81.         ->setMaxResults(1
  82.         ->getQuery()
  83.         ->getOneOrNullResult(); 
  84.        $lastOrder=$lastOrder->getOrdernumber();
  85.        $PayementMethod = new PayementMethod();
  86.        $PayementMethod->setOrderNumber($lastOrder+1);
  87.        if($session->has('accompanientSend'))
  88.        {
  89.             $PayementMethod->setAccomp($session->get('accompanientSend'));
  90.        }
  91.        $PayementMethod->setNom($session->get('nom'));
  92.        $PayementMethod->setEmail($session->get('emailSend'));
  93.        $PayementMethod->setPrenom($session->get('prenom'));
  94.        $repository $doctrine->getRepository(Congre::class);
  95.        $congrevide $repository->find($id);
  96.        $PayementMethod->setEvenementId($congrevide);
  97.        $PayementMethod->setPai(0);
  98.        $PayementMethod->setUrl("0");
  99.        $PayementMethod->setSupp($sup);
  100.        $PayementMethod->setMontant(($prix));
  101.        $PayementMethod->setPhone($session->get('phone'));
  102.        $PayementMethod->setTotal(($prix));
  103.        $PayementMethod->setFile($newFilename);
  104.        $em->persist($PayementMethod);
  105.        $em->flush();
  106.         try {
  107.             $file->move(
  108.                 $this->getParameter('receipts_directory'),
  109.                 $newFilename
  110.             );
  111.              $success"Votre inscription  a été  effectuée  avec succès 
  112. Merci pour votre confiance
  113. ";
  114.         } catch (FileException $e) {
  115.              $ret.= "Erreur lors de l'upload : ".$e->getMessage();
  116.         }
  117.     } else {
  118.         $ret.= "Aucun fichier n'a été téléchargé.";
  119.     }
  120.     return $this->render('paiment/virement.html.twig',['prix'=>$prix,'id'=>$id,'idprix'=>$idprix,'ret'=>$ret,'success'=>$success]);
  121.       
  122.   }
  123.   public function virrementbancaire(ManagerRegistry $doctrine,Request $request,$id,$idprix,$sup)
  124.   {
  125.    
  126.     $session $this->requestStack->getSession();
  127.     $repository $doctrine->getRepository(PrixVariableCongre::class);
  128.     $p $repository->findBy(
  129.       ['id' => $idprix]
  130. );
  131. $prix=0;
  132.         if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  133.         {
  134.             $prix=0;
  135.         }else 
  136.         {
  137.             $prix=0;
  138.         }
  139.         if($prix==0)
  140.         {
  141.           $prix $p[0]->getPrix();
  142.         }else 
  143.         {
  144.           $prix $p[0]->getPrix()+0;
  145.         }
  146.         if($sup>0)$prix+=$sup;
  147.     return $this->render('paiment/virement.html.twig',['prix'=>$prix,'id'=>$id,'idprix'=>$idprix,'sup'=>$sup]);
  148.   }
  149.   public function formulaire(ManagerRegistry $doctrine,Request $request,$id)
  150.   {
  151.  
  152.     /*if($idprix != 79 && $idprix != 80 && $idprix != 81 && $idprix != 82)
  153.     {
  154.       echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  155.       exit();
  156.     }*/
  157.     if($id!=22)
  158.     {
  159.       echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  160.       exit();
  161.     }
  162.    
  163.   
  164.        
  165.      
  166. $erreur="";
  167. $verif=true;
  168. $messageSuccess="";
  169. $entityManager $doctrine->getManager();
  170. $article = new EvenementFormulaire();
  171. $form $this->createForm(formulaireEvenementType::class, $article);
  172. $form->handleRequest($request);
  173.         if ($form->isSubmitted() && $form->isValid()) {
  174.           if($article->getFonction() == "Etudiant")
  175.           {
  176.             $article->setType("Adhérent");
  177.           }
  178.         if(Empty($article->getNom()))
  179.         {
  180.         $erreur.="Nom invalide <br>";
  181.         $verif=false;
  182.         }
  183.         else if(strlen($article->getNom())<|| strlen($article->getNom())>30)
  184.         {
  185.             $erreur.="Nom invalide <br>";
  186.             $verif=false;
  187.         }
  188.         else
  189.         {
  190.             $verif=true;
  191.         }
  192.         if(Empty($article->getPrenom()))
  193.         {
  194.         $erreur.="Prénom invalide <br>";
  195.         $verif=false;
  196.         }
  197.         else if(strlen($article->getPrenom())<|| strlen($article->getPrenom())>30)
  198.         {
  199.             $erreur.="Prénom invalide <br>";
  200.             $verif=false;
  201.         }
  202.         /**** verif email */
  203.         if(strlen($article->getEmail())<|| strlen($article->getEmail())>30)
  204.         {
  205.             $erreur.="Email invalide <br>";
  206.             $verif=false;
  207.         }
  208.         else
  209.         {
  210.             $verif=true;
  211.         }
  212.         /***** */
  213.         if(Empty($article->getPhone()))
  214.         {
  215.         $erreur.="Numéro de téléphone invalide <br>";
  216.         $verif=false;
  217.         }
  218.         else if(strlen($article->getPhone())<|| strlen($article->getPhone())>11)
  219.         {
  220.             $erreur.="Numéro de téléphone invalide <br>";
  221.             $verif=false;
  222.         }
  223.         if(strlen($erreur)==0)
  224.         {
  225.             if($id!=22)
  226.             {
  227.                 $erreur"Erreur lors de l'inscription";
  228.             }else
  229.             {
  230.               $session $this->requestStack->getSession();
  231.               $session->set('emailSend',$article->getEmail());
  232.               $session->set('fonction',$article->getFonction());
  233.               $session->set('type',$article->getType());
  234.               $session->set('nom',$article->getNom());
  235.               $session->set('prenom',$article->getPrenom());
  236.               $session->set('phone',$article->getPhone());
  237.               return $this->redirectToRoute('evenementDetail', [
  238.                 'id' => $id
  239.                
  240.             ]);
  241.                 
  242.             }
  243.           }
  244.         
  245.          /* $entityManager->persist($article);
  246.           $entityManager->flush();*/
  247.         }
  248.         
  249.     return $this->render('formulaires/indexcongre.html.twig',['form' => $form->createView(),'erreur'=>$erreur,'message'=>$messageSuccess,'id'=>$id]);
  250.    
  251.   }
  252.   public function adherent(ManagerRegistry $doctrine)
  253. {
  254.   $session $this->requestStack->getSession();
  255.   $repository $doctrine->getRepository(ConnexionUser::class);
  256.   if(!$session->has('email'))
  257.   {
  258.     echo "merci de retour a la page accueil <a href='/'>accueil</a>";
  259.     exit();
  260.   }
  261.      $px $repository->findBy(['email' => $session->get('email')]);
  262.      if(count($px)>0)
  263.       {
  264.         $repository2 $doctrine->getRepository(PayementMethod::class);
  265.         $pxxc $repository2->findBy(['email' => $session->get('email'),'url'=>'123456789']);
  266.               if(count($pxxc)>0)
  267.               {
  268.                 echo "Vous êtes déjà adhérent : " $session->get('email');
  269.                 exit();
  270.                }
  271.         $em $doctrine->getManager();
  272.         $order_number $em->createQueryBuilder()
  273.       ->select('MAX(e.orderNumber)')
  274.       ->from('App\Entity\PayementMethod''e')
  275.       ->getQuery()
  276.       ->getSingleScalarResult();
  277.       $prix=0;
  278.       $total=$prix;
  279.         $session->set('adherent_paiment'true);
  280.         $url='https://ipay.clictopay.com/payment/rest/register.do?amount='.($total*1000).'&currency=788&language=en&orderNumber='.$order_number.'&password=I7Vh2o1e&returnUrl=https://astp.tn/retour-paiment/&userName=0799902085';
  281.         $ch curl_init();  
  282.         curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  283.         curl_setopt($chCURLOPT_URL$url); 
  284.         curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  285.         $result curl_exec($ch); 
  286.         $PayementMethod = new PayementMethod();
  287.         $PayementMethod->setOrderNumber($order_number+1);
  288.        
  289.         $PayementMethod->setMontant(($prix));
  290.     
  291.         $PayementMethod->setTotal(($total));
  292.    
  293.         
  294.         $ddate=date("Y-m-d h:i:s");
  295.         $PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  296.         $PayementMethod->setPai(0);
  297.         $PayementMethod->setIdUser($px[0]);
  298.         $em->persist($PayementMethod);
  299.         $em->flush();
  300.         $result=json_decode($result);
  301.               
  302.         $idorder_number $em->createQueryBuilder()
  303.         ->select('MAX(e.id)')
  304.         ->from('App\Entity\PayementMethod''e')
  305.         ->getQuery()
  306.         ->getSingleScalarResult();
  307.         $session->set('idpaiment'$idorder_number);
  308.         header('Location: '.$result->formUrl);
  309.         exit();
  310.       }
  311.       else
  312.       {
  313.         echo "Inscription oblégatoire  <a href='/inscription'>inscription</a>";
  314.         exit();
  315.       }
  316. }
  317.     public function index(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  318.     {
  319.       
  320.      
  321.       $suppadd=0;
  322.    /* if($supp != 75 && $supp != 150 && $supp != 225 && $supp != 300 &&  $supp != 0)
  323.       {
  324.         echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  325.         exit();
  326.       }
  327.       else
  328.       {
  329.         if($supp!=0)
  330.         {
  331.         
  332.           $suppadd=$supp;
  333.       
  334.         }
  335.         
  336.       }*/
  337.       if($supp!=0)
  338.       {
  339.       
  340.         $suppadd=$supp;
  341.     
  342.       }
  343.     
  344.       $ret=false;
  345.       $session $this->requestStack->getSession();
  346.      
  347.       $repository $doctrine->getRepository(PrixVariable::class);
  348.       $etape $repository->findAll();    
  349.       foreach($etape as $a)
  350.       {
  351.       
  352.        
  353.         /********** verification prix and paimenet congre */
  354.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  355.           {
  356.            
  357.              $id_event=$a->getEvenementprixId();
  358.              
  359.              $repository $doctrine->getRepository(EvenementAVenir::class);
  360.                   $p $repository->findBy(
  361.                     ['id' => $id_event,'desplay'=>true]
  362.             );
  363.             
  364.             if(count($p)>0)
  365.             { 
  366.             
  367.               $ret=true;
  368.             }
  369.             else
  370.             {
  371.               echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  372.               exit();
  373.             }
  374.           }
  375.         
  376.           
  377.       }
  378.      
  379.       if($ret)
  380.       {
  381.         $repository $doctrine->getRepository(PrixVariable::class);
  382.                   $p $repository->findBy(
  383.                     ['id' => $idprix]
  384.             );
  385.            $prix$p[0]->getPrix();
  386.             
  387.            $session->set('prix'$prix);
  388.            $session->set('idevenement'$id);
  389.            $session->set('idprix'$idprix);
  390.          
  391.       }
  392.       else
  393.       {
  394.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  395.       }
  396.       $repository $doctrine->getRepository(ConnexionUser::class);
  397.       $px $repository->findBy(['email' => $session->get('email')]);
  398.          if(count($px)>0)
  399.           {
  400.             
  401.            
  402.           }
  403.           else
  404.           {
  405.              
  406.           }
  407.       /*
  408.         
  409.         //Afficher le résultat
  410.         var_dump($result);*/
  411.         $repository $doctrine->getRepository(PayementMethod::class);
  412.         $p $repository->findAll(
  413.          
  414.           array('id' => 'DESC'),
  415.           1,
  416.           0
  417.         );
  418.         $em $doctrine->getManager();
  419.         $order_number $em->createQueryBuilder()
  420.     ->select('MAX(e.orderNumber)')
  421.     ->from('App\Entity\PayementMethod''e')
  422.     ->getQuery()
  423.     ->getSingleScalarResult();
  424.            /************** */
  425.     /************** */
  426.     $repository $doctrine->getRepository(EvenementAVenir::class);
  427.     $congrevide $repository->find($id);
  428.     $repository $doctrine->getRepository(ConnexionUser::class);
  429.     if($px>1)
  430.     {
  431.     
  432.     //$userconnexion = $repository->find($px[0]->getId());
  433.     }
  434.     /***** *addd supppp code ejay na7yyha y anis  */
  435.     
  436.    
  437.    
  438.     $cal=$prix*10;
  439.     $cal=$cal/100;
  440.     
  441.    // $total = $prix-$cal;
  442.    
  443.     $pourcentage=0;
  444.     $adhesion=0;
  445.     if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  446.     {
  447.         $prix+=0;
  448.     }else 
  449.     {
  450.         $prix+=0;
  451.     }
  452.     $total=$prix+$suppadd;
  453.    
  454.     $session->set('total'$total);
  455.     $session->set('pourcentage'$pourcentage);
  456.     /**************** */
  457.     /*$connexionverif = $doctrine->getRepository(PayementMethod::class)->findBy(
  458.       ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id,'pai'=>1]  
  459.          );
  460.        
  461.          if(count($connexionverif)>0)
  462.          {
  463.          
  464.          
  465.        
  466.           
  467.           return $this->render('paiment/retour.html.twig', array(
  468.             'name'=>"",'depositAmount'=>"",
  469.             'ErrorCode'=>1,
  470.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  471.         ));
  472.          }*/
  473.        
  474. /******* */
  475. /******* */
  476.      $url='https://ipay.clictopay.com/payment/rest/register.do?amount='.($total*1000).'&currency=788&language=en&orderNumber='.$order_number.'&password=I7Vh2o1e&returnUrl=https://astp.tn/retour-paiment/&userName=0799902085';
  477.      $ch curl_init();  
  478.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  479.      curl_setopt($chCURLOPT_URL$url); 
  480.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  481.      $result curl_exec($ch); 
  482.      $PayementMethod = new PayementMethod();
  483.      $PayementMethod->setOrderNumber($order_number+1);
  484.      $PayementMethod->setUrl("0");
  485.      $PayementMethod->setMontant(($prix));
  486.      $PayementMethod->setSupp(($supp));
  487.      $PayementMethod->setTotal(($total));
  488.      $PayementMethod->setAdhesion($adhesion);
  489.      $PayementMethod->setPourcentage(($pourcentage));
  490.      $PayementMethod->setEvenementautre($congrevide);
  491.    
  492.      if($session->has('accompanientSend'))
  493.        {
  494.             $PayementMethod->setAccomp($session->get('accompanientSend'));
  495.        }
  496.       $PayementMethod->setNom($session->get('nom'));
  497.       $PayementMethod->setEmail($session->get('emailSend'));
  498.       $PayementMethod->setPrenom($session->get('prenom'));
  499.       $PayementMethod->setPhone($session->get('phone'));
  500.      
  501.      $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  502.      $PayementMethod->setPai(0);
  503.      $em->persist($PayementMethod);
  504.      $em->flush();
  505.      $result=json_decode($result);
  506.         
  507.      $idorder_number $em->createQueryBuilder()
  508.      ->select('MAX(e.id)')
  509.      ->from('App\Entity\PayementMethod''e')
  510.      ->getQuery()
  511.      ->getSingleScalarResult();
  512.      $session->set('idpaiment'$idorder_number);
  513.      header('Location: '.$result->formUrl);
  514.      exit();
  515.       
  516.     }
  517.     /* adhy index de congré 
  518. public function index(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  519.     {
  520.       
  521.      
  522.       $suppadd=0;
  523.     if($supp != 85 && $supp != 170 && $supp != 255 && $supp != 340 &&  $supp != 0)
  524.       {
  525.         echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  526.         exit();
  527.       }
  528.       else
  529.       {
  530.         if($supp!=0)
  531.         {
  532.         
  533.           $suppadd=$supp;
  534.       
  535.         }
  536.         
  537.       }
  538.       if($supp!=0)
  539.       {
  540.       
  541.         $suppadd=$supp;
  542.     
  543.       }
  544.     
  545.       $ret=false;
  546.       $session = $this->requestStack->getSession();
  547.      
  548.       $repository = $doctrine->getRepository(PrixVariableCongre::class);
  549.       $etape = $repository->findAll();    
  550.       foreach($etape as $a)
  551.       {
  552.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  553.           {
  554.            
  555.              $id_event=$a->getEvenementprixId();
  556.              
  557.              $repository = $doctrine->getRepository(Congre::class);
  558.                   $p = $repository->findBy(
  559.                     ['id' => $id_event,'desplay'=>true]
  560.             );
  561.             
  562.             if(count($p)>0)
  563.             { 
  564.               $ret=true;
  565.             }
  566.             else
  567.             {
  568.               echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  569.               exit();
  570.             }
  571.           }
  572.         
  573.           
  574.       }
  575.       if($ret)
  576.       {
  577.         $repository = $doctrine->getRepository(PrixVariableCongre::class);
  578.                   $p = $repository->findBy(
  579.                     ['id' => $idprix]
  580.             );
  581.            $prix= $p[0]->getPrix();
  582.             
  583.            $session->set('prix', $prix);
  584.            $session->set('idevenement', $id);
  585.            $session->set('idprix', $idprix);
  586.          
  587.       }
  588.       else
  589.       {
  590.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  591.       }
  592.       $repository = $doctrine->getRepository(ConnexionUser::class);
  593.       $px = $repository->findBy(['email' => $session->get('email')]);
  594.          if(count($px)>0)
  595.           {
  596.             
  597.            
  598.           }
  599.           else
  600.           {
  601.              
  602.           }
  603.         $repository = $doctrine->getRepository(PayementMethod::class);
  604.         $p = $repository->findAll(
  605.          
  606.           array('id' => 'DESC'),
  607.           1,
  608.           0
  609.         );
  610.         $em = $doctrine->getManager();
  611.         $order_number = $em->createQueryBuilder()
  612.     ->select('MAX(e.orderNumber)')
  613.     ->from('App\Entity\PayementMethod', 'e')
  614.     ->getQuery()
  615.     ->getSingleScalarResult();
  616.     $repository = $doctrine->getRepository(Congre::class);
  617.     $congrevide = $repository->find($id);
  618.     $repository = $doctrine->getRepository(ConnexionUser::class);
  619.     if($px>1)
  620.     {
  621.     
  622.     }
  623.     
  624.    
  625.    
  626.     $cal=$prix*10;
  627.     $cal=$cal/100;
  628.     
  629.    
  630.     $pourcentage=0;
  631.     $adhesion=0;
  632.     if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  633.     {
  634.         $prix+=0;
  635.     }else 
  636.     {
  637.         $prix+=0;
  638.     }
  639.     $total=$prix+$suppadd;
  640.    
  641.     $session->set('total', $total);
  642.     $session->set('pourcentage', $pourcentage);
  643.      $url='https://ipay.clictopay.com/payment/rest/register.do?amount='.($total*1000).'&currency=788&language=en&orderNumber='.$order_number.'&password=I7Vh2o1e&returnUrl=https://astp.tn/retour-paiment/&userName=0799902085';
  644.      $ch = curl_init();  
  645.      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  646.      curl_setopt($ch, CURLOPT_URL, $url); 
  647.      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  648.      $result = curl_exec($ch); 
  649.      $PayementMethod = new PayementMethod();
  650.      $PayementMethod->setOrderNumber($order_number+1);
  651.      $PayementMethod->setUrl("0");
  652.      $PayementMethod->setMontant(($prix));
  653.      $PayementMethod->setSupp(($supp));
  654.      $PayementMethod->setTotal(($total));
  655.      $PayementMethod->setAdhesion($adhesion);
  656.      $PayementMethod->setPourcentage(($pourcentage));
  657.      $PayementMethod->setEvenementId($congrevide);
  658.      if($session->has('accompanientSend'))
  659.        {
  660.             $PayementMethod->setAccomp($session->get('accompanientSend'));
  661.        }
  662.       $PayementMethod->setNom($session->get('nom'));
  663.       $PayementMethod->setEmail($session->get('emailSend'));
  664.       $PayementMethod->setPrenom($session->get('prenom'));
  665.       $PayementMethod->setPhone($session->get('phone'));
  666.      
  667.      $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  668.      $PayementMethod->setPai(0);
  669.      $em->persist($PayementMethod);
  670.      $em->flush();
  671.      $result=json_decode($result);
  672.         
  673.      $idorder_number = $em->createQueryBuilder()
  674.      ->select('MAX(e.id)')
  675.      ->from('App\Entity\PayementMethod', 'e')
  676.      ->getQuery()
  677.      ->getSingleScalarResult();
  678.      $session->set('idpaiment', $idorder_number);
  679.      header('Location: '.$result->formUrl);
  680.      exit();
  681.       
  682.     }
  683.     */
  684.     public function indexautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  685.     {
  686.     
  687.       $ret=false;
  688.       $session $this->requestStack->getSession();
  689.      
  690.       $repository $doctrine->getRepository(PrixVariable::class);
  691.       $etape $repository->findAll();    
  692.       foreach($etape as $a)
  693.       {
  694.         /********** verification prix and paimenet congre */
  695.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  696.           {
  697.            
  698.              $id_event=$a->getEvenementprixId();
  699.              
  700.              $repository $doctrine->getRepository(EvenementAVenir::class);
  701.                   $p $repository->findBy(
  702.                     ['id' => $id_event,'desplay'=>true]
  703.             );
  704.             if(count($p)>0)
  705.             { 
  706.               $ret=true;
  707.             }
  708.             else
  709.             {
  710.               echo "évenement non disponible .";
  711.               exit();
  712.             }
  713.           }
  714.         
  715.           
  716.       }
  717.       if($ret)
  718.       {
  719.         $repository $doctrine->getRepository(PrixVariable::class);
  720.                   $p $repository->findBy(
  721.                     ['id' => $idprix]
  722.             );
  723.            $prix$p[0]->getPrix();
  724.             if($session->get('type')=="Non adhérent"$prix+=0;
  725.            $session->set('prix'$prix);
  726.            $session->set('idevenement'$id);
  727.            $session->set('idprix'$idprix);
  728.          
  729.       }
  730.       else
  731.       {
  732.         echo "erreur";exit();
  733.       }
  734.       $repository $doctrine->getRepository(ConnexionUser::class);
  735.       $px $repository->findBy(['email' => $session->get('email')]);
  736.       if($id!=53)
  737.       {
  738.         if(count($px)>0)
  739.         {
  740.           
  741.          
  742.         }
  743.         else
  744.         {
  745.          echo "Erreur";exit();
  746.         }
  747.       }
  748.         
  749.       /*
  750.         
  751.         //Afficher le résultat
  752.         var_dump($result);*/
  753.         $repository $doctrine->getRepository(PayementMethod::class);
  754.         $p $repository->findAll(
  755.          
  756.           array('id' => 'DESC'),
  757.           1,
  758.           0
  759.         );
  760.         $em $doctrine->getManager();
  761.         $order_number $em->createQueryBuilder()
  762.     ->select('MAX(e.orderNumber)')
  763.     ->from('App\Entity\PayementMethod''e')
  764.     ->getQuery()
  765.     ->getSingleScalarResult();
  766.     /************** */
  767.     $repository $doctrine->getRepository(EvenementAVenir::class);
  768.     $congrevide $repository->find($id);
  769.     $repository $doctrine->getRepository(ConnexionUser::class);
  770.     if($id!=53)
  771.     {
  772.       $userconnexion $repository->find($px[0]->getId());
  773.     }else
  774.     {
  775.       $userconnexion null;
  776.     }
  777.    
  778.     $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  779.       ['email' =>  $session->get('email'),'evenementautre'=>$id,'pai'=>1]  
  780.          );
  781.        
  782.          if(count($connexionverif)>0)
  783.          {
  784.          
  785.          
  786.        
  787.           
  788.           return $this->render('paiment/retour.html.twig', array(
  789.             'name'=>"",'depositAmount'=>"",
  790.             'ErrorCode'=>1,
  791.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  792.         ));
  793.          }
  794.          /****** inscription fermé */
  795.          $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  796.           ['evenementautre' => $id'pai' => true]
  797.         );
  798.         $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  799.           ['evenementautre' => $id,'surplace' => true]
  800.         );
  801.         
  802.          
  803.              if(count($connexionverif)+count($connexionverifsurplace)>32)
  804.              {
  805.              
  806.              
  807.            
  808.               
  809.               return $this->render('paiment/retour.html.twig', array(
  810.                 'name'=>"",'depositAmount'=>"",
  811.                 'ErrorCode'=>1,
  812.                 'ErrorMessage'=>"Inscription fermé"
  813.             ));
  814.              }
  815.        
  816. /******* */
  817. /******* */
  818.    
  819.      $url='https://ipay.clictopay.com/payment/rest/register.do?amount='.($prix*1000).'&currency=788&language=en&orderNumber='.$order_number.'&password=I7Vh2o1e&returnUrl=https://astp.tn/retour-paiment/&userName=0799902085';
  820.     
  821.      $ch curl_init();  
  822.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  823.      curl_setopt($chCURLOPT_URL$url); 
  824.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  825.      $result curl_exec($ch); 
  826.      $PayementMethod = new PayementMethod();
  827.      $PayementMethod->setOrderNumber($order_number+1);
  828.      $PayementMethod->setUrl("1");
  829.      if($id==49)
  830.      {
  831.       $PayementMethod->setPhone(($session->get('evenementspecifique')));
  832.      }
  833.      $PayementMethod->setMontant(($prix));
  834.      $PayementMethod->setEvenementautre($congrevide);
  835.      $PayementMethod->setNom($session->get('nom'));
  836.       $PayementMethod->setEmail($session->get('emailSend'));
  837.       $PayementMethod->setPrenom($session->get('prenom'));
  838.       $PayementMethod->setPhone($session->get('phone'));
  839.                $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  840.      $PayementMethod->setPai(0);
  841.      $em->persist($PayementMethod);
  842.      $em->flush();
  843.      $result=json_decode($result);
  844.      if(isset($result->errorCode))
  845.      {
  846.        if($result->errorCode!=0)
  847.        {
  848.         return $this->render('paiment/retour.html.twig', array(
  849.           'name'=>"",'depositAmount'=>"",
  850.           'ErrorCode'=>1,
  851.           'ErrorMessage'=>($order_number+1)."  ".$result->errorMessage
  852.       ));
  853.        }
  854.      }
  855.     /* var_dump($result);
  856.      echo $result->formUrl;*/
  857.      $idorder_number $em->createQueryBuilder()
  858.      ->select('MAX(e.id)')
  859.      ->from('App\Entity\PayementMethod''e')
  860.      ->getQuery()
  861.      ->getSingleScalarResult();
  862.      $session->set('idpaiment'$idorder_number);
  863.      header('Location: '.$result->formUrl);
  864.      exit();
  865.       
  866.     }
  867. public function indexsurplace(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  868. {
  869.   
  870.   $suppadd=0;
  871.   if($supp != 85 && $supp != 170 && $supp != 255 && $supp != 340 &&  $supp != 0)
  872.   {
  873.     echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  874.     exit();
  875.   }
  876.   else
  877.   {
  878.     
  879.   }
  880.       $ret=false;
  881.       $session $this->requestStack->getSession();
  882.      /* if ( $session->has('idpp')){
  883.         $session->remove('idpp');
  884.         return $this->render('paiment/retour.html.twig', array(
  885.           'name'=>"",'depositAmount'=>"",
  886.           'ErrorCode'=>1,
  887.           'ErrorMessage'=>"Erreur"
  888.       ));
  889.     }*/
  890.       $repository $doctrine->getRepository(PrixVariableCongre::class);
  891.       $etape $repository->findAll();    
  892.       foreach($etape as $a)
  893.       {
  894.       
  895.         /********** verification prix and paimenet congre */
  896.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  897.           {
  898.           
  899.              $id_event=$a->getEvenementprixId();
  900.              $repository $doctrine->getRepository(Congre::class);
  901.                   $p $repository->findBy(
  902.                     ['id' => $id_event,'desplay'=>true]
  903.             );
  904.             if(count($p)>0)
  905.             { 
  906.               $ret=true;
  907.             }
  908.             else
  909.             {
  910.               echo "évenement non disponible .";
  911.               exit();
  912.             }
  913.           }  
  914.       }
  915.       if($ret)
  916.       {
  917.         $repository $doctrine->getRepository(PrixVariableCongre::class);
  918.                   $p $repository->findBy(
  919.                     ['id' => $idprix]
  920.             );
  921.            $prix$p[0]->getPrix();
  922.           
  923.            $session->set('prix'$prix);
  924.            $session->set('idevenement'$id);
  925.            $session->set('idprix'$idprix);  
  926.       }
  927.       else
  928.       {
  929.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  930.       }
  931.       $repository $doctrine->getRepository(ConnexionUser::class);
  932.       $px $repository->findBy(['email' => $session->get('email')]);
  933.          if(count($px)>0)
  934.           {
  935.             
  936.            
  937.           }
  938.           else
  939.           {
  940.             echo "Merci de connecter <a href='/connexion/'>connexion</a>";exit();
  941.           }
  942.         $repository $doctrine->getRepository(PayementMethod::class);
  943.         $p $repository->findAll(
  944.           array('id' => 'DESC'),
  945.           1,
  946.           0
  947.         );
  948.        
  949.         /************** */
  950.         $repository $doctrine->getRepository(Congre::class);
  951.         $congrevide $repository->find($id);
  952.         $repository $doctrine->getRepository(ConnexionUser::class);
  953.         $userconnexion $repository->find($px[0]->getId());
  954.         $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  955.           ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id]  
  956.              );
  957.            
  958.              if(count($connexionverif)>0)
  959.              {
  960.              
  961.              
  962.            
  963.               
  964.               return $this->render('paiment/retour.html.twig', array(
  965.                 'name'=>"",'depositAmount'=>"",
  966.                 'ErrorCode'=>1,
  967.                 'ErrorMessage'=>"Vous étes inscrit a la formation "
  968.             ));
  969.              }
  970.            
  971. /******* */
  972. $total=$supp+$prix;
  973. $adhesion=0;
  974.         $em $doctrine->getManager();
  975.         $order_number $em->createQueryBuilder()
  976.           ->select('MAX(e.orderNumber)')
  977.           ->from('App\Entity\PayementMethod''e')
  978.           ->getQuery()
  979.           ->getSingleScalarResult();
  980.               $PayementMethod = new PayementMethod();
  981.               $PayementMethod->setOrderNumber($order_number+1);
  982.               $PayementMethod->setUrl("00");
  983.               $PayementMethod->setMontant(($prix));
  984.               $PayementMethod->setSupp(($supp));
  985.               $PayementMethod->setTotal(($total));
  986.               $PayementMethod->setAdhesion($adhesion);
  987.               $PayementMethod->setPourcentage((0));
  988.               $PayementMethod->setEvenementId($congrevide);
  989.               $PayementMethod->setIdUser($userconnexion);
  990.               $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  991.               $PayementMethod->setPai(0);
  992.               $em->persist($PayementMethod);
  993.               $em->flush();
  994.               $session->set('idpp'"0");  
  995.               return $this->render('paiment/retour.html.twig', array(
  996.                 'name'=>"",'depositAmount'=>"",
  997.                 'ErrorCode'=>-1,
  998.                 'ErrorMessage'=>""
  999.             ));
  1000.     }
  1001.     public function indexsurplaceautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  1002. {
  1003.       $ret=false;
  1004.       $session $this->requestStack->getSession();
  1005.       if ( $session->has('idpp')){
  1006.         $session->remove('idpp');
  1007.         return $this->render('paiment/retour.html.twig', array(
  1008.           'name'=>"",'depositAmount'=>"",
  1009.           'ErrorCode'=>1,
  1010.           'ErrorMessage'=>"Erreur"
  1011.       ));
  1012.     }
  1013.       $repository $doctrine->getRepository(PrixVariable::class);
  1014.       $etape $repository->findAll();    
  1015.       foreach($etape as $a)
  1016.       {
  1017.         /********** verification prix and paimenet congre */
  1018.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  1019.           {
  1020.            
  1021.              $id_event=$a->getEvenementprixId();
  1022.              $repository $doctrine->getRepository(EvenementAVenir::class);
  1023.                   $p $repository->findBy(
  1024.                     ['id' => $id_event,'desplay'=>true]
  1025.             );
  1026.             if(count($p)>0)
  1027.             { 
  1028.               $ret=true;
  1029.             }
  1030.             else
  1031.             {
  1032.               echo "évenement non disponible .";
  1033.               exit();
  1034.             }
  1035.           }  
  1036.       }
  1037.       if($ret)
  1038.       {
  1039.         $repository $doctrine->getRepository(PrixVariable::class);
  1040.                   $p $repository->findBy(
  1041.                     ['id' => $idprix]
  1042.             );
  1043.            $prix$p[0]->getPrix();
  1044.           
  1045.            $session->set('prix'$prix);
  1046.            $session->set('idevenement'$id);
  1047.            $session->set('idprix'$idprix);  
  1048.       }
  1049.       else
  1050.       {
  1051.         echo "erreur3";exit();
  1052.       }
  1053.       $repository $doctrine->getRepository(ConnexionUser::class);
  1054.       $px $repository->findBy(['email' => $session->get('email')]);
  1055.          if(count($px)>0)
  1056.           {
  1057.             
  1058.            
  1059.           }
  1060.           else
  1061.           {
  1062.           
  1063.           }
  1064. /************** */
  1065. $repository $doctrine->getRepository(EvenementAVenir::class);
  1066. $congrevide $repository->find($id);
  1067. $repository $doctrine->getRepository(ConnexionUser::class);
  1068. $userconnexion=null;
  1069. if (!empty($px[0]) && method_exists($px[0], 'getId') && $px[0]->getId()) 
  1070. {
  1071.   $userconnexion $repository->find($px[0]->getId());
  1072. }
  1073. /***** *addd supppp code ejay na7yyha y anis  */
  1074. /**************** */
  1075. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  1076.   ['email' => $session->get('emailSend'),'evenementautre'=>$id,'surplace'=>1]  
  1077.      );
  1078.    
  1079.      if(count($connexionverif)>0)
  1080.      {
  1081.      
  1082.      
  1083.    
  1084.       
  1085.       return $this->render('paiment/retour.html.twig', array(
  1086.         'name'=>"",'depositAmount'=>"",
  1087.         'ErrorCode'=>1,
  1088.         'ErrorMessage'=>"Vous étes inscrit a la formation "
  1089.     ));
  1090.      }
  1091.     
  1092. /******* */
  1093. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  1094.   ['evenementautre' => $id'pai' => true]
  1095. );
  1096. $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  1097.   ['evenementautre' => $id,'surplace' => true]
  1098. );
  1099.  
  1100.      if(count($connexionverif)+count($connexionverifsurplace)>250)
  1101.      {
  1102.      
  1103.      
  1104.    
  1105.       
  1106.       return $this->render('paiment/retour.html.twig', array(
  1107.         'name'=>"",'depositAmount'=>"",
  1108.         'ErrorCode'=>1,
  1109.         'ErrorMessage'=>"Inscription fermé"
  1110.     ));
  1111.      }
  1112.         $repository $doctrine->getRepository(PayementMethod::class);
  1113.         $p $repository->findAll(
  1114.           array('id' => 'DESC'),
  1115.           1,
  1116.           0
  1117.         );
  1118.         $em $doctrine->getManager();
  1119.         $order_number $em->createQueryBuilder()
  1120.           ->select('MAX(e.orderNumber)')
  1121.           ->from('App\Entity\PayementMethod''e')
  1122.           ->getQuery()
  1123.           ->getSingleScalarResult();
  1124.               /************** */
  1125.     $repository $doctrine->getRepository(EvenementAVenir::class);
  1126.     $congrevide $repository->find($id);
  1127.     $repository $doctrine->getRepository(ConnexionUser::class);
  1128.       $userconnexion null;
  1129.     if (!empty($px[0]) && method_exists($px[0], 'getId') && $px[0]->getId()) {
  1130.         $userconnexion $repository->find($px[0]->getId());
  1131.     } 
  1132.   
  1133. /******* */
  1134. $repository $doctrine->getRepository(PayementMethod::class);
  1135.     $count $repository->findAll();
  1136. $countcount($count);
  1137.   $PayementMethod = new PayementMethod();
  1138.   $PayementMethod->setOrderNumber($order_number+1);
  1139.   $PayementMethod->setUrl("01");
  1140.   $PayementMethod->setMontant(($prix));
  1141.   $PayementMethod->setEvenementautre($congrevide);
  1142.   if($userconnexion)
  1143.   {
  1144.       $PayementMethod->setIdUser($userconnexion);
  1145.   }
  1146.      $PayementMethod->setNom($session->get('nom'));
  1147.       $PayementMethod->setEmail($session->get('emailSend'));
  1148.       $PayementMethod->setPrenom($session->get('prenom'));
  1149.       $PayementMethod->setPhone($session->get('phone'));
  1150.    $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  1151.   $PayementMethod->setPai(0);
  1152.   $PayementMethod->setSurPlace(1);
  1153.   $em->persist($PayementMethod);
  1154.   $em->flush();
  1155.   $session->set('idpp'"0");  
  1156.   return $this->render('paiment/retour.html.twig', array(
  1157.     'name'=>"",'depositAmount'=>"",
  1158.     'ErrorCode'=>-1,
  1159.     'ErrorMessage'=>""
  1160. ));
  1161.            
  1162.     }
  1163.      
  1164.    
  1165.     public function retourPaiment(ManagerRegistry $doctrine,Request $request)
  1166.     {
  1167.     
  1168.       $session $this->requestStack->getSession();
  1169.       
  1170.       $session->remove('evenementspecifique');
  1171.     $session $this->requestStack->getSession();
  1172.   
  1173.      $orderId$_GET['orderId'];
  1174.      $em $this->getDoctrine()->getManager();
  1175.      $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  1176.  
  1177.      if (!$product) {
  1178.          throw $this->createNotFoundException(
  1179.              'Erreur '
  1180.          );
  1181.      }
  1182.  
  1183.      $product->setOrdernumberid($orderId);
  1184.      $em->flush();
  1185.      $session->set('idppt'"0");  
  1186.      $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  1187.      $ch curl_init();  
  1188.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  1189.      curl_setopt($chCURLOPT_URL$url); 
  1190.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  1191.      $result curl_exec($ch); 
  1192.      $result=json_decode($result);
  1193.      $name=$result->cardholderName;
  1194.      $depositAmount=$result->depositAmount;
  1195.      $ErrorCode=$result->ErrorCode;
  1196.      $ErrorMessage=$result->ErrorMessage;
  1197.      if($ErrorCode==0)
  1198.      {
  1199.       $em $this->getDoctrine()->getManager();
  1200.       $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  1201.   
  1202.       if (!$product) {
  1203.           throw $this->createNotFoundException(
  1204.               'Erreur '
  1205.           );
  1206.       }
  1207.       if($session->has("adherent_paiment") && $session->get("adherent_paiment")==true)
  1208.       {
  1209.         $product->setUrl("123456789");
  1210.       }
  1211.       $product->setPai(1);
  1212.       $em->flush();
  1213.       $session->set('idppt'"0");  
  1214.      }
  1215.  
  1216.      
  1217.       return $this->render('paiment/retour.html.twig', array(
  1218.         'name'=>$name,'depositAmount'=>$depositAmount,
  1219.         'ErrorCode'=>$ErrorCode,
  1220.         'ErrorMessage'=>$ErrorMessage
  1221.     ));
  1222.     }
  1223.     public function testanis()
  1224.     {
  1225.       /*$orderId= '59a7c903-5260-4dae-b769-322208e295d7';
  1226.       $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  1227.       $ch = curl_init();  
  1228.       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  1229.       curl_setopt($ch, CURLOPT_URL, $url); 
  1230.       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1231.       $result = curl_exec($ch); 
  1232.       $result=json_decode($result);
  1233.       print_r($result);*/
  1234.     exit();
  1235.   }
  1236.   public function omar()
  1237.   {
  1238.     $em $this->getDoctrine()->getManager();
  1239.     $productRepository $em->getRepository(EvenementFormulaire::class);
  1240.     
  1241.     // Utilisez la méthode findAll() pour récupérer toutes les données
  1242.     $products $productRepository->findAll();
  1243.     
  1244.     // Affichez les données pour déboguer
  1245.     
  1246.     return $this->render('omar/liste.html.twig', array(
  1247.       'product'=>$products
  1248.   ));
  1249.     
  1250.   }
  1251.     
  1252. }