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