src/Controller/PaimentController.php line 160

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=20;
  53.     }
  54.     if($prix==0)
  55.     {
  56.       $prix $p[0]->getPrix();
  57.     }else 
  58.     {
  59.       $prix $p[0]->getPrix()+20;
  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=20;
  138.         }
  139.         if($prix==0)
  140.         {
  141.           $prix $p[0]->getPrix();
  142.         }else 
  143.         {
  144.           $prix $p[0]->getPrix()+20;
  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.     /*if($idprix != 79 && $idprix != 80 && $idprix != 81 && $idprix != 82)
  152.     {
  153.       echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  154.       exit();
  155.     }*/
  156.     if($id!=21)
  157.     {
  158.       echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  159.       exit();
  160.     }
  161.    
  162.   
  163.        
  164.      
  165. $erreur="";
  166. $verif=true;
  167. $messageSuccess="";
  168. $entityManager $doctrine->getManager();
  169. $article = new EvenementFormulaire();
  170. $form $this->createForm(formulaireEvenementType::class, $article);
  171. $form->handleRequest($request);
  172.         if ($form->isSubmitted() && $form->isValid()) {
  173.           if($article->getFonction() == "Etudiant")
  174.           {
  175.             $article->setType("Adhérent");
  176.           }
  177.         if(Empty($article->getNom()))
  178.         {
  179.         $erreur.="Nom invalide <br>";
  180.         $verif=false;
  181.         }
  182.         else if(strlen($article->getNom())<|| strlen($article->getNom())>30)
  183.         {
  184.             $erreur.="Nom invalide <br>";
  185.             $verif=false;
  186.         }
  187.         else
  188.         {
  189.             $verif=true;
  190.         }
  191.         if(Empty($article->getPrenom()))
  192.         {
  193.         $erreur.="Prénom invalide <br>";
  194.         $verif=false;
  195.         }
  196.         else if(strlen($article->getPrenom())<|| strlen($article->getPrenom())>30)
  197.         {
  198.             $erreur.="Prénom invalide <br>";
  199.             $verif=false;
  200.         }
  201.         /**** verif email */
  202.         if(strlen($article->getEmail())<|| strlen($article->getEmail())>30)
  203.         {
  204.             $erreur.="Email invalide <br>";
  205.             $verif=false;
  206.         }
  207.         else
  208.         {
  209.             $verif=true;
  210.         }
  211.         /***** */
  212.         if(Empty($article->getPhone()))
  213.         {
  214.         $erreur.="Numéro de téléphone invalide <br>";
  215.         $verif=false;
  216.         }
  217.         else if(strlen($article->getPhone())<|| strlen($article->getPhone())>11)
  218.         {
  219.             $erreur.="Numéro de téléphone invalide <br>";
  220.             $verif=false;
  221.         }
  222.         if(strlen($erreur)==0)
  223.         {
  224.             if($id!=21)
  225.             {
  226.                 $erreur"Erreur lors de l'inscription";
  227.             }else
  228.             {
  229.               $session $this->requestStack->getSession();
  230.               $session->set('emailSend',$article->getEmail());
  231.               $session->set('fonction',$article->getFonction());
  232.               $session->set('type',$article->getType());
  233.               $session->set('nom',$article->getNom());
  234.               $session->set('prenom',$article->getPrenom());
  235.               $session->set('phone',$article->getPhone());
  236.               return $this->redirectToRoute('evenementDetail', [
  237.                 'id' => $id
  238.                
  239.             ]);
  240.                 
  241.             }
  242.           }
  243.         
  244.          /* $entityManager->persist($article);
  245.           $entityManager->flush();*/
  246.         }
  247.     return $this->render('formulaires/indexcongre.html.twig',['form' => $form->createView(),'erreur'=>$erreur,'message'=>$messageSuccess,'id'=>$id]);
  248.    
  249.   }
  250.   public function adherent(ManagerRegistry $doctrine)
  251. {
  252.   $session $this->requestStack->getSession();
  253.   $repository $doctrine->getRepository(ConnexionUser::class);
  254.   if(!$session->has('email'))
  255.   {
  256.     echo "merci de retour a la page accueil <a href='/'>accueil</a>";
  257.     exit();
  258.   }
  259.      $px $repository->findBy(['email' => $session->get('email')]);
  260.      if(count($px)>0)
  261.       {
  262.         $repository2 $doctrine->getRepository(PayementMethod::class);
  263.         $pxxc $repository2->findBy(['email' => $session->get('email'),'url'=>'123456789']);
  264.               if(count($pxxc)>0)
  265.               {
  266.                 echo "Vous êtes déjà adhérent : " $session->get('email');
  267.                 exit();
  268.                }
  269.         $em $doctrine->getManager();
  270.         $order_number $em->createQueryBuilder()
  271.       ->select('MAX(e.orderNumber)')
  272.       ->from('App\Entity\PayementMethod''e')
  273.       ->getQuery()
  274.       ->getSingleScalarResult();
  275.       $prix=20;
  276.       $total=$prix;
  277.         $session->set('adherent_paiment'true);
  278.         $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';
  279.         $ch curl_init();  
  280.         curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  281.         curl_setopt($chCURLOPT_URL$url); 
  282.         curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  283.         $result curl_exec($ch); 
  284.         $PayementMethod = new PayementMethod();
  285.         $PayementMethod->setOrderNumber($order_number+1);
  286.        
  287.         $PayementMethod->setMontant(($prix));
  288.     
  289.         $PayementMethod->setTotal(($total));
  290.    
  291.         
  292.         $ddate=date("Y-m-d h:i:s");
  293.         $PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  294.         $PayementMethod->setPai(0);
  295.         $PayementMethod->setIdUser($px[0]);
  296.         $em->persist($PayementMethod);
  297.         $em->flush();
  298.         $result=json_decode($result);
  299.               
  300.         $idorder_number $em->createQueryBuilder()
  301.         ->select('MAX(e.id)')
  302.         ->from('App\Entity\PayementMethod''e')
  303.         ->getQuery()
  304.         ->getSingleScalarResult();
  305.         $session->set('idpaiment'$idorder_number);
  306.         header('Location: '.$result->formUrl);
  307.         exit();
  308.       }
  309.       else
  310.       {
  311.         echo "Inscription oblégatoire  <a href='/inscription'>inscription</a>";
  312.         exit();
  313.       }
  314. }
  315.     public function index(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  316.     {
  317.       
  318.      
  319.       $suppadd=0;
  320.       /*if($supp != 60 && $supp != 145  && $supp != 165 && $supp != 125 && $supp != 0)
  321.       {
  322.         echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  323.         exit();
  324.       }
  325.       else
  326.       {
  327.         if($supp!=0)
  328.         {
  329.         
  330.           $suppadd=$supp;
  331.       
  332.         }
  333.         
  334.       }*/
  335.       if($supp!=0)
  336.       {
  337.       
  338.         $suppadd=$supp;
  339.     
  340.       }
  341.     
  342.       $ret=false;
  343.       $session $this->requestStack->getSession();
  344.      
  345.       $repository $doctrine->getRepository(PrixVariableCongre::class);
  346.       $etape $repository->findAll();    
  347.       foreach($etape as $a)
  348.       {
  349.         /********** verification prix and paimenet congre */
  350.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  351.           {
  352.            
  353.              $id_event=$a->getEvenementprixId();
  354.              
  355.              $repository $doctrine->getRepository(Congre::class);
  356.                   $p $repository->findBy(
  357.                     ['id' => $id_event,'desplay'=>true]
  358.             );
  359.             
  360.             if(count($p)>0)
  361.             { 
  362.               $ret=true;
  363.             }
  364.             else
  365.             {
  366.               echo "évenement non disponible .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  367.               exit();
  368.             }
  369.           }
  370.         
  371.           
  372.       }
  373.       if($ret)
  374.       {
  375.         $repository $doctrine->getRepository(PrixVariableCongre::class);
  376.                   $p $repository->findBy(
  377.                     ['id' => $idprix]
  378.             );
  379.            $prix$p[0]->getPrix();
  380.             
  381.            $session->set('prix'$prix);
  382.            $session->set('idevenement'$id);
  383.            $session->set('idprix'$idprix);
  384.          
  385.       }
  386.       else
  387.       {
  388.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  389.       }
  390.       $repository $doctrine->getRepository(ConnexionUser::class);
  391.       $px $repository->findBy(['email' => $session->get('email')]);
  392.          if(count($px)>0)
  393.           {
  394.             
  395.            
  396.           }
  397.           else
  398.           {
  399.              
  400.           }
  401.       /*
  402.         
  403.         //Afficher le résultat
  404.         var_dump($result);*/
  405.         $repository $doctrine->getRepository(PayementMethod::class);
  406.         $p $repository->findAll(
  407.          
  408.           array('id' => 'DESC'),
  409.           1,
  410.           0
  411.         );
  412.         $em $doctrine->getManager();
  413.         $order_number $em->createQueryBuilder()
  414.     ->select('MAX(e.orderNumber)')
  415.     ->from('App\Entity\PayementMethod''e')
  416.     ->getQuery()
  417.     ->getSingleScalarResult();
  418.            /************** */
  419.     /************** */
  420.     $repository $doctrine->getRepository(Congre::class);
  421.     $congrevide $repository->find($id);
  422.     $repository $doctrine->getRepository(ConnexionUser::class);
  423.     if($px>1)
  424.     {
  425.     
  426.     //$userconnexion = $repository->find($px[0]->getId());
  427.     }
  428.     /***** *addd supppp code ejay na7yyha y anis  */
  429.     
  430.    
  431.    
  432.     $cal=$prix*10;
  433.     $cal=$cal/100;
  434.     
  435.    // $total = $prix-$cal;
  436.    
  437.     $pourcentage=0;
  438.     $adhesion=0;
  439.     if($session->get('type')=="Adhérent" || $session->get('type')=="Etudiant")
  440.     {
  441.         $prix+=0;
  442.     }else 
  443.     {
  444.         $prix+=20;
  445.     }
  446.     $total=$prix+$suppadd;
  447.    
  448.     $session->set('total'$total);
  449.     $session->set('pourcentage'$pourcentage);
  450.     /**************** */
  451.     /*$connexionverif = $doctrine->getRepository(PayementMethod::class)->findBy(
  452.       ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id,'pai'=>1]  
  453.          );
  454.        
  455.          if(count($connexionverif)>0)
  456.          {
  457.          
  458.          
  459.        
  460.           
  461.           return $this->render('paiment/retour.html.twig', array(
  462.             'name'=>"",'depositAmount'=>"",
  463.             'ErrorCode'=>1,
  464.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  465.         ));
  466.          }*/
  467.        
  468. /******* */
  469. /******* */
  470.      $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';
  471.      $ch curl_init();  
  472.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  473.      curl_setopt($chCURLOPT_URL$url); 
  474.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  475.      $result curl_exec($ch); 
  476.      $PayementMethod = new PayementMethod();
  477.      $PayementMethod->setOrderNumber($order_number+1);
  478.      $PayementMethod->setUrl("0");
  479.      $PayementMethod->setMontant(($prix));
  480.      $PayementMethod->setSupp(($supp));
  481.      $PayementMethod->setTotal(($total));
  482.      $PayementMethod->setAdhesion($adhesion);
  483.      $PayementMethod->setPourcentage(($pourcentage));
  484.      $PayementMethod->setEvenementId($congrevide);
  485.      if($session->has('accompanientSend'))
  486.        {
  487.             $PayementMethod->setAccomp($session->get('accompanientSend'));
  488.        }
  489.       $PayementMethod->setNom($session->get('nom'));
  490.       $PayementMethod->setEmail($session->get('emailSend'));
  491.       $PayementMethod->setPrenom($session->get('prenom'));
  492.       $PayementMethod->setPhone($session->get('phone'));
  493.      
  494.      $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  495.      $PayementMethod->setPai(0);
  496.      $em->persist($PayementMethod);
  497.      $em->flush();
  498.      $result=json_decode($result);
  499.         
  500.      $idorder_number $em->createQueryBuilder()
  501.      ->select('MAX(e.id)')
  502.      ->from('App\Entity\PayementMethod''e')
  503.      ->getQuery()
  504.      ->getSingleScalarResult();
  505.      $session->set('idpaiment'$idorder_number);
  506.      header('Location: '.$result->formUrl);
  507.      exit();
  508.       
  509.     }
  510.     public function indexautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  511.     {
  512.         
  513.       $ret=false;
  514.       $session $this->requestStack->getSession();
  515.      
  516.       $repository $doctrine->getRepository(PrixVariable::class);
  517.       $etape $repository->findAll();    
  518.       foreach($etape as $a)
  519.       {
  520.         /********** verification prix and paimenet congre */
  521.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  522.           {
  523.            
  524.              $id_event=$a->getEvenementprixId();
  525.              
  526.              $repository $doctrine->getRepository(EvenementAVenir::class);
  527.                   $p $repository->findBy(
  528.                     ['id' => $id_event,'desplay'=>true]
  529.             );
  530.             if(count($p)>0)
  531.             { 
  532.               $ret=true;
  533.             }
  534.             else
  535.             {
  536.               echo "évenement non disponible .";
  537.               exit();
  538.             }
  539.           }
  540.         
  541.           
  542.       }
  543.       if($ret)
  544.       {
  545.         $repository $doctrine->getRepository(PrixVariable::class);
  546.                   $p $repository->findBy(
  547.                     ['id' => $idprix]
  548.             );
  549.            $prix$p[0]->getPrix();
  550.             if($session->get('type')=="Non adhérent"$prix+=5;
  551.            $session->set('prix'$prix);
  552.            $session->set('idevenement'$id);
  553.            $session->set('idprix'$idprix);
  554.          
  555.       }
  556.       else
  557.       {
  558.         echo "erreur";exit();
  559.       }
  560.       $repository $doctrine->getRepository(ConnexionUser::class);
  561.       $px $repository->findBy(['email' => $session->get('email')]);
  562.       if($id!=52)
  563.       {
  564.         if(count($px)>0)
  565.         {
  566.           
  567.          
  568.         }
  569.         else
  570.         {
  571.          echo "Erreur";exit();
  572.         }
  573.       }
  574.         
  575.       /*
  576.         
  577.         //Afficher le résultat
  578.         var_dump($result);*/
  579.         $repository $doctrine->getRepository(PayementMethod::class);
  580.         $p $repository->findAll(
  581.          
  582.           array('id' => 'DESC'),
  583.           1,
  584.           0
  585.         );
  586.         $em $doctrine->getManager();
  587.         $order_number $em->createQueryBuilder()
  588.     ->select('MAX(e.orderNumber)')
  589.     ->from('App\Entity\PayementMethod''e')
  590.     ->getQuery()
  591.     ->getSingleScalarResult();
  592.     /************** */
  593.     $repository $doctrine->getRepository(EvenementAVenir::class);
  594.     $congrevide $repository->find($id);
  595.     $repository $doctrine->getRepository(ConnexionUser::class);
  596.     if($id!=52)
  597.     {
  598.       $userconnexion $repository->find($px[0]->getId());
  599.     }else
  600.     {
  601.       $userconnexion null;
  602.     }
  603.    
  604.     $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  605.       ['email' =>  $session->get('email'),'evenementautre'=>$id,'pai'=>1]  
  606.          );
  607.        
  608.          if(count($connexionverif)>0)
  609.          {
  610.          
  611.          
  612.        
  613.           
  614.           return $this->render('paiment/retour.html.twig', array(
  615.             'name'=>"",'depositAmount'=>"",
  616.             'ErrorCode'=>1,
  617.             'ErrorMessage'=>"Vous étes inscrit a la formation "
  618.         ));
  619.          }
  620.          /****** inscription fermé */
  621.          $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  622.           ['evenementautre' => $id'pai' => true]
  623.         );
  624.         $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  625.           ['evenementautre' => $id,'surplace' => true]
  626.         );
  627.         
  628.          
  629.              if(count($connexionverif)+count($connexionverifsurplace)>32)
  630.              {
  631.              
  632.              
  633.            
  634.               
  635.               return $this->render('paiment/retour.html.twig', array(
  636.                 'name'=>"",'depositAmount'=>"",
  637.                 'ErrorCode'=>1,
  638.                 'ErrorMessage'=>"Inscription fermé"
  639.             ));
  640.              }
  641.        
  642. /******* */
  643. /******* */
  644.    
  645.      $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';
  646.     
  647.      $ch curl_init();  
  648.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  649.      curl_setopt($chCURLOPT_URL$url); 
  650.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  651.      $result curl_exec($ch); 
  652.      $PayementMethod = new PayementMethod();
  653.      $PayementMethod->setOrderNumber($order_number+1);
  654.      $PayementMethod->setUrl("1");
  655.      if($id==49)
  656.      {
  657.       $PayementMethod->setPhone(($session->get('evenementspecifique')));
  658.      }
  659.      $PayementMethod->setMontant(($prix));
  660.      $PayementMethod->setEvenementautre($congrevide);
  661.      $PayementMethod->setNom($session->get('nom'));
  662.       $PayementMethod->setEmail($session->get('emailSend'));
  663.       $PayementMethod->setPrenom($session->get('prenom'));
  664.       $PayementMethod->setPhone($session->get('phone'));
  665.                $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  666.      $PayementMethod->setPai(0);
  667.      $em->persist($PayementMethod);
  668.      $em->flush();
  669.      $result=json_decode($result);
  670.      if(isset($result->errorCode))
  671.      {
  672.        if($result->errorCode!=0)
  673.        {
  674.         return $this->render('paiment/retour.html.twig', array(
  675.           'name'=>"",'depositAmount'=>"",
  676.           'ErrorCode'=>1,
  677.           'ErrorMessage'=>($order_number+1)."  ".$result->errorMessage
  678.       ));
  679.        }
  680.      }
  681.     /* var_dump($result);
  682.      echo $result->formUrl;*/
  683.      $idorder_number $em->createQueryBuilder()
  684.      ->select('MAX(e.id)')
  685.      ->from('App\Entity\PayementMethod''e')
  686.      ->getQuery()
  687.      ->getSingleScalarResult();
  688.      $session->set('idpaiment'$idorder_number);
  689.      header('Location: '.$result->formUrl);
  690.      exit();
  691.       
  692.     }
  693. public function indexsurplace(ManagerRegistry $doctrine,Request $request,$id,$idprix,$supp)
  694. {
  695.   $suppadd=0;
  696.   if($supp != 65 && $supp != 145 && $supp != 165 && $supp != 125 &&  $supp != 0)
  697.   {
  698.     echo "Erreur au niveau de prix .<br>merci de retour a la page accueil <a href='/'>accueil</a>";
  699.     exit();
  700.   }
  701.   else
  702.   {
  703.     
  704.   }
  705.       $ret=false;
  706.       $session $this->requestStack->getSession();
  707.      /* if ( $session->has('idpp')){
  708.         $session->remove('idpp');
  709.         return $this->render('paiment/retour.html.twig', array(
  710.           'name'=>"",'depositAmount'=>"",
  711.           'ErrorCode'=>1,
  712.           'ErrorMessage'=>"Erreur"
  713.       ));
  714.     }*/
  715.       $repository $doctrine->getRepository(PrixVariableCongre::class);
  716.       $etape $repository->findAll();    
  717.       foreach($etape as $a)
  718.       {
  719.       
  720.         /********** verification prix and paimenet congre */
  721.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  722.           {
  723.           
  724.              $id_event=$a->getEvenementprixId();
  725.              $repository $doctrine->getRepository(Congre::class);
  726.                   $p $repository->findBy(
  727.                     ['id' => $id_event,'desplay'=>true]
  728.             );
  729.             if(count($p)>0)
  730.             { 
  731.               $ret=true;
  732.             }
  733.             else
  734.             {
  735.               echo "évenement non disponible .";
  736.               exit();
  737.             }
  738.           }  
  739.       }
  740.       if($ret)
  741.       {
  742.         $repository $doctrine->getRepository(PrixVariableCongre::class);
  743.                   $p $repository->findBy(
  744.                     ['id' => $idprix]
  745.             );
  746.            $prix$p[0]->getPrix();
  747.           
  748.            $session->set('prix'$prix);
  749.            $session->set('idevenement'$id);
  750.            $session->set('idprix'$idprix);  
  751.       }
  752.       else
  753.       {
  754.         echo "merci de retour a la page accueil <a href='/'>accueil</a>";exit();
  755.       }
  756.       $repository $doctrine->getRepository(ConnexionUser::class);
  757.       $px $repository->findBy(['email' => $session->get('email')]);
  758.          if(count($px)>0)
  759.           {
  760.             
  761.            
  762.           }
  763.           else
  764.           {
  765.             echo "Merci de connecter <a href='/connexion/'>connexion</a>";exit();
  766.           }
  767.         $repository $doctrine->getRepository(PayementMethod::class);
  768.         $p $repository->findAll(
  769.           array('id' => 'DESC'),
  770.           1,
  771.           0
  772.         );
  773.        
  774.         /************** */
  775.         $repository $doctrine->getRepository(Congre::class);
  776.         $congrevide $repository->find($id);
  777.         $repository $doctrine->getRepository(ConnexionUser::class);
  778.         $userconnexion $repository->find($px[0]->getId());
  779.         $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  780.           ['id_user' =>  $userconnexion->getId(),'evenementId'=>$id]  
  781.              );
  782.            
  783.              if(count($connexionverif)>0)
  784.              {
  785.              
  786.              
  787.            
  788.               
  789.               return $this->render('paiment/retour.html.twig', array(
  790.                 'name'=>"",'depositAmount'=>"",
  791.                 'ErrorCode'=>1,
  792.                 'ErrorMessage'=>"Vous étes inscrit a la formation "
  793.             ));
  794.              }
  795.            
  796. /******* */
  797. $total=$supp+$prix;
  798. $adhesion=0;
  799.         $em $doctrine->getManager();
  800.         $order_number $em->createQueryBuilder()
  801.           ->select('MAX(e.orderNumber)')
  802.           ->from('App\Entity\PayementMethod''e')
  803.           ->getQuery()
  804.           ->getSingleScalarResult();
  805.               $PayementMethod = new PayementMethod();
  806.               $PayementMethod->setOrderNumber($order_number+1);
  807.               $PayementMethod->setUrl("00");
  808.               $PayementMethod->setMontant(($prix));
  809.               $PayementMethod->setSupp(($supp));
  810.               $PayementMethod->setTotal(($total));
  811.               $PayementMethod->setAdhesion($adhesion);
  812.               $PayementMethod->setPourcentage((0));
  813.               $PayementMethod->setEvenementId($congrevide);
  814.               $PayementMethod->setIdUser($userconnexion);
  815.               $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  816.               $PayementMethod->setPai(0);
  817.               $em->persist($PayementMethod);
  818.               $em->flush();
  819.               $session->set('idpp'"0");  
  820.               return $this->render('paiment/retour.html.twig', array(
  821.                 'name'=>"",'depositAmount'=>"",
  822.                 'ErrorCode'=>-1,
  823.                 'ErrorMessage'=>""
  824.             ));
  825.     }
  826.     public function indexsurplaceautre(ManagerRegistry $doctrine,Request $request,$id,$idprix)
  827. {
  828.       $ret=false;
  829.       $session $this->requestStack->getSession();
  830.       if ( $session->has('idpp')){
  831.         $session->remove('idpp');
  832.         return $this->render('paiment/retour.html.twig', array(
  833.           'name'=>"",'depositAmount'=>"",
  834.           'ErrorCode'=>1,
  835.           'ErrorMessage'=>"Erreur"
  836.       ));
  837.     }
  838.       $repository $doctrine->getRepository(PrixVariable::class);
  839.       $etape $repository->findAll();    
  840.       foreach($etape as $a)
  841.       {
  842.         /********** verification prix and paimenet congre */
  843.           if($a->getEvenementprixId()==$id && $a->getId()==$idprix)
  844.           {
  845.            
  846.              $id_event=$a->getEvenementprixId();
  847.              $repository $doctrine->getRepository(EvenementAVenir::class);
  848.                   $p $repository->findBy(
  849.                     ['id' => $id_event,'desplay'=>true]
  850.             );
  851.             if(count($p)>0)
  852.             { 
  853.               $ret=true;
  854.             }
  855.             else
  856.             {
  857.               echo "évenement non disponible .";
  858.               exit();
  859.             }
  860.           }  
  861.       }
  862.       if($ret)
  863.       {
  864.         $repository $doctrine->getRepository(PrixVariable::class);
  865.                   $p $repository->findBy(
  866.                     ['id' => $idprix]
  867.             );
  868.            $prix$p[0]->getPrix();
  869.           
  870.            $session->set('prix'$prix);
  871.            $session->set('idevenement'$id);
  872.            $session->set('idprix'$idprix);  
  873.       }
  874.       else
  875.       {
  876.         echo "erreur3";exit();
  877.       }
  878.       $repository $doctrine->getRepository(ConnexionUser::class);
  879.       $px $repository->findBy(['email' => $session->get('email')]);
  880.          if(count($px)>0)
  881.           {
  882.             
  883.            
  884.           }
  885.           else
  886.           {
  887.            echo "Erreur";exit();
  888.           }
  889. /************** */
  890. $repository $doctrine->getRepository(EvenementAVenir::class);
  891. $congrevide $repository->find($id);
  892. $repository $doctrine->getRepository(ConnexionUser::class);
  893. $userconnexion $repository->find($px[0]->getId());
  894. /***** *addd supppp code ejay na7yyha y anis  */
  895. /**************** */
  896. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  897.   ['id_user' =>  $userconnexion->getId(),'evenementautre'=>$id,'surplace'=>1]  
  898.      );
  899.    
  900.      if(count($connexionverif)>0)
  901.      {
  902.      
  903.      
  904.    
  905.       
  906.       return $this->render('paiment/retour.html.twig', array(
  907.         'name'=>"",'depositAmount'=>"",
  908.         'ErrorCode'=>1,
  909.         'ErrorMessage'=>"Vous étes inscrit a la formation "
  910.     ));
  911.      }
  912.     
  913. /******* */
  914. $connexionverif $doctrine->getRepository(PayementMethod::class)->findBy(
  915.   ['evenementautre' => $id'pai' => true]
  916. );
  917. $connexionverifsurplace $doctrine->getRepository(PayementMethod::class)->findBy(
  918.   ['evenementautre' => $id,'surplace' => true]
  919. );
  920.  
  921.      if(count($connexionverif)+count($connexionverifsurplace)>32)
  922.      {
  923.      
  924.      
  925.    
  926.       
  927.       return $this->render('paiment/retour.html.twig', array(
  928.         'name'=>"",'depositAmount'=>"",
  929.         'ErrorCode'=>1,
  930.         'ErrorMessage'=>"Inscription fermé"
  931.     ));
  932.      }
  933.         $repository $doctrine->getRepository(PayementMethod::class);
  934.         $p $repository->findAll(
  935.           array('id' => 'DESC'),
  936.           1,
  937.           0
  938.         );
  939.         $em $doctrine->getManager();
  940.         $order_number $em->createQueryBuilder()
  941.           ->select('MAX(e.orderNumber)')
  942.           ->from('App\Entity\PayementMethod''e')
  943.           ->getQuery()
  944.           ->getSingleScalarResult();
  945.               /************** */
  946.     $repository $doctrine->getRepository(EvenementAVenir::class);
  947.     $congrevide $repository->find($id);
  948.     $repository $doctrine->getRepository(ConnexionUser::class);
  949.     $userconnexion $repository->find($px[0]->getId());
  950. /******* */
  951. $repository $doctrine->getRepository(PayementMethod::class);
  952.     $count $repository->findAll();
  953. $countcount($count);
  954.   $PayementMethod = new PayementMethod();
  955.   $PayementMethod->setOrderNumber($order_number+1);
  956.   $PayementMethod->setUrl("01");
  957.   $PayementMethod->setMontant(($prix));
  958.   $PayementMethod->setEvenementautre($congrevide);
  959.   $PayementMethod->setIdUser($userconnexion);
  960.   
  961.    $ddate=date("Y-m-d h:i:s");$PayementMethod->setDateAd(\DateTime::createFromFormat("Y-m-d h:i:s",$ddate));
  962.   $PayementMethod->setPai(0);
  963.   $PayementMethod->setSurPlace(1);
  964.   $em->persist($PayementMethod);
  965.   $em->flush();
  966.   $session->set('idpp'"0");  
  967.   return $this->render('paiment/retour.html.twig', array(
  968.     'name'=>"",'depositAmount'=>"",
  969.     'ErrorCode'=>-1,
  970.     'ErrorMessage'=>""
  971. ));
  972.            
  973.     }
  974.      
  975.    
  976.     public function retourPaiment(ManagerRegistry $doctrine,Request $request)
  977.     {
  978.     
  979.       $session $this->requestStack->getSession();
  980.       
  981.       $session->remove('evenementspecifique');
  982.     $session $this->requestStack->getSession();
  983.   
  984.      $orderId$_GET['orderId'];
  985.      $em $this->getDoctrine()->getManager();
  986.      $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  987.  
  988.      if (!$product) {
  989.          throw $this->createNotFoundException(
  990.              'Erreur '
  991.          );
  992.      }
  993.  
  994.      $product->setOrdernumberid($orderId);
  995.      $em->flush();
  996.      $session->set('idppt'"0");  
  997.      $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  998.      $ch curl_init();  
  999.      curl_setopt($chCURLOPT_RETURNTRANSFER1); 
  1000.      curl_setopt($chCURLOPT_URL$url); 
  1001.      curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
  1002.      $result curl_exec($ch); 
  1003.      $result=json_decode($result);
  1004.      $name=$result->cardholderName;
  1005.      $depositAmount=$result->depositAmount;
  1006.      $ErrorCode=$result->ErrorCode;
  1007.      $ErrorMessage=$result->ErrorMessage;
  1008.      if($ErrorCode==0)
  1009.      {
  1010.       $em $this->getDoctrine()->getManager();
  1011.       $product $em->getRepository(PayementMethod::class)->find($session->get('idpaiment'));
  1012.   
  1013.       if (!$product) {
  1014.           throw $this->createNotFoundException(
  1015.               'Erreur '
  1016.           );
  1017.       }
  1018.       if($session->has("adherent_paiment") && $session->get("adherent_paiment")==true)
  1019.       {
  1020.         $product->setUrl("123456789");
  1021.       }
  1022.       $product->setPai(1);
  1023.       $em->flush();
  1024.       $session->set('idppt'"0");  
  1025.      }
  1026.  
  1027.      
  1028.       return $this->render('paiment/retour.html.twig', array(
  1029.         'name'=>$name,'depositAmount'=>$depositAmount,
  1030.         'ErrorCode'=>$ErrorCode,
  1031.         'ErrorMessage'=>$ErrorMessage
  1032.     ));
  1033.     }
  1034.     public function testanis()
  1035.     {
  1036.       /*$orderId= '59a7c903-5260-4dae-b769-322208e295d7';
  1037.       $url='https://ipay.clictopay.com/payment/rest/getOrderStatus.do?orderId='.$orderId.'&language=en&password=I7Vh2o1e&userName=0799902085';
  1038.       $ch = curl_init();  
  1039.       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  1040.       curl_setopt($ch, CURLOPT_URL, $url); 
  1041.       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  1042.       $result = curl_exec($ch); 
  1043.       $result=json_decode($result);
  1044.       print_r($result);*/
  1045.     exit();
  1046.   }
  1047.   public function omar()
  1048.   {
  1049.     $em $this->getDoctrine()->getManager();
  1050.     $productRepository $em->getRepository(EvenementFormulaire::class);
  1051.     
  1052.     // Utilisez la méthode findAll() pour récupérer toutes les données
  1053.     $products $productRepository->findAll();
  1054.     
  1055.     // Affichez les données pour déboguer
  1056.     
  1057.     return $this->render('omar/liste.html.twig', array(
  1058.       'product'=>$products
  1059.   ));
  1060.     
  1061.   }
  1062.     
  1063. }