src/Controller/PaimentController.php line 1059

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!=21)
  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!=21)
  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=20;
  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 != 60 && $supp != 145  && $supp != 165 && $supp != 125 && $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(PrixVariableCongre::class);
  348.       $etape $repository->findAll();    
  349.       foreach($etape as $a)
  350.       {
  351.         /********** verification prix and paimenet congre */
  352.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  353.           {
  354.            
  355.              $id_event=$a->getEvenementprixId();
  356.              
  357.              $repository $doctrine->getRepository(Congre::class);
  358.                   $p $repository->findBy(
  359.                     ['id' => $id_event,'desplay'=>true]
  360.             );
  361.             
  362.             if(count($p)>0)
  363.             { 
  364.               $ret=true;
  365.             }
  366.             else
  367.             {
  368.               echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  369.               exit();
  370.             }
  371.           }
  372.         
  373.           
  374.       }
  375.       if($ret)
  376.       {
  377.         $repository $doctrine->getRepository(PrixVariableCongre::class);
  378.                   $p $repository->findBy(
  379.                     ['id' => $idprix]
  380.             );
  381.            $prix$p[0]->getPrix();
  382.             
  383.            $session->set('prix'$prix);
  384.            $session->set('idevenement'$id);
  385.            $session->set('idprix'$idprix);
  386.          
  387.       }
  388.       else
  389.       {
  390.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  391.       }
  392.       $repository $doctrine->getRepository(ConnexionUser::class);
  393.       $px $repository->findBy(['email' => $session->get('email')]);
  394.          if(count($px)>0)
  395.           {
  396.             
  397.            
  398.           }
  399.           else
  400.           {
  401.              
  402.           }
  403.       /*
  404.         
  405.         //Afficher le résultat
  406.         var_dump($result);*/
  407.         $repository $doctrine->getRepository(PayementMethod::class);
  408.         $p $repository->findAll(
  409.          
  410.           array('id' => 'DESC'),
  411.           1,
  412.           0
  413.         );
  414.         $em $doctrine->getManager();
  415.         $order_number $em->createQueryBuilder()
  416.     ->select('MAX(e.orderNumber)')
  417.     ->from('App\Entity\PayementMethod''e')
  418.     ->getQuery()
  419.     ->getSingleScalarResult();
  420.            /************** */
  421.     /************** */
  422.     $repository $doctrine->getRepository(Congre::class);
  423.     $congrevide $repository->find($id);
  424.     $repository $doctrine->getRepository(ConnexionUser::class);
  425.     if($px>1)
  426.     {
  427.     
  428.     //$userconnexion = $repository->find($px[0]->getId());
  429.     }
  430.     /***** *addd supppp code ejay na7yyha y anis  */
  431.     
  432.    
  433.    
  434.     $cal=$prix*10;
  435.     $cal=$cal/100;
  436.     
  437.    // $total = $prix-$cal;
  438.    
  439.     $pourcentage=0;
  440.     $adhesion=0;
  441.     if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  442.     {
  443.         $prix+=0;
  444.     }else 
  445.     {
  446.         $prix+=0;
  447.     }
  448.     $total=$prix+$suppadd;
  449.    
  450.     $session->set('total'$total);
  451.     $session->set('pourcentage'$pourcentage);
  452.     /**************** */
  453.     /*$connexionverif = $doctrine->getRepository(PayementMethod::class)->findBy(
  454.       ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id,'pai'=>1]  
  455.          );
  456.        
  457.          if(count($connexionverif)>0)
  458.          {
  459.          
  460.          
  461.        
  462.           
  463.           return $this->render('paiment/retour.html.twig', array(
  464.             'name'=>"",'depositAmount'=>"",
  465.             'ErrorCode'=>1,
  466.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  467.         ));
  468.          }*/
  469.        
  470. /******* */
  471. /******* */
  472.      $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';
  473.      $ch curl_init();  
  474.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  475.      curl_setopt($chCURLOPT_URL$url); 
  476.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  477.      $result curl_exec($ch); 
  478.      $PayementMethod = new PayementMethod();
  479.      $PayementMethod->setOrderNumber($order_number+1);
  480.      $PayementMethod->setUrl("0");
  481.      $PayementMethod->setMontant(($prix));
  482.      $PayementMethod->setSupp(($supp));
  483.      $PayementMethod->setTotal(($total));
  484.      $PayementMethod->setAdhesion($adhesion);
  485.      $PayementMethod->setPourcentage(($pourcentage));
  486.      $PayementMethod->setEvenementId($congrevide);
  487.      if($session->has('accompanientSend'))
  488.        {
  489.             $PayementMethod->setAccomp($session->get('accompanientSend'));
  490.        }
  491.       $PayementMethod->setNom($session->get('nom'));
  492.       $PayementMethod->setEmail($session->get('emailSend'));
  493.       $PayementMethod->setPrenom($session->get('prenom'));
  494.       $PayementMethod->setPhone($session->get('phone'));
  495.      
  496.      $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  497.      $PayementMethod->setPai(0);
  498.      $em->persist($PayementMethod);
  499.      $em->flush();
  500.      $result=json_decode($result);
  501.         
  502.      $idorder_number $em->createQueryBuilder()
  503.      ->select('MAX(e.id)')
  504.      ->from('App\Entity\PayementMethod''e')
  505.      ->getQuery()
  506.      ->getSingleScalarResult();
  507.      $session->set('idpaiment'$idorder_number);
  508.      header('Location: '.$result->formUrl);
  509.      exit();
  510.       
  511.     }
  512.     public function indexautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  513.     {
  514.     
  515.       $ret=false;
  516.       $session $this->requestStack->getSession();
  517.      
  518.       $repository $doctrine->getRepository(PrixVariable::class);
  519.       $etape $repository->findAll();    
  520.       foreach($etape as $a)
  521.       {
  522.         /********** verification prix and paimenet congre */
  523.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  524.           {
  525.            
  526.              $id_event=$a->getEvenementprixId();
  527.              
  528.              $repository $doctrine->getRepository(EvenementAVenir::class);
  529.                   $p $repository->findBy(
  530.                     ['id' => $id_event,'desplay'=>true]
  531.             );
  532.             if(count($p)>0)
  533.             { 
  534.               $ret=true;
  535.             }
  536.             else
  537.             {
  538.               echo "évenement non disponible .";
  539.               exit();
  540.             }
  541.           }
  542.         
  543.           
  544.       }
  545.       if($ret)
  546.       {
  547.         $repository $doctrine->getRepository(PrixVariable::class);
  548.                   $p $repository->findBy(
  549.                     ['id' => $idprix]
  550.             );
  551.            $prix$p[0]->getPrix();
  552.             if($session->get('type')=="Non adhérent"$prix+=0;
  553.            $session->set('prix'$prix);
  554.            $session->set('idevenement'$id);
  555.            $session->set('idprix'$idprix);
  556.          
  557.       }
  558.       else
  559.       {
  560.         echo "erreur";exit();
  561.       }
  562.       $repository $doctrine->getRepository(ConnexionUser::class);
  563.       $px $repository->findBy(['email' => $session->get('email')]);
  564.       if($id!=53)
  565.       {
  566.         if(count($px)>0)
  567.         {
  568.           
  569.          
  570.         }
  571.         else
  572.         {
  573.          echo "Erreur";exit();
  574.         }
  575.       }
  576.         
  577.       /*
  578.         
  579.         //Afficher le résultat
  580.         var_dump($result);*/
  581.         $repository $doctrine->getRepository(PayementMethod::class);
  582.         $p $repository->findAll(
  583.          
  584.           array('id' => 'DESC'),
  585.           1,
  586.           0
  587.         );
  588.         $em $doctrine->getManager();
  589.         $order_number $em->createQueryBuilder()
  590.     ->select('MAX(e.orderNumber)')
  591.     ->from('App\Entity\PayementMethod''e')
  592.     ->getQuery()
  593.     ->getSingleScalarResult();
  594.     /************** */
  595.     $repository $doctrine->getRepository(EvenementAVenir::class);
  596.     $congrevide $repository->find($id);
  597.     $repository $doctrine->getRepository(ConnexionUser::class);
  598.     if($id!=53)
  599.     {
  600.       $userconnexion $repository->find($px[0]->getId());
  601.     }else
  602.     {
  603.       $userconnexion null;
  604.     }
  605.    
  606.     $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  607.       ['email' =>  $session->get('email'),'evenementautre'=>$id,'pai'=>1]  
  608.          );
  609.        
  610.          if(count($connexionverif)>0)
  611.          {
  612.          
  613.          
  614.        
  615.           
  616.           return $this->render('paiment/retour.html.twig', array(
  617.             'name'=>"",'depositAmount'=>"",
  618.             'ErrorCode'=>1,
  619.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  620.         ));
  621.          }
  622.          /****** inscription fermé */
  623.          $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  624.           ['evenementautre' => $id'pai' => true]
  625.         );
  626.         $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  627.           ['evenementautre' => $id,'surplace' => true]
  628.         );
  629.         
  630.          
  631.              if(count($connexionverif)+count($connexionverifsurplace)>32)
  632.              {
  633.              
  634.              
  635.            
  636.               
  637.               return $this->render('paiment/retour.html.twig', array(
  638.                 'name'=>"",'depositAmount'=>"",
  639.                 'ErrorCode'=>1,
  640.                 'ErrorMessage'=>"Inscription fermé"
  641.             ));
  642.              }
  643.        
  644. /******* */
  645. /******* */
  646.    
  647.      $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';
  648.     
  649.      $ch curl_init();  
  650.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  651.      curl_setopt($chCURLOPT_URL$url); 
  652.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  653.      $result curl_exec($ch); 
  654.      $PayementMethod = new PayementMethod();
  655.      $PayementMethod->setOrderNumber($order_number+1);
  656.      $PayementMethod->setUrl("1");
  657.      if($id==49)
  658.      {
  659.       $PayementMethod->setPhone(($session->get('evenementspecifique')));
  660.      }
  661.      $PayementMethod->setMontant(($prix));
  662.      $PayementMethod->setEvenementautre($congrevide);
  663.      $PayementMethod->setNom($session->get('nom'));
  664.       $PayementMethod->setEmail($session->get('emailSend'));
  665.       $PayementMethod->setPrenom($session->get('prenom'));
  666.       $PayementMethod->setPhone($session->get('phone'));
  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.      if(isset($result->errorCode))
  673.      {
  674.        if($result->errorCode!=0)
  675.        {
  676.         return $this->render('paiment/retour.html.twig', array(
  677.           'name'=>"",'depositAmount'=>"",
  678.           'ErrorCode'=>1,
  679.           'ErrorMessage'=>($order_number+1)."  ".$result->errorMessage
  680.       ));
  681.        }
  682.      }
  683.     /* var_dump($result);
  684.      echo $result->formUrl;*/
  685.      $idorder_number $em->createQueryBuilder()
  686.      ->select('MAX(e.id)')
  687.      ->from('App\Entity\PayementMethod''e')
  688.      ->getQuery()
  689.      ->getSingleScalarResult();
  690.      $session->set('idpaiment'$idorder_number);
  691.      header('Location: '.$result->formUrl);
  692.      exit();
  693.       
  694.     }
  695. public function indexsurplace(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  696. {
  697.   
  698.   $suppadd=0;
  699.   if($supp != 65 && $supp != 145 && $supp != 165 && $supp != 125 &&  $supp != 0)
  700.   {
  701.     echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  702.     exit();
  703.   }
  704.   else
  705.   {
  706.     
  707.   }
  708.       $ret=false;
  709.       $session $this->requestStack->getSession();
  710.      /* if ( $session->has('idpp')){
  711.         $session->remove('idpp');
  712.         return $this->render('paiment/retour.html.twig', array(
  713.           'name'=>"",'depositAmount'=>"",
  714.           'ErrorCode'=>1,
  715.           'ErrorMessage'=>"Erreur"
  716.       ));
  717.     }*/
  718.       $repository $doctrine->getRepository(PrixVariableCongre::class);
  719.       $etape $repository->findAll();    
  720.       foreach($etape as $a)
  721.       {
  722.       
  723.         /********** verification prix and paimenet congre */
  724.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  725.           {
  726.           
  727.              $id_event=$a->getEvenementprixId();
  728.              $repository $doctrine->getRepository(Congre::class);
  729.                   $p $repository->findBy(
  730.                     ['id' => $id_event,'desplay'=>true]
  731.             );
  732.             if(count($p)>0)
  733.             { 
  734.               $ret=true;
  735.             }
  736.             else
  737.             {
  738.               echo "évenement non disponible .";
  739.               exit();
  740.             }
  741.           }  
  742.       }
  743.       if($ret)
  744.       {
  745.         $repository $doctrine->getRepository(PrixVariableCongre::class);
  746.                   $p $repository->findBy(
  747.                     ['id' => $idprix]
  748.             );
  749.            $prix$p[0]->getPrix();
  750.           
  751.            $session->set('prix'$prix);
  752.            $session->set('idevenement'$id);
  753.            $session->set('idprix'$idprix);  
  754.       }
  755.       else
  756.       {
  757.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  758.       }
  759.       $repository $doctrine->getRepository(ConnexionUser::class);
  760.       $px $repository->findBy(['email' => $session->get('email')]);
  761.          if(count($px)>0)
  762.           {
  763.             
  764.            
  765.           }
  766.           else
  767.           {
  768.             echo "Merci de connecter <a href='/connexion/'>connexion</a>";exit();
  769.           }
  770.         $repository $doctrine->getRepository(PayementMethod::class);
  771.         $p $repository->findAll(
  772.           array('id' => 'DESC'),
  773.           1,
  774.           0
  775.         );
  776.        
  777.         /************** */
  778.         $repository $doctrine->getRepository(Congre::class);
  779.         $congrevide $repository->find($id);
  780.         $repository $doctrine->getRepository(ConnexionUser::class);
  781.         $userconnexion $repository->find($px[0]->getId());
  782.         $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  783.           ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id]  
  784.              );
  785.            
  786.              if(count($connexionverif)>0)
  787.              {
  788.              
  789.              
  790.            
  791.               
  792.               return $this->render('paiment/retour.html.twig', array(
  793.                 'name'=>"",'depositAmount'=>"",
  794.                 'ErrorCode'=>1,
  795.                 'ErrorMessage'=>"Vous étes inscrit a la formation "
  796.             ));
  797.              }
  798.            
  799. /******* */
  800. $total=$supp+$prix;
  801. $adhesion=0;
  802.         $em $doctrine->getManager();
  803.         $order_number $em->createQueryBuilder()
  804.           ->select('MAX(e.orderNumber)')
  805.           ->from('App\Entity\PayementMethod''e')
  806.           ->getQuery()
  807.           ->getSingleScalarResult();
  808.               $PayementMethod = new PayementMethod();
  809.               $PayementMethod->setOrderNumber($order_number+1);
  810.               $PayementMethod->setUrl("00");
  811.               $PayementMethod->setMontant(($prix));
  812.               $PayementMethod->setSupp(($supp));
  813.               $PayementMethod->setTotal(($total));
  814.               $PayementMethod->setAdhesion($adhesion);
  815.               $PayementMethod->setPourcentage((0));
  816.               $PayementMethod->setEvenementId($congrevide);
  817.               $PayementMethod->setIdUser($userconnexion);
  818.               $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  819.               $PayementMethod->setPai(0);
  820.               $em->persist($PayementMethod);
  821.               $em->flush();
  822.               $session->set('idpp'"0");  
  823.               return $this->render('paiment/retour.html.twig', array(
  824.                 'name'=>"",'depositAmount'=>"",
  825.                 'ErrorCode'=>-1,
  826.                 'ErrorMessage'=>""
  827.             ));
  828.     }
  829.     public function indexsurplaceautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  830. {
  831.       $ret=false;
  832.       $session $this->requestStack->getSession();
  833.       if ( $session->has('idpp')){
  834.         $session->remove('idpp');
  835.         return $this->render('paiment/retour.html.twig', array(
  836.           'name'=>"",'depositAmount'=>"",
  837.           'ErrorCode'=>1,
  838.           'ErrorMessage'=>"Erreur"
  839.       ));
  840.     }
  841.       $repository $doctrine->getRepository(PrixVariable::class);
  842.       $etape $repository->findAll();    
  843.       foreach($etape as $a)
  844.       {
  845.         /********** verification prix and paimenet congre */
  846.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  847.           {
  848.            
  849.              $id_event=$a->getEvenementprixId();
  850.              $repository $doctrine->getRepository(EvenementAVenir::class);
  851.                   $p $repository->findBy(
  852.                     ['id' => $id_event,'desplay'=>true]
  853.             );
  854.             if(count($p)>0)
  855.             { 
  856.               $ret=true;
  857.             }
  858.             else
  859.             {
  860.               echo "évenement non disponible .";
  861.               exit();
  862.             }
  863.           }  
  864.       }
  865.       if($ret)
  866.       {
  867.         $repository $doctrine->getRepository(PrixVariable::class);
  868.                   $p $repository->findBy(
  869.                     ['id' => $idprix]
  870.             );
  871.            $prix$p[0]->getPrix();
  872.           
  873.            $session->set('prix'$prix);
  874.            $session->set('idevenement'$id);
  875.            $session->set('idprix'$idprix);  
  876.       }
  877.       else
  878.       {
  879.         echo "erreur3";exit();
  880.       }
  881.       $repository $doctrine->getRepository(ConnexionUser::class);
  882.       $px $repository->findBy(['email' => $session->get('email')]);
  883.          if(count($px)>0)
  884.           {
  885.             
  886.            
  887.           }
  888.           else
  889.           {
  890.           
  891.           }
  892. /************** */
  893. $repository $doctrine->getRepository(EvenementAVenir::class);
  894. $congrevide $repository->find($id);
  895. $repository $doctrine->getRepository(ConnexionUser::class);
  896. $userconnexion=null;
  897. if (!empty($px[0]) && method_exists($px[0], 'getId') && $px[0]->getId()) 
  898. {
  899.   $userconnexion $repository->find($px[0]->getId());
  900. }
  901. /***** *addd supppp code ejay na7yyha y anis  */
  902. /**************** */
  903. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  904.   ['email' => $session->get('emailSend'),'evenementautre'=>$id,'surplace'=>1]  
  905.      );
  906.    
  907.      if(count($connexionverif)>0)
  908.      {
  909.      
  910.      
  911.    
  912.       
  913.       return $this->render('paiment/retour.html.twig', array(
  914.         'name'=>"",'depositAmount'=>"",
  915.         'ErrorCode'=>1,
  916.         'ErrorMessage'=>"Vous étes inscrit a la formation "
  917.     ));
  918.      }
  919.     
  920. /******* */
  921. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  922.   ['evenementautre' => $id'pai' => true]
  923. );
  924. $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  925.   ['evenementautre' => $id,'surplace' => true]
  926. );
  927.  
  928.      if(count($connexionverif)+count($connexionverifsurplace)>250)
  929.      {
  930.      
  931.      
  932.    
  933.       
  934.       return $this->render('paiment/retour.html.twig', array(
  935.         'name'=>"",'depositAmount'=>"",
  936.         'ErrorCode'=>1,
  937.         'ErrorMessage'=>"Inscription fermé"
  938.     ));
  939.      }
  940.         $repository $doctrine->getRepository(PayementMethod::class);
  941.         $p $repository->findAll(
  942.           array('id' => 'DESC'),
  943.           1,
  944.           0
  945.         );
  946.         $em $doctrine->getManager();
  947.         $order_number $em->createQueryBuilder()
  948.           ->select('MAX(e.orderNumber)')
  949.           ->from('App\Entity\PayementMethod''e')
  950.           ->getQuery()
  951.           ->getSingleScalarResult();
  952.               /************** */
  953.     $repository $doctrine->getRepository(EvenementAVenir::class);
  954.     $congrevide $repository->find($id);
  955.     $repository $doctrine->getRepository(ConnexionUser::class);
  956.       $userconnexion null;
  957.     if (!empty($px[0]) && method_exists($px[0], 'getId') && $px[0]->getId()) {
  958.         $userconnexion $repository->find($px[0]->getId());
  959.     } 
  960.   
  961. /******* */
  962. $repository $doctrine->getRepository(PayementMethod::class);
  963.     $count $repository->findAll();
  964. $countcount($count);
  965.   $PayementMethod = new PayementMethod();
  966.   $PayementMethod->setOrderNumber($order_number+1);
  967.   $PayementMethod->setUrl("01");
  968.   $PayementMethod->setMontant(($prix));
  969.   $PayementMethod->setEvenementautre($congrevide);
  970.   if($userconnexion)
  971.   {
  972.       $PayementMethod->setIdUser($userconnexion);
  973.   }
  974.      $PayementMethod->setNom($session->get('nom'));
  975.       $PayementMethod->setEmail($session->get('emailSend'));
  976.       $PayementMethod->setPrenom($session->get('prenom'));
  977.       $PayementMethod->setPhone($session->get('phone'));
  978.    $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  979.   $PayementMethod->setPai(0);
  980.   $PayementMethod->setSurPlace(1);
  981.   $em->persist($PayementMethod);
  982.   $em->flush();
  983.   $session->set('idpp'"0");  
  984.   return $this->render('paiment/retour.html.twig', array(
  985.     'name'=>"",'depositAmount'=>"",
  986.     'ErrorCode'=>-1,
  987.     'ErrorMessage'=>""
  988. ));
  989.            
  990.     }
  991.      
  992.    
  993.     public function retourPaiment(ManagerRegistry $doctrine,Request $request)
  994.     {
  995.     
  996.       $session $this->requestStack->getSession();
  997.       
  998.       $session->remove('evenementspecifique');
  999.     $session $this->requestStack->getSession();
  1000.   
  1001.      $orderId$_GET['orderId'];
  1002.      $em $this->getDoctrine()->getManager();
  1003.      $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  1004.  
  1005.      if (!$product) {
  1006.          throw $this->createNotFoundException(
  1007.              'Erreur '
  1008.          );
  1009.      }
  1010.  
  1011.      $product->setOrdernumberid($orderId);
  1012.      $em->flush();
  1013.      $session->set('idppt'"0");  
  1014.      $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  1015.      $ch curl_init();  
  1016.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  1017.      curl_setopt($chCURLOPT_URL$url); 
  1018.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  1019.      $result curl_exec($ch); 
  1020.      $result=json_decode($result);
  1021.      $name=$result->cardholderName;
  1022.      $depositAmount=$result->depositAmount;
  1023.      $ErrorCode=$result->ErrorCode;
  1024.      $ErrorMessage=$result->ErrorMessage;
  1025.      if($ErrorCode==0)
  1026.      {
  1027.       $em $this->getDoctrine()->getManager();
  1028.       $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  1029.   
  1030.       if (!$product) {
  1031.           throw $this->createNotFoundException(
  1032.               'Erreur '
  1033.           );
  1034.       }
  1035.       if($session->has("adherent_paiment") && $session->get("adherent_paiment")==true)
  1036.       {
  1037.         $product->setUrl("123456789");
  1038.       }
  1039.       $product->setPai(1);
  1040.       $em->flush();
  1041.       $session->set('idppt'"0");  
  1042.      }
  1043.  
  1044.      
  1045.       return $this->render('paiment/retour.html.twig', array(
  1046.         'name'=>$name,'depositAmount'=>$depositAmount,
  1047.         'ErrorCode'=>$ErrorCode,
  1048.         'ErrorMessage'=>$ErrorMessage
  1049.     ));
  1050.     }
  1051.     public function testanis()
  1052.     {
  1053.       /*$orderId= '59a7c903-5260-4dae-b769-322208e295d7';
  1054.       $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  1055.       $ch = curl_init();  
  1056.       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  1057.       curl_setopt($ch, CURLOPT_URL, $url); 
  1058.       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1059.       $result = curl_exec($ch); 
  1060.       $result=json_decode($result);
  1061.       print_r($result);*/
  1062.     exit();
  1063.   }
  1064.   public function omar()
  1065.   {
  1066.     $em $this->getDoctrine()->getManager();
  1067.     $productRepository $em->getRepository(EvenementFormulaire::class);
  1068.     
  1069.     // Utilisez la méthode findAll() pour récupérer toutes les données
  1070.     $products $productRepository->findAll();
  1071.     
  1072.     // Affichez les données pour déboguer
  1073.     
  1074.     return $this->render('omar/liste.html.twig', array(
  1075.       'product'=>$products
  1076.   ));
  1077.     
  1078.   }
  1079.     
  1080. }