src/Controller/MembershipController.php line 1336

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Symfony\Component\String\Slugger\SluggerInterface;
  13. use App\Services\RoleService;
  14. use App\Services\Utils;
  15. use App\Services\FileUploader;
  16. use App\Form\DicType;
  17. use App\Form\SepaType;
  18. use App\Form\retraite\FicTypeRetraite;
  19. use App\Form\retraite\BaTypeRetraite;
  20. use App\Form\epargne\FicTypeEpargne;
  21. use App\Form\epargne\BaTypeEpargne;
  22. use App\Entity\User;
  23. use App\Entity\Dic;
  24. use App\Entity\Fic;
  25. use App\Entity\Ba;
  26. use App\Entity\FileSend;
  27. use App\Entity\Membership;
  28. use App\Entity\OtherContract;
  29. use App\Entity\Beneficiaire;
  30. use GuzzleHttp\Client;
  31. class MembershipController extends AbstractController
  32. {
  33.     protected $em;
  34.     private $targetDirectory;
  35.     public function __construct(EntityManagerInterface $entityManager\Swift_Mailer $mailerUtils $utilsFileUploader $fileUploaderRoleService $roleService) {
  36.         $this->em $entityManager;
  37.         $this->mailer $mailer;
  38.         $this->utils $utils;
  39.         $this->fileUploader $fileUploader;
  40.         $this->roleService $roleService;
  41.     }
  42.     /**
  43.      * @Route("/customer/{userID}/memberships", name="membership_list")
  44.      */
  45.     public function listByCustomer($userID): Response
  46.     {
  47.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  48.         if($userID == "me"){
  49.             $userID $userCurrent->getId();
  50.         }
  51.         $memberships $this->em
  52.                 ->getRepository(Membership::class)
  53.                 ->findBy(['user' => $userID]);
  54.         $customer $this->em
  55.                 ->getRepository(User::class)
  56.                 ->findOneBy(['id' => $userID]);
  57.         if(!$customer){
  58.             $this->addFlash('danger''Cette adhésion n\'existe pas.');
  59.             return $this->redirectToRoute('app_login');
  60.         }
  61.         if(count($memberships) == 1){
  62.             //redirect if single
  63.             if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  64.                 return $this->redirectToRoute('membership_view', array("userID" => "me""membershipID" => $memberships[0]->getId()));
  65.             }
  66.             else{
  67.                 $numberProduct 0;
  68.                 if($userCurrent->isSellerCanRetraite()){
  69.                     $numberProduct++;
  70.                 }
  71.                 if($userCurrent->isSellerCanEpargne()){
  72.                     $numberProduct++;
  73.                 }
  74.                 if($numberProduct 2){
  75.                     return $this->redirectToRoute('membership_view', array("userID" => $customer->getId(), "membershipID" => $memberships[0]->getId()));
  76.                 }
  77.             }
  78.             
  79.         }
  80.         return $this->render('membership/list.html.twig', [
  81.             'menu' => 'customer',
  82.             'memberships' => $memberships,
  83.             'customer' => $customer
  84.         ]);
  85.     }
  86.     /**
  87.      * @Route("/customer/{userID}/membership/{membershipID}/view/{productType}", name="membership_view")
  88.      */
  89.     public function view(Request $requestSluggerInterface $slugger$userID$membershipID$productType null): Response
  90.     {
  91.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  92.         if($userID == "me"){
  93.             $userID $userCurrent->getId();
  94.         }
  95.         $customer $this->em
  96.             ->getRepository(User::class)
  97.             ->findOneBy(['id' => $userID]);
  98.         if(!$customer){
  99.             $this->addFlash('danger''Le client n\'existe pas.');
  100.             return $this->redirectToRoute('customer_list');
  101.         }
  102.         if($membershipID == "new"){
  103.             if($productType != "epargne" && $productType != "retraite"){
  104.                 $this->addFlash('danger''Le produit n\'existe pas.');
  105.                 return $this->redirectToRoute('customer_list');
  106.             }
  107.             $membershipExist $this->em
  108.                 ->getRepository(Membership::class)
  109.                 ->findOneBy(['user' => $customer'product' => $productType]);
  110.             if($membershipExist){
  111.                 $this->addFlash('danger''Il existe déjà une adhésion pour ce prospect, avec le même produit');
  112.                 return $this->redirectToRoute('customer_list');
  113.             }
  114.             //If no membership
  115.             $membershipCurrent $this->utils->createMembershipByProduct($customer$productType$userCurrent);
  116.             if($membershipCurrent->getFic()){
  117.                 $membershipCurrent->getFic()->setAcceptRecevoirDocumentGarantieEmail($customer->isAcceptRecevoirDocumentGarantieEmail());
  118.                 $membershipCurrent->getFic()->setAcceptPropositionCommercialEmail($customer->isAcceptPropositionCommercialEmail());
  119.                 $membershipCurrent->getFic()->setAcceptPropositionCommercialTelephone($customer->isAcceptPropositionCommercialTelephone());
  120.             }
  121.             $membershipCurrent->getBa()->setAcceptRecevoirDocumentGarantieEmail($customer->isAcceptRecevoirDocumentGarantieEmail());
  122.             $membershipCurrent->getBa()->setAcceptPropositionCommercialEmail($customer->isAcceptPropositionCommercialEmail());
  123.             $membershipCurrent->getBa()->setAcceptPropositionCommercialTelephone($customer->isAcceptPropositionCommercialTelephone());
  124.             //Create unique number for yousign, systempay
  125.             $membershipCurrent->setNumberMembershipFolder(date("Ymd").$membershipCurrent->getId());
  126.             //Set the seller -> IN utils.php
  127.             /*
  128.             if($this->roleService->isGranted('ROLE_SELLER', $userCurrent)){   
  129.                 $membershipCurrent->setSeller($userCurrent);
  130.             }
  131.             */
  132.             $this->em->persist($membershipCurrent);
  133.             $this->em->flush();
  134.         } 
  135.         else{ 
  136.             $membershipCurrent $this->em
  137.                 ->getRepository(Membership::class)
  138.                 ->findOneBy(['id' => $membershipID]);
  139.             if(!$membershipCurrent){
  140.                 $this->addFlash('danger''Le produit n\'existe pas.');
  141.                 return $this->redirectToRoute('customer_list');
  142.             }
  143.             if (!$membershipCurrent->getSeller()) {
  144.                 $this->addFlash('danger''Cette page n\'existe pas');
  145.                 return $this->redirectToRoute('customer_list');
  146.             }
  147.             if(!$this->roleService->isGranted('ROLE_ADMIN'$userCurrent)){     
  148.                 if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){     
  149.                     if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  150.                         $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  151.                         return $this->redirectToRoute('customer_list');
  152.                     }
  153.                 } 
  154.                 else if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  155.                     if ($customer->getId() != $userCurrent->getId()) {
  156.                         $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  157.                         return $this->redirectToRoute('app_login');
  158.                     }
  159.                 }
  160.                 else{
  161.                     $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  162.                     return $this->redirectToRoute('app_login');
  163.                 }
  164.             }
  165.         }
  166.         //Configure BIC and BA
  167.         $baId $membershipCurrent->getBa()->getId();
  168.         if($membershipCurrent->getFic()){
  169.             $ficId $membershipCurrent->getFic()->getId();
  170.         }
  171.         else{
  172.             $ficId null;
  173.         }
  174.         
  175.         if($this->roleService->isGranted('ROLE_SELLER'$userCurrent) || $this->roleService->isGranted('ROLE_ADMIN'$userCurrent)){     
  176.             return $this->render('membership/view.html.twig', [
  177.                 'menu' => 'customer',
  178.                 "customer" => $customer,
  179.                 "baId" => $baId,
  180.                 "ficId" => $ficId,
  181.                 "membership" => $membershipCurrent
  182.             ]);
  183.         }
  184.         else if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){     
  185.             //V2 PLATFORM (FIC AND NOT DIC)
  186.             return $this->render('membership/view-me.html.twig', [
  187.                 'menu' => 'customer',
  188.                 "customer" => $customer,
  189.                 "baId" => $baId,
  190.                 "ficId" => $ficId,
  191.                 "membership" => $membershipCurrent
  192.             ]);
  193.         }
  194.         else{
  195.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  196.             return $this->redirectToRoute('app_login');
  197.         }
  198.     }
  199.     /**
  200.      * @Route("/customer/{userID}/membership/dic/{dicID}/update", name="membership_dic_update")
  201.      */
  202.     public function dicUpdate(Request $request$userID$dicID): Response
  203.     {   
  204.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  205.         $customer $this->em
  206.                 ->getRepository(User::class)
  207.                 ->findOneBy(['id' => $userID]);
  208.         if(!$customer){
  209.             $this->addFlash('danger''Le client n\'existe pas.');
  210.             return $this->redirectToRoute('customer_list');
  211.         }
  212.         if (!$customer->getSeller()) {
  213.             $this->addFlash('danger''Cette page n\'existe pas');
  214.             return $this->redirectToRoute('customer_list');
  215.         }
  216.         if ($customer->getSeller()->getId() != $userCurrent->getId()) {
  217.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  218.             return $this->redirectToRoute('customer_list');
  219.         }
  220.         //If no membership
  221.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  222.         if($dicID == "new-dic"){
  223.             $typeForm "Ajouter";
  224.             $dic = new Dic;            
  225.         }
  226.         else{
  227.             $dic $this->em
  228.                 ->getRepository(Dic::class)
  229.                 ->findOneBy(['id' => $dicID]);
  230.             if(!$dic){
  231.                 $this->addFlash('danger''Ce document n\'existe pas');
  232.                 return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
  233.             }
  234.             if(!$dic->getMembership()){
  235.                 $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  236.                 return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
  237.             }
  238.             if($membershipCurrent->getUser()->getId() != $dic->getMembership()->getUser()->getId()){
  239.                 $this->addFlash('danger''Ce document ne correspond pas au bon client');
  240.                 return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
  241.             }
  242.             $typeForm "Modifier";
  243.         }
  244.         if ( $typeForm == 'Ajouter' ) {
  245.             $form $this->createForm(DicType::class, $dic, Array("validation_groups" => "update"));
  246.         } else {
  247.             $form $this->createForm(DicType::class, $dic, Array("validation_groups" => "update"));
  248.         }
  249.         $form->handleRequest($request);
  250.         if($form->isSubmitted() && $form->isValid()) {
  251.             if($dic->getDateDeNaissance()){
  252.                 $dateDeNaissance str_replace("/""-"$dic->getDateDeNaissance());
  253.                 $dic->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissance))));
  254.             } else{
  255.                 $dic->setDateDeNaissance(null);
  256.             }
  257.             if($dic->getNePasRepondreACeQuestionnaire() == true){
  258.                 $this->em->remove($dic);
  259.                 $dic = new Dic
  260.                 $dic->setNePasRepondreACeQuestionnaire(true);
  261.             }
  262.             $dic->setStatus(null);
  263.             
  264.             $dic->setCodeConseiller($customer->getSeller()->getCodeConseiller());
  265.             $dic->setNomConseiller($customer->getSeller()->getFirstName()." ".$customer->getSeller()->getLastName());
  266.             $dic->setTelConseiller($customer->getSeller()->getPhone());
  267.             $dic->setNumeroSiren($customer->getSeller()->getNumeroSiren());
  268.             $dic->setAdherentDistributeur($customer->getAdherentDistributeur());
  269.             
  270.             $dic->setSex($customer->getSex());
  271.             $dic->setNom($customer->getLastName());
  272.             $dic->setPrenom($customer->getFirstName());
  273.             $dic->setDateDeNaissance($customer->getDateDeNaissance());
  274.             $dic->setAdresseFiscale($customer->getNumeroDeVoie());
  275.             $dic->setAdresseFiscaleCodePostal($customer->getCodePostal());
  276.             $dic->setAdresseFiscaleVille($customer->getVille());
  277.             $dic->setAdresseFiscalePays($customer->getPays());
  278.             $membershipCurrent->setDic($dic);
  279.             $membershipCurrent->setStatus("DRAFT");
  280.             $this->em->persist($dic);
  281.             $this->em->persist($membershipCurrent);
  282.             $this->em->flush();
  283.             $andContinue false;
  284.             if($form->get('saveAndContinue')->isClicked()){
  285.                 $andContinue true;
  286.             }
  287.             if($andContinue){
  288.                 $dic->setStatus("VALID");
  289.                 $membershipCurrent->setValidatedDicStatus(null);
  290.                 $membershipCurrent->setValidatedbaStatus(null);
  291.                 $membershipCurrent->setValidatedSepaStatus(null);
  292.                 $membershipCurrent->setValidatedStatusStatus(null);
  293.                 $membershipCurrent->getBa()->setStatus(null);
  294.                 $membershipCurrent->getBa()->setSepaStatus(null);
  295.                 $membershipCurrent->setValidatedFolderBySeller(null);
  296.                 $this->em->persist($membershipCurrent);
  297.                 $this->em->persist($dic);
  298.                 $this->em->flush();
  299.                 $this->addFlash('success'"Le document d’information et de conseil a été modifié.");
  300.                 return $this->redirectToRoute('membership_dic_view', ["userID" => $membershipCurrent->getUser()->getId() , "dicID" => $dic->getId()]);
  301.             }
  302.             else{
  303.                 if($request->get('dic')['validDocument'] == "true"){
  304.                     $dic->setStatus("VALID");
  305.                     $membershipCurrent->setValidatedFolderBySeller(null);
  306.                     $this->em->persist($membershipCurrent);
  307.                     $this->em->persist($dic);
  308.                     $this->em->flush();
  309.                 }
  310.                 else{
  311.                     $membershipCurrent->getDic()->setStatus(null);
  312.                     $membershipCurrent->getBa()->setStatus(null);
  313.                     $membershipCurrent->getBa()->setSepaStatus(null);
  314.                     $membershipCurrent->setValidatedFolderBySeller(null);
  315.                     $this->em->persist($membershipCurrent);
  316.                     $this->em->flush();
  317.                 }
  318.                 $this->addFlash('success'"Le document d’information et de conseil a été modifié.");
  319.                 return $this->redirectToRoute('customer_view', ["userID" => $customer->getId()]);
  320.             }
  321.         }
  322.         return $this->render('membership/retraite/dicUpdate.html.twig', [
  323.             'menu' => 'customer',
  324.             'form' => $form->createView(),
  325.             'customer' => $customer,
  326.             "seller" => $userCurrent,
  327.             'dic' => $dic,
  328.             'typeForm' => $typeForm
  329.         ]);
  330.     }
  331.     /**
  332.      * @Route("/customer/{userID}/membership/dic/{dicID}/view", name="membership_dic_view")
  333.      */
  334.     public function dicView(Request $request$userID$dicID){
  335.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  336.         $customer $this->em
  337.             ->getRepository(User::class)
  338.             ->find($userID);
  339.         if(!$customer){
  340.             $this->addFlash('danger''Le client n\'existe pas.');
  341.             return $this->redirectToRoute('customer_list');
  342.         }
  343.         if (!$customer->getSeller()) {
  344.             $this->addFlash('danger''Cette page n\'existe pas');
  345.             return $this->redirectToRoute('customer_list');
  346.         }
  347.         if ($customer->getSeller()->getId() != $userCurrent->getId()) {
  348.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  349.             return $this->redirectToRoute('customer_list');
  350.         }
  351.         //If no membership
  352.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  353.         $dic $this->em
  354.             ->getRepository(Dic::class)
  355.             ->findOneBy(['id' => $dicID]);
  356.         if(!$dic){
  357.             $this->addFlash('danger''Ce document n\'existe pas');
  358.             return $this->redirectToRoute('customer_list');
  359.         }
  360.         if(!$dic->getMembership()){
  361.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  362.             return $this->redirectToRoute('customer_list');
  363.         }
  364.         if($membershipCurrent->getUser()->getId() != $dic->getMembership()->getUser()->getId()){
  365.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  366.             return $this->redirectToRoute('customer_list');
  367.         }
  368.         //Generate dic file
  369.         $dicName $this->utils->generateDic($customer);
  370.         $dic->setUrlPdf($dicName);
  371.         $this->em->persist($dic);
  372.         $this->em->flush();
  373.         return $this->render('membership/dicView.html.twig', [
  374.             'menu' => 'customer',
  375.             'dic' => $dic,
  376.             'membership' => $membershipCurrent,
  377.             'customer' => $customer
  378.         ]);
  379.     }
  380.     /**
  381.      * @Route("/customer/{userID}/membership/fic/{ficID}/update", name="membership_fic_update")
  382.      */
  383.     public function ficUpdate(Request $request$userID$ficID): Response
  384.     {   
  385.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  386.         $customer $this->em
  387.                 ->getRepository(User::class)
  388.                 ->findOneBy(['id' => $userID]);
  389.         if(!$customer){
  390.             $this->addFlash('danger''Le client n\'existe pas.');
  391.             return $this->redirectToRoute('customer_list');
  392.         }
  393.         $fic $this->em
  394.             ->getRepository(Fic::class)
  395.             ->findOneBy(['id' => $ficID]);
  396.         if(!$fic){
  397.             $this->addFlash('danger''Ce document n\'existe pas');
  398.             return $this->redirectToRoute('customer_list');
  399.         }
  400.         if(!$fic->getMembership()){
  401.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  402.             return $this->redirectToRoute('customer_list');
  403.         }
  404.         $membershipCurrent $fic->getMembership();
  405.         if($membershipCurrent->getUser()->getId() != $fic->getMembership()->getUser()->getId()){
  406.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  407.             return $this->redirectToRoute('customer_list');
  408.         }
  409.         if (!$membershipCurrent->getSeller()) {
  410.             $this->addFlash('danger''Cette page n\'existe pas');
  411.             return $this->redirectToRoute('customer_list');
  412.         }
  413.         if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  414.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  415.             return $this->redirectToRoute('customer_list');
  416.         }
  417.         $typeForm "Modifier";
  418.         $productType $membershipCurrent->getProduct();
  419.         if ( $membershipCurrent->getProduct() == 'retraite' ) {
  420.             $form $this->createForm(FicTypeRetraite::class, $fic, Array("validation_groups" => "update"));
  421.         } 
  422.         else if($membershipCurrent->getProduct() == 'epargne') {
  423.             $form $this->createForm(FicTypeEpargne::class, $fic, Array("validation_groups" => "update"));
  424.         }
  425.         $form->handleRequest($request);
  426.         if($form->isSubmitted() && $form->isValid()) {
  427.             $useLegal1 false;
  428.             if($fic->getDateDeNaissance()){
  429.                 $dateDeNaissance str_replace("/""-"$fic->getDateDeNaissance());
  430.                 $fic->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissance))));
  431.                 if($this->isMineur($fic->getDateDeNaissance()->format("d/m/Y"))){
  432.                     $useLegal1 true;
  433.                 }
  434.             } else{
  435.                 $fic->setDateDeNaissance(null);
  436.             }
  437.             if($fic->getRepLegal1DateDeNaissance()){
  438.                 $dateDeNaissanceRepLeg1 str_replace("/""-"$fic->getRepLegal1DateDeNaissance());
  439.                 $fic->setRepLegal1DateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissanceRepLeg1))));
  440.             } else{
  441.                 $fic->setRepLegal1DateDeNaissance(null);
  442.             }
  443.             if($fic->getRepLegal2DateDeNaissance()){
  444.                 $dateDeNaissanceRepLeg2 str_replace("/""-"$fic->getRepLegal2DateDeNaissance());
  445.                 $fic->setRepLegal2DateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissanceRepLeg2))));
  446.             } else{
  447.                 $fic->setRepLegal2DateDeNaissance(null);
  448.             }
  449.             if($fic->isBeneficiezProtectionJuridique() == "0"){
  450.                 $useLegal1 true;
  451.             }
  452.             if($fic->getGarantieDateSouhaite()){
  453.                 //$dateSouhaite = str_replace("/", "-", $fic->getGarantieDateSouhaite());
  454.                 $fic->setGarantieDateSouhaite(new \DateTime("now"));
  455.             } else{
  456.                 $fic->setGarantieDateSouhaite(null);
  457.             }
  458.             $fic->setStatus(null);
  459.             $fic->setSex($customer->getSex());
  460.             $fic->setNom($customer->getLastName());
  461.             $fic->setPrenom($customer->getFirstName());
  462.             $fic->setDateDeNaissance($customer->getDateDeNaissance());
  463.             $fic->setAdresseFiscale($customer->getNumeroDeVoie());
  464.             $fic->setAdresseFiscaleCodePostal($customer->getCodePostal());
  465.             $fic->setAdresseFiscaleVille($customer->getVille());
  466.             $fic->setAdresseFiscalePays($customer->getPays());
  467.             //Legal 1 and 2
  468.             $fic->setRepLegal1Use($useLegal1);
  469.             $membershipCurrent->setWithRepresentantLegal1($fic->isRepLegal1Use());
  470.             $membershipCurrent->setWithRepresentantLegal2($fic->isRepLegal2Use());
  471.             //getDateReconnaisanceNation
  472.             if($fic->getDateReconnaisanceNation()){
  473.                 $dateReconnaisanceNation str_replace("/""-"$fic->getDateReconnaisanceNation());
  474.                 $dateReconnaisanceNation $dateReconnaisanceNation."-01-01";
  475.                 $fic->setDateReconnaisanceNation(new \DateTime(date("Y-m-d"strtotime($dateReconnaisanceNation))));
  476.             } else{
  477.                 $fic->setDateReconnaisanceNation(null);
  478.             }
  479.             //getGarantieDateSouhaite
  480.             /*
  481.                 if($fic->getGarantieDateSouhaite()){
  482.                     $garantieDateSouhaite = str_replace("/", "-", $fic->getGarantieDateSouhaite());
  483.                     $fic->setGarantieDateSouhaite(new \DateTime(date("Y-m-d", strtotime($garantieDateSouhaite))));
  484.                 } else{
  485.                     $fic->setGarantieDateSouhaite(null);
  486.                 }
  487.             */
  488.             $fic->setJacceptePreconisation(true);
  489.             $membershipCurrent->setFic($fic);
  490.             $membershipCurrent->setStatus("DRAFT");
  491.             $this->em->persist($fic);
  492.             $this->em->persist($membershipCurrent);
  493.             if($productType == "epargne"){
  494.                 $ba $membershipCurrent->getBa();
  495.                 $ba->setBeneficiezProtectionJuridique($fic->isBeneficiezProtectionJuridique());
  496.                 $ba->setProtectionJuridique($fic->getProtectionJuridique());
  497.                 $ba->setProtectionJuridiqueOther($fic->getProtectionJuridiqueOther());
  498.                 $ba->setProtectionJuridiqueMineur($fic->getProtectionJuridiqueMineur());
  499.                 //LEGAL 1 ///////////////
  500.                 $ba->setRepLegal1Use($fic->isRepLegal1Use());
  501.                 //Sexe
  502.                 $ba->setRepLegal1Sex($fic->getRepLegal1Sex());
  503.                 //Name
  504.                 $ba->setRepLegal1Nom($fic->getRepLegal1Nom());
  505.                 $ba->setRepLegal1Prenoms($fic->getRepLegal1Prenoms());
  506.                 //Naissance année
  507.                 $ba->setRepLegal1DateDeNaissance($fic->getRepLegal1DateDeNaissance());
  508.                 //Lieu naissance
  509.                 $ba->setRepLegal1LieuDeNaissance($fic->getRepLegal1LieuDeNaissance());
  510.                 //Nationalité
  511.                 $ba->setRepLegal1Nationalite($fic->getRepLegal1Nationalite());
  512.                 //GreenCard
  513.                 $ba->setRepLegal1GreenCard($fic->isRepLegal1GreenCard());
  514.                 //Résidence fiscal FR
  515.                 $ba->setRepLegal1ResidanceFiscalFrance($fic->isRepLegal1ResidanceFiscalFrance());
  516.                 //adresse fiscale
  517.                 $ba->setRepLegal1FiscalAdresse($fic->getRepLegal1FiscalAdresse());
  518.                 //code postale fiscal
  519.                 $ba->setRepLegal1FiscalCodePostal($fic->getRepLegal1FiscalCodePostal());
  520.                 //ville fiscal
  521.                 $ba->setRepLegal1FiscalVille($fic->getRepLegal1FiscalVille());
  522.                 //pays fiscal
  523.                 $ba->setRepLegal1FiscalPays($fic->getRepLegal1FiscalPays());
  524.                 //adresse postale
  525.                 $ba->setRepLegal1PostaleAdresse($fic->getRepLegal1PostaleAdresse());
  526.                 //code postale
  527.                 $ba->setRepLegal1PostaleCodePostal($fic->getRepLegal1PostaleCodePostal());
  528.                 //ville
  529.                 $ba->setRepLegal1PostaleVille($fic->getRepLegal1PostaleVille());
  530.                 //pays
  531.                 $ba->setRepLegal1PostalePays($fic->getRepLegal1PostalePays());
  532.                 //email
  533.                 $ba->setRepLegal1Email($fic->getRepLegal1Email());
  534.                 //téléphone
  535.                 $ba->setRepLegal1TelephonePortablePrefix($fic->getRepLegal1TelephonePortablePrefix());
  536.                 $ba->setRepLegal1TelephonePortable($fic->getRepLegal1TelephonePortable());
  537.                 //téléphone fixe
  538.                 $ba->setRepLegal1TelephonePrefix($fic->getRepLegal1TelephonePrefix());
  539.                 $ba->setRepLegal1Telephone($fic->getRepLegal1Telephone());
  540.                 //Agissant en qualite de 
  541.                 $ba->setRepLegal1QualiteDe($fic->getRepLegal1QualiteDe());
  542.                 //J'accepte 1
  543.                 $ba->setRepLegal1AcceptRecevoirDocumentGarantieEmail($fic->isRepLegal1AcceptRecevoirDocumentGarantieEmail());
  544.                 $ba->setRepLegal1AcceptPropositionCommercialEmail($fic->isRepLegal1AcceptPropositionCommercialEmail());
  545.                 $ba->setRepLegal1AcceptPropositionCommercialTelephone($fic->isRepLegal1AcceptPropositionCommercialTelephone());
  546.                 //LEGAL 2 ///////////////
  547.                 $ba->setRepLegal2Use($fic->isRepLegal2Use());
  548.                 //Sexe
  549.                 $ba->setRepLegal2Sex($fic->getRepLegal2Sex());
  550.                 //Name
  551.                 $ba->setRepLegal2Nom($fic->getRepLegal2Nom());
  552.                 $ba->setRepLegal2Prenoms($fic->getRepLegal2Prenoms());
  553.                 //Naissance année
  554.                 $ba->setRepLegal2DateDeNaissance($fic->getRepLegal2DateDeNaissance());
  555.                 //Lieu naissance
  556.                 $ba->setRepLegal2LieuDeNaissance($fic->getRepLegal2LieuDeNaissance());
  557.                 //Nationalité
  558.                 $ba->setRepLegal2Nationalite($fic->getRepLegal2Nationalite());
  559.                 //GreenCard
  560.                 $ba->setRepLegal2GreenCard($fic->isRepLegal2GreenCard());
  561.                 //Résidence fiscal FR
  562.                 $ba->setRepLegal2ResidanceFiscalFrance($fic->isRepLegal2ResidanceFiscalFrance());
  563.                 //adresse fiscale
  564.                 $ba->setRepLegal2FiscalAdresse($fic->getRepLegal2FiscalAdresse());
  565.                 //code postale fiscal
  566.                 $ba->setRepLegal2FiscalCodePostal($fic->getRepLegal2FiscalCodePostal());
  567.                 //ville fiscal
  568.                 $ba->setRepLegal2FiscalVille($fic->getRepLegal2FiscalVille());
  569.                 //pays fiscal
  570.                 $ba->setRepLegal2FiscalPays($fic->getRepLegal2FiscalPays());
  571.                 //adresse postale
  572.                 $ba->setRepLegal2PostaleAdresse($fic->getRepLegal2PostaleAdresse());
  573.                 //code postale
  574.                 $ba->setRepLegal2PostaleCodePostal($fic->getRepLegal2PostaleCodePostal());
  575.                 //ville
  576.                 $ba->setRepLegal2PostaleVille($fic->getRepLegal2PostaleVille());
  577.                 //pays
  578.                 $ba->setRepLegal2PostalePays($fic->getRepLegal2PostalePays());
  579.                 //email
  580.                 $ba->setRepLegal2Email($fic->getRepLegal2Email());
  581.                 //téléphone
  582.                 $ba->setRepLegal2TelephonePortablePrefix($fic->getRepLegal2TelephonePortablePrefix());
  583.                 $ba->setRepLegal2TelephonePortable($fic->getRepLegal2TelephonePortable());
  584.                 //téléphone fixe
  585.                 $ba->setRepLegal2TelephonePrefix($fic->getRepLegal2TelephonePrefix());
  586.                 $ba->setRepLegal2Telephone($fic->getRepLegal2Telephone());
  587.                 //Agissant en qualite de 
  588.                 $ba->setRepLegal2QualiteDe($fic->getRepLegal2QualiteDe());
  589.                 //J'accepte 1
  590.                 $ba->setRepLegal2AcceptRecevoirDocumentGarantieEmail($fic->isRepLegal2AcceptRecevoirDocumentGarantieEmail());
  591.                 $ba->setRepLegal2AcceptPropositionCommercialEmail($fic->isRepLegal2AcceptPropositionCommercialEmail());
  592.                 $ba->setRepLegal2AcceptPropositionCommercialTelephone($fic->isRepLegal2AcceptPropositionCommercialTelephone());
  593.             }
  594.             $this->em->flush();
  595.             $andContinue false;
  596.             if($form->get('saveAndContinue')->isClicked()){
  597.                 $andContinue true;
  598.             }
  599.             if($andContinue){
  600.                 $fic->setStatus("VALID");
  601.                 $membershipCurrent->setValidatedFicStatus(null);
  602.                 $membershipCurrent->setValidatedbaStatus(null);
  603.                 $membershipCurrent->setValidatedSepaStatus(null);
  604.                 $membershipCurrent->setValidatedStatusStatus(null);
  605.                 $membershipCurrent->getBa()->setStatus(null);
  606.                 $membershipCurrent->getBa()->setSepaStatus(null);
  607.                 $membershipCurrent->setValidatedFolderBySeller(null);
  608.                 $this->em->persist($membershipCurrent);
  609.                 $this->em->persist($fic);
  610.                 $this->em->flush();
  611.                 $this->addFlash('success'"La fiche d’information et de conseil a été modifiée.");
  612.                 return $this->redirectToRoute('membership_fic_view', ["userID" => $membershipCurrent->getUser()->getId() , "ficID" => $fic->getId()]);
  613.             }
  614.             else{
  615.                 if($request->get('fic')['validDocument'] == "true"){
  616.                     $fic->setStatus("VALID");
  617.                     $membershipCurrent->setValidatedFolderBySeller(null);
  618.                     $this->em->persist($membershipCurrent);
  619.                     $this->em->persist($fic);
  620.                     $this->em->flush();
  621.                 }
  622.                 else{
  623.                     $membershipCurrent->getFic()->setStatus(null);
  624.                     $membershipCurrent->getBa()->setStatus(null);
  625.                     $membershipCurrent->getBa()->setSepaStatus(null);
  626.                     $membershipCurrent->setValidatedFolderBySeller(null);
  627.                     $this->em->persist($membershipCurrent);
  628.                     $this->em->flush();
  629.                 }
  630.                 $this->addFlash('success'"La fiche d’information et de conseil a été modifiée.");
  631.                 return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
  632.             }
  633.         }
  634.         return $this->render('membership/'.$membershipCurrent->getProduct().'/ficUpdate.html.twig', [
  635.             'menu' => 'customer',
  636.             'form' => $form->createView(),
  637.             'customer' => $customer,
  638.             "seller" => $userCurrent,
  639.             'fic' => $fic,
  640.             'membership' => $membershipCurrent,
  641.             'typeForm' => $typeForm
  642.         ]);
  643.     }
  644.     /**
  645.      * @Route("/customer/{userID}/membership/fic/{ficID}/view", name="membership_fic_view")
  646.      */
  647.     public function ficView(Request $request$userID$ficID){
  648.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  649.         $customer $this->em
  650.                 ->getRepository(User::class)
  651.                 ->findOneBy(['id' => $userID]);
  652.         if(!$customer){
  653.             $this->addFlash('danger''Le client n\'existe pas.');
  654.             return $this->redirectToRoute('customer_list');
  655.         }
  656.         $fic $this->em
  657.             ->getRepository(Fic::class)
  658.             ->findOneBy(['id' => $ficID]);
  659.         if(!$fic){
  660.             $this->addFlash('danger''Ce document n\'existe pas');
  661.             return $this->redirectToRoute('customer_list');
  662.         }
  663.         if(!$fic->getMembership()){
  664.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  665.             return $this->redirectToRoute('customer_list');
  666.         }
  667.         $membershipCurrent $fic->getMembership();
  668.         if($membershipCurrent->getUser()->getId() != $fic->getMembership()->getUser()->getId()){
  669.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  670.             return $this->redirectToRoute('customer_list');
  671.         }
  672.         if (!$membershipCurrent->getSeller()) {
  673.             $this->addFlash('danger''Cette page n\'existe pas');
  674.             return $this->redirectToRoute('customer_list');
  675.         }
  676.         if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  677.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  678.             return $this->redirectToRoute('customer_list');
  679.         }
  680.         //Generate fic file
  681.         $ficName $this->utils->generateFic($customer$fic);
  682.         $fic->setUrlPdf($ficName);
  683.         $this->em->persist($fic);
  684.         $this->em->flush();
  685.         return $this->render('membership/ficView.html.twig', [
  686.             'menu' => 'customer',
  687.             'fic' => $fic,
  688.             'membership' => $membershipCurrent,
  689.             'customer' => $customer
  690.         ]);
  691.     }
  692.     /**
  693.      * @Route("/customer/{userID}/membership/fic/{ficID}/test", name="membership_fic_test")
  694.      */
  695.     public function ficTest(Request $request$userID$ficID){
  696.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  697.         $customer $this->em
  698.             ->getRepository(User::class)
  699.             ->find($userID);
  700.         if(!$customer){
  701.             $this->addFlash('danger''Le client n\'existe pas.');
  702.             return $this->redirectToRoute('customer_list');
  703.         }
  704.         if (!$customer->getSeller() && !$customer->isIsAutoSignup()) {
  705.             $this->addFlash('danger''Cette page n\'existe pas');
  706.             return $this->redirectToRoute('customer_list');
  707.         }
  708.         if (!$customer->isIsAutoSignup() && $customer->getSeller()->getId() != $userCurrent->getId()) {
  709.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  710.             return $this->redirectToRoute('customer_list');
  711.         }
  712.         //If no membership
  713.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  714.         $fic $this->em
  715.             ->getRepository(Fic::class)
  716.             ->findOneBy(['id' => $ficID]);
  717.         return $this->render('membership/pdf/ficView.html.twig', [
  718.             'menu' => 'customer',
  719.             'fic' => $fic,
  720.             'membership' => $membershipCurrent,
  721.             'customer' => $customer
  722.         ]);
  723.     }
  724.     /**
  725.      * @Route("/customer/{userID}/membership/ba/{baID}/update", name="membership_ba_update")
  726.      */
  727.     public function baUpdate(Request $request$userID$baID): Response
  728.     {   
  729.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  730.         $customer $this->em
  731.                 ->getRepository(User::class)
  732.                 ->findOneBy(['id' => $userID]);
  733.         if(!$customer){
  734.             $this->addFlash('danger''Le client n\'existe pas.');
  735.             return $this->redirectToRoute('customer_list');
  736.         }
  737.         $ba $this->em
  738.             ->getRepository(Ba::class)
  739.             ->findOneBy(['id' => $baID]);
  740.         if(!$ba){
  741.             $this->addFlash('danger''Ce document n\'existe pas');
  742.             return $this->redirectToRoute('customer_list');
  743.         }
  744.         if(!$ba->getMembership()){
  745.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  746.             return $this->redirectToRoute('customer_list');
  747.         }
  748.         $membershipCurrent $ba->getMembership();
  749.         $productType $membershipCurrent->getProduct();
  750.         if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
  751.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  752.             return $this->redirectToRoute('customer_list');
  753.         }
  754.         if (!$membershipCurrent->getSeller()) {
  755.             $this->addFlash('danger''Cette page n\'existe pas');
  756.             return $this->redirectToRoute('customer_list');
  757.         }
  758.         if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  759.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  760.             return $this->redirectToRoute('customer_list');
  761.         }
  762.         $typeForm "Modifier";
  763.         //OTHER CONTRACTS FORM
  764.         $originalOtherContracts = new ArrayCollection();
  765.         // Create an ArrayCollection of the current Tag objects in the database
  766.         foreach ($ba->getOtherContracts() as $otherContract) {
  767.             $originalOtherContracts->add($otherContract);
  768.         }
  769.         //BENEFICIAIRES FORM
  770.         $originalBeneficiaires = new ArrayCollection();
  771.         // Create an ArrayCollection of the current Tag objects in the database
  772.         foreach ($ba->getBeneficiaires() as $beneficiaire) {
  773.             $originalBeneficiaires->add($beneficiaire);
  774.         }
  775.         // Create form
  776.         $typeProductForm "ba_type_retraite";
  777.         if ( $membershipCurrent->getProduct() == 'retraite' ) {
  778.             $form $this->createForm(BaTypeRetraite::class, $ba, Array("validation_groups" => "update"));
  779.             $typeProductForm "ba_type_retraite";
  780.         } 
  781.         else if($membershipCurrent->getProduct() == 'epargne') {
  782.             $form $this->createForm(BaTypeEpargne::class, $ba, Array("validation_groups" => "update"));
  783.             $typeProductForm "ba_type_epargne";
  784.         }
  785.         // Send data in form
  786.         $form->handleRequest($request);
  787.         if($form->isSubmitted() && $form->isValid()) {
  788.             //getDateDeNaissance
  789.             if($ba->getDateDeNaissance()){
  790.                 $dateDeNaissance str_replace("/""-"$ba->getDateDeNaissance());
  791.                 $ba->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissance))));
  792.             } else{
  793.                 $ba->setDateDeNaissance(null);
  794.             }
  795.             if($ba->getRepLegal1DateDeNaissance()){
  796.                 $dateDeNaissanceRepLeg1 str_replace("/""-"$ba->getRepLegal1DateDeNaissance());
  797.                 $ba->setRepLegal1DateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissanceRepLeg1))));
  798.             } else{
  799.                 $ba->setRepLegal1DateDeNaissance(null);
  800.             }
  801.             if($ba->getRepLegal2DateDeNaissance()){
  802.                 $dateDeNaissanceRepLeg2 str_replace("/""-"$ba->getRepLegal2DateDeNaissance());
  803.                 $ba->setRepLegal2DateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissanceRepLeg2))));
  804.             } else{
  805.                 $ba->setRepLegal2DateDeNaissance(null);
  806.             }
  807.             if($ba->isBeneficiezProtectionJuridique() == "0"){
  808.                 $useLegal1 true;
  809.             }
  810.             //getDateEffetAdhesion
  811.             if($productType == "epargne"){
  812.                 $ba->setDateEffetAdhesion(new \DateTime("now"));
  813.             }
  814.             else{
  815.                 if($ba->getDateEffetAdhesion()){
  816.                     $dateEffetAdhesion str_replace("/""-"$ba->getDateEffetAdhesion());
  817.                     $ba->setDateEffetAdhesion(new \DateTime(date("Y-m-d"strtotime($dateEffetAdhesion))));
  818.                 } else{
  819.                     $ba->setDateEffetAdhesion(null);
  820.                 }
  821.             }
  822.             //getDateDeLiquidation
  823.             if($ba->getDateDeLiquidation()){
  824.                 $dateDeLiquidation str_replace("/""-"$ba->getDateDeLiquidation());
  825.                 $ba->setDateDeLiquidation(new \DateTime(date("Y-m-d"strtotime($dateDeLiquidation))));
  826.             } else{
  827.                 $ba->setDateDeLiquidation(null);
  828.             }
  829.             //getDateACompterDu
  830.             if($ba->getDateACompterDu()){
  831.                 if($ba->getVersementProgrammePeriodiciteJourDuMois() == "0"){
  832.                     $dateStartProgramme "01";
  833.                 }
  834.                 else{
  835.                     $dateStartProgramme "10";
  836.                 }
  837.                 $dateACompterDu str_replace("/""-"$ba->getDateACompterDu());
  838.                 $dateACompterDu $dateStartProgramme."-".$dateACompterDu;
  839.                 $ba->setDateACompterDu(new \DateTime(date("Y-m-d"strtotime($dateACompterDu))));
  840.             } else{
  841.                 $ba->setDateACompterDu(null);
  842.             }
  843.             //getDateCarteCombattant
  844.             if($ba->getDateCarteCombattant()){
  845.                 $dateCarteCombattant str_replace("/""-"$ba->getDateCarteCombattant());
  846.                 $ba->setDateCarteCombattant(new \DateTime(date("Y-m-d"strtotime($dateCarteCombattant))));
  847.             } else{
  848.                 $ba->setDateCarteCombattant(null);
  849.             }
  850.             //getDateReconnaisanceNation
  851.             if($ba->getDateReconnaisanceNation()){
  852.                 $dateReconnaisanceNation str_replace("/""-"$ba->getDateReconnaisanceNation());
  853.                 $ba->setDateReconnaisanceNation(new \DateTime(date("Y-m-d"strtotime($dateReconnaisanceNation))));
  854.             } else{
  855.                 $ba->setDateReconnaisanceNation(null);
  856.             }
  857.             //getDateTranscriptionMention
  858.             if($ba->getDateTranscriptionMention()){
  859.                 $dateTranscriptionMention str_replace("/""-"$ba->getDateTranscriptionMention());
  860.                 $ba->setDateTranscriptionMention(new \DateTime(date("Y-m-d"strtotime($dateTranscriptionMention))));
  861.             } else{
  862.                 $ba->setDateTranscriptionMention(null);
  863.             }
  864.             //Origine fond
  865.             //getFondContratEpargneDate
  866.             if($ba->getFondContratEpargneDate()){
  867.                 $fondContratEpargneDate str_replace("/""-"$ba->getFondContratEpargneDate());
  868.                 $ba->setFondContratEpargneDate(new \DateTime(date("Y-m-d"strtotime($fondContratEpargneDate))));
  869.             } else{
  870.                 $ba->setFondContratEpargneDate(null);
  871.             }
  872.             //getFondContratPartSocieteDate
  873.             if($ba->getFondContratPartSocieteDate()){
  874.                 $fondContratPartSocieteDate str_replace("/""-"$ba->getFondContratPartSocieteDate());
  875.                 $ba->setFondContratPartSocieteDate(new \DateTime(date("Y-m-d"strtotime($fondContratPartSocieteDate))));
  876.             } else{
  877.                 $ba->setFondContratPartSocieteDate(null);
  878.             }
  879.             //getFondContratHeritageDate
  880.             if($ba->getFondContratHeritageDate()){
  881.                 $fondContratHeritageDate str_replace("/""-"$ba->getFondContratHeritageDate());
  882.                 $ba->setFondContratHeritageDate(new \DateTime(date("Y-m-d"strtotime($fondContratHeritageDate))));
  883.             } else{
  884.                 $ba->setFondContratHeritageDate(null);
  885.             }
  886.             //getFondContratHeritageDate
  887.             if($ba->getFondContratImmobilierDate()){
  888.                 $fondContratImmobilierDate str_replace("/""-"$ba->getFondContratImmobilierDate());
  889.                 $ba->setFondContratImmobilierDate(new \DateTime(date("Y-m-d"strtotime($fondContratImmobilierDate))));
  890.             } else{
  891.                 $ba->setFondContratImmobilierDate(null);
  892.             }
  893.             //getFondContratHeritageDate
  894.             if($ba->getFondContratRevenuProDate()){
  895.                 $fondContratRevenuProDate str_replace("/""-"$ba->getFondContratRevenuProDate());
  896.                 $ba->setFondContratRevenuProDate(new \DateTime(date("Y-m-d"strtotime($fondContratRevenuProDate))));
  897.             } else{
  898.                 $ba->setFondContratRevenuProDate(null);
  899.             }
  900.             //getFondContratHeritageDate
  901.             if($ba->getFondContratAutreDate()){
  902.                 $fondContratAutreDate str_replace("/""-"$ba->getFondContratAutreDate());
  903.                 $ba->setFondContratAutreDate(new \DateTime(date("Y-m-d"strtotime($fondContratAutreDate))));
  904.             } else{
  905.                 $ba->setFondContratAutreDate(null);
  906.             }
  907.             if($productType == "retraite"){
  908.                 if($request->get($typeProductForm)['dateCarteCombattant'] == ""){
  909.                     $ba->setDateCarteCombattant(null);
  910.                 }
  911.                 if($request->get($typeProductForm)['dateReconnaisanceNation'] == ""){
  912.                     $ba->setDateReconnaisanceNation(null);
  913.                 }
  914.                 if($request->get($typeProductForm)['dateTranscriptionMention'] == ""){
  915.                     $ba->setDateTranscriptionMention(null);
  916.                 }
  917.             }
  918.             if($request->get($typeProductForm)['fondContratEpargneDate'] == ""){
  919.                 $ba->setFondContratEpargneDate(null);
  920.             }
  921.             if($request->get($typeProductForm)['fondContratPartSocieteDate'] == ""){
  922.                 $ba->setFondContratPartSocieteDate(null);
  923.             }
  924.             if($request->get($typeProductForm)['fondContratHeritageDate'] == ""){
  925.                 $ba->setFondContratHeritageDate(null);
  926.             }
  927.             if($request->get($typeProductForm)['fondContratImmobilierDate'] == ""){
  928.                 $ba->setFondContratImmobilierDate(null);
  929.             }
  930.             if($request->get($typeProductForm)['fondContratRevenuProDate'] == ""){
  931.                 $ba->setFondContratRevenuProDate(null);
  932.             }
  933.             if($request->get($typeProductForm)['fondContratAutreDate'] == ""){
  934.                 $ba->setFondContratAutreDate(null);
  935.             }
  936.             if($request->get($typeProductForm)['typeBeneficiaires'] == 2){
  937.                 $ba->setTypeBeneficiairesClauseNotariee(true);
  938.             }
  939.             else{
  940.                $ba->setTypeBeneficiairesClauseNotariee(false);
  941.                $ba->setTypeBeneficiairesClauseNotarieeCoordonnees(null);
  942.             }
  943.             $ba->setStatus(null);
  944.             $ba->setSex($customer->getSex());
  945.             //accept conditions
  946.             $ba->setReconnaisEtreInforme(true);
  947.             $ba->setReconnaisAvoirPrisConnaissance(true);
  948.             if($productType == "epargne"){
  949.               $ba->setPrendsActeEvolutionPerso(true);
  950.             }
  951.             $ba->setTelPhonePrefix($customer->getPhonePrefix());
  952.             $membershipCurrent->setBa($ba);
  953.             $membershipCurrent->setStatus("DRAFT");
  954.             // remove the relationship between the OtherContract and the BA
  955.             foreach ($originalOtherContracts as $otherContract) {
  956.                 if (false === $ba->getOtherContracts()->contains($otherContract)) {
  957.                     // To delete the Tag entirely
  958.                     $this->em->remove($otherContract);
  959.                 }
  960.             }
  961.             // remove the relationship between the Beneficiaire and the BA
  962.             foreach ($originalBeneficiaires as $beneficiaire) {
  963.                 if (false === $ba->getBeneficiaires()->contains($beneficiaire)) {
  964.                     // To delete the Tag entirely
  965.                     $this->em->remove($beneficiaire);
  966.                 }
  967.             }
  968.             //Update date fro the OtherContract
  969.             foreach ($ba->getOtherContracts() as $otherContract) {
  970.                 if($otherContract->getDateAdhesion()){
  971.                     $dateAdhesion str_replace("/""-"$otherContract->getDateAdhesion());
  972.                     $otherContract->setDateAdhesion(new \DateTime(date("Y-m-d"strtotime($dateAdhesion))));
  973.                 } else{
  974.                     $otherContract->setDateAdhesion(null);
  975.                 }
  976.                 $this->em->persist($otherContract);
  977.             }
  978.             //Update date fro the Beneficiaire
  979.             foreach ($ba->getBeneficiaires() as $beneficiaire) {
  980.                 if($beneficiaire->getDateDeNaissance()){
  981.                     $dateAdhesion str_replace("/""-"$beneficiaire->getDateDeNaissance());
  982.                     $beneficiaire->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateAdhesion))));
  983.                 } else{
  984.                     $beneficiaire->setDateDeNaissance(null);
  985.                 }
  986.                 
  987.                 $this->em->persist($beneficiaire);
  988.             }
  989.             if($membershipCurrent->getPlatformVersion() == 1){
  990.                 //V1 DIC
  991.                 if($membershipCurrent->getDic()->getSouscrireRetraiteMutualistePourConstituer() != null){
  992.                     $ba->setOptionCapital($membershipCurrent->getDic()->getSouscrireRetraiteMutualistePourConstituer());
  993.                 }
  994.             } else{
  995.                 //V2 FIC
  996.                 if($membershipCurrent->getFic()->getSouscrireRetraiteMutualistePourConstituer() != null){
  997.                     $ba->setOptionCapital($membershipCurrent->getFic()->getSouscrireRetraiteMutualistePourConstituer());
  998.                 }
  999.             }
  1000.             $ba->setAdherentDistributeur($customer->getAdherentDistributeur());
  1001.             if($productType == "epargne"){
  1002.                 //Legal 1 and 2
  1003.                 $ba->setRepLegal1Use($membershipCurrent->getFic()->isRepLegal1Use());
  1004.                 $membershipCurrent->setWithRepresentantLegal1($ba->isRepLegal1Use());
  1005.                 $membershipCurrent->setWithRepresentantLegal2($ba->isRepLegal2Use());
  1006.             }
  1007.             $this->em->persist($ba);
  1008.             $this->em->persist($membershipCurrent);
  1009.             $this->em->flush();
  1010.             $andContinue false;
  1011.             if($form->get('saveAndContinue')->isClicked()){
  1012.                 $andContinue true;
  1013.             }
  1014.             if($andContinue){
  1015.                 $ba->setStatus("VALID");
  1016.                 $membershipCurrent->setValidatedDicStatus(null);
  1017.                 $membershipCurrent->setValidatedbaStatus(null);
  1018.                 $membershipCurrent->setValidatedSepaStatus(null);
  1019.                 $membershipCurrent->setValidatedStatusStatus(null);
  1020.                 $membershipCurrent->getBa()->setSepaStatus(null);
  1021.                 $membershipCurrent->setValidatedFolderBySeller(null);
  1022.                 $this->em->persist($membershipCurrent);
  1023.                 $this->em->persist($ba);
  1024.                 $this->em->flush();
  1025.                 $this->addFlash('success'"La demande d'adhésion a été modifié.");
  1026.                 //return $this->redirectToRoute('membership_ba_update', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $membershipCurrent->getBa()->getId()]);
  1027.                 return $this->redirectToRoute('membership_ba_view', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $ba->getId()]);
  1028.             }
  1029.             else{
  1030.                 if($request->get('ba')['validDocument'] == "true"){
  1031.                     $ba->setStatus("VALID");
  1032.                     $membershipCurrent->setValidatedFolderBySeller(null);
  1033.                     //Generate ba file
  1034.                     $baName $this->utils->generateBa($customer);
  1035.                     $ba->setUrlPdf($baName);
  1036.                     $this->em->persist($membershipCurrent);
  1037.                     $this->em->persist($ba);
  1038.                     $this->em->flush();
  1039.                 }
  1040.                 else{
  1041.                     $membershipCurrent->getBa()->setStatus(null);
  1042.                     $membershipCurrent->getBa()->setSepaStatus(null);
  1043.                     $membershipCurrent->setValidatedFolderBySeller(null);
  1044.                     $this->em->persist($membershipCurrent);
  1045.                     $this->em->flush();
  1046.                 }
  1047.                 $this->addFlash('success'"La demande d'adhésion a été modifié.");
  1048.                 return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
  1049.             }
  1050.             return $this->redirectToRoute('membership_view', ["userID" => $customer->getId(), "membershipID" => $membershipCurrent->getId()]);
  1051.         }
  1052.         return $this->render('membership/'.$productType.'/baUpdate.html.twig', [
  1053.             'menu' => 'customer',
  1054.             'form' => $form->createView(),
  1055.             'customer' => $customer,
  1056.             "seller" => $userCurrent,
  1057.             'ba' => $ba,
  1058.             'membership' => $membershipCurrent,
  1059.             'typeForm' => $typeForm
  1060.         ]);
  1061.     }
  1062.     /**
  1063.      * @Route("/customer/{userID}/membership/ba/{baID}/view", name="membership_ba_view")
  1064.      */
  1065.     public function baView(Request $request$userID$baID){
  1066.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1067.         $customer $this->em
  1068.                 ->getRepository(User::class)
  1069.                 ->findOneBy(['id' => $userID]);
  1070.         if(!$customer){
  1071.             $this->addFlash('danger''Le client n\'existe pas.');
  1072.             return $this->redirectToRoute('customer_list');
  1073.         }
  1074.         $ba $this->em
  1075.             ->getRepository(Ba::class)
  1076.             ->findOneBy(['id' => $baID]);
  1077.         if(!$ba){
  1078.             $this->addFlash('danger''Ce document n\'existe pas');
  1079.             return $this->redirectToRoute('customer_list');
  1080.         }
  1081.         if(!$ba->getMembership()){
  1082.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  1083.             return $this->redirectToRoute('customer_list');
  1084.         }
  1085.         $membershipCurrent $ba->getMembership();
  1086.         if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
  1087.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  1088.             return $this->redirectToRoute('customer_list');
  1089.         }
  1090.         if (!$membershipCurrent->getSeller()) {
  1091.             $this->addFlash('danger''Cette page n\'existe pas');
  1092.             return $this->redirectToRoute('customer_list');
  1093.         }
  1094.         if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1095.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1096.             return $this->redirectToRoute('customer_list');
  1097.         }
  1098.         //Generate ba file
  1099.         $baName $this->utils->generateBa($customer$ba);
  1100.         $ba->setUrlPdf($baName);
  1101.         $this->em->persist($ba);
  1102.         $this->em->flush();
  1103.         return $this->render('membership/baView.html.twig', [
  1104.             'menu' => 'customer',
  1105.             'ba' => $ba,
  1106.             'membership' => $membershipCurrent,
  1107.             'customer' => $customer
  1108.         ]);
  1109.     }
  1110.     /**
  1111.      * @Route("/customer/{userID}/membership/ba/{baID}/test", name="membership_ba_test")
  1112.      */
  1113.     public function baTest(Request $request$userID$baID){
  1114.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1115.         $customer $this->em
  1116.             ->getRepository(User::class)
  1117.             ->find($userID);
  1118.         if(!$customer){
  1119.             $this->addFlash('danger''Le client n\'existe pas.');
  1120.             return $this->redirectToRoute('customer_list');
  1121.         }
  1122.         if (!$customer->getSeller()) {
  1123.             $this->addFlash('danger''Cette page n\'existe pas');
  1124.             return $this->redirectToRoute('customer_list');
  1125.         }
  1126.         if ($customer->getSeller()->getId() != $userCurrent->getId()) {
  1127.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1128.             return $this->redirectToRoute('customer_list');
  1129.         }
  1130.         //If no membership
  1131.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  1132.         $ba $this->em
  1133.             ->getRepository(Ba::class)
  1134.             ->findOneBy(['id' => $baID]);
  1135.         return $this->render('membership/pdf/baView.html.twig', [
  1136.             'menu' => 'customer',
  1137.             'ba' => $ba,
  1138.             'membership' => $membershipCurrent,
  1139.             'customer' => $customer
  1140.         ]);
  1141.     }
  1142.     /**
  1143.      * @Route("/customer/{userID}/membership/sepa/{baID}/update", name="membership_sepa_update")
  1144.      */
  1145.     public function sepaUpdate(Request $request$userID$baID): Response
  1146.     {   
  1147.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1148.         if($userID == "me"){
  1149.             $userID $userCurrent->getId();
  1150.         }
  1151.         $customer $this->em
  1152.                 ->getRepository(User::class)
  1153.                 ->findOneBy(['id' => $userID]);
  1154.         if(!$customer){
  1155.             $this->addFlash('danger''Le client n\'existe pas.');
  1156.             return $this->redirectToRoute('customer_list');
  1157.         }
  1158.         $ba $this->em
  1159.             ->getRepository(Ba::class)
  1160.             ->findOneBy(['id' => $baID]);
  1161.         if(!$ba){
  1162.             $this->addFlash('danger''Ce document n\'existe pas');
  1163.             return $this->redirectToRoute('customer_list');
  1164.         }
  1165.         if(!$ba->getMembership()){
  1166.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  1167.             return $this->redirectToRoute('customer_list');
  1168.         }
  1169.         $membershipCurrent $ba->getMembership();
  1170.         if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
  1171.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  1172.             return $this->redirectToRoute('customer_list');
  1173.         }
  1174.         if (!$membershipCurrent->getSeller()) {
  1175.             $this->addFlash('danger''Cette page n\'existe pas');
  1176.             return $this->redirectToRoute('customer_list');
  1177.         }
  1178.         if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){
  1179.             if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1180.                 $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1181.                 return $this->redirectToRoute('customer_list');
  1182.             }
  1183.         }
  1184.         $typeForm "Modifier";
  1185.         // Create form
  1186.         if ( $typeForm == 'Ajouter' ) {
  1187.             $form $this->createForm(SepaType::class, $ba, Array("validation_groups" => "update"));
  1188.         } else {
  1189.             $form $this->createForm(SepaType::class, $ba, Array("validation_groups" => "update"));
  1190.         }
  1191.         // Send data in form
  1192.         $form->handleRequest($request);
  1193.         if($form->isSubmitted() && $form->isValid()) {
  1194.             $ba->setSepaStatus(null);
  1195.             $iban $ba->getSepaCodeIban();
  1196.             $iban str_replace(" """$iban);
  1197.             $bic $ba->getSepaCodeBic();
  1198.             $bic str_replace(" """$bic);
  1199.             $ba->setSepaCodeIban($iban);
  1200.             $ba->setSepaCodeBic($bic);
  1201.             
  1202.             $membershipCurrent->setBa($ba);
  1203.             //Generate ba file
  1204.             $sepaName $this->utils->generateSepa($customer);
  1205.             $ba->setSepaUrlPdf($sepaName);
  1206.             $this->em->persist($ba);
  1207.             $this->em->flush();
  1208.             $this->em->persist($ba);
  1209.             $this->em->persist($membershipCurrent);
  1210.             $this->em->flush();
  1211.             $andContinue false;
  1212.             if($form->get('saveAndContinue')->isClicked()){
  1213.                 $andContinue true;
  1214.             }
  1215.             if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  1216.                 $userID "me";
  1217.             }
  1218.             else{
  1219.                 $userID $customer->getId();
  1220.             }
  1221.             if($andContinue){
  1222.                 //if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
  1223.                     $ba->setSepaStatus("VALID");
  1224.                 //}
  1225.                 $membershipCurrent->setValidatedDicStatus(null);
  1226.                 $membershipCurrent->setValidatedbaStatus(null);
  1227.                 $membershipCurrent->setValidatedSepaStatus(null);
  1228.                 $membershipCurrent->setValidatedStatusStatus(null);
  1229.                 if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){
  1230.                     $membershipCurrent->setValidatedFolderBySeller(null);
  1231.                 }
  1232.                 $this->em->persist($membershipCurrent);
  1233.                 $this->em->persist($ba);
  1234.                 $this->em->flush();
  1235.                 $this->addFlash('success''Le sepa a été modifié.');
  1236.                 //return $this->redirectToRoute('membership_ba_update', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $membershipCurrent->getBa()->getId()]);
  1237.                 //return $this->redirectToRoute('membership_sepa_view', ["userID" => $membershipCurrent->getUser()->getId() , "baID" => $ba->getId()]);
  1238.                 return $this->redirectToRoute('membership_view', ["userID" => $userID"membershipID" => $membershipCurrent->getId()]);
  1239.             }
  1240.             else{
  1241.                 if($request->get('sepa')['validDocument'] == "true"){
  1242.                     if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){
  1243.                         $membershipCurrent->setValidatedFolderBySeller(null);
  1244.                     }
  1245.                     $this->em->persist($membershipCurrent);
  1246.                     
  1247.                     //if($this->roleService->isGranted('ROLE_CUSTOMER', $userCurrent)){
  1248.                         $ba->setSepaStatus("VALID");
  1249.                     //}
  1250.                     
  1251.                     $this->em->persist($ba);
  1252.                     $this->em->flush();
  1253.                 }
  1254.                 else{
  1255.                     if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){
  1256.                         $membershipCurrent->setValidatedFolderBySeller(null);
  1257.                     }
  1258.                     $this->em->persist($membershipCurrent);
  1259.                     $this->em->flush();
  1260.                 }
  1261.                 $this->addFlash('success''Le sepa a été modifié.');
  1262.                 return $this->redirectToRoute('membership_view', ["userID" => $userID"membershipID" => $membershipCurrent->getId()]);
  1263.             }
  1264.             return $this->redirectToRoute('membership_view', ["userID" => $userID"membershipID" => $membershipCurrent->getId()]);
  1265.         }
  1266.         return $this->render('membership/sepaUpdate.html.twig', [
  1267.             'menu' => 'customer',
  1268.             'form' => $form->createView(),
  1269.             'customer' => $customer,
  1270.             "seller" => $userCurrent,
  1271.             'membership' => $membershipCurrent,
  1272.             'ba' => $ba,
  1273.             'typeForm' => $typeForm
  1274.         ]);
  1275.     }
  1276.     /**
  1277.      * @Route("/customer/{userID}/membership/sepa/{baID}/view", name="membership_sepa_view")
  1278.      */
  1279.     public function sepaView(Request $request$userID$baID){
  1280.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1281.         $customer $this->em
  1282.                 ->getRepository(User::class)
  1283.                 ->findOneBy(['id' => $userID]);
  1284.         if(!$customer){
  1285.             $this->addFlash('danger''Le client n\'existe pas.');
  1286.             return $this->redirectToRoute('customer_list');
  1287.         }
  1288.         $ba $this->em
  1289.             ->getRepository(Ba::class)
  1290.             ->findOneBy(['id' => $baID]);
  1291.         if(!$ba){
  1292.             $this->addFlash('danger''Ce document n\'existe pas');
  1293.             return $this->redirectToRoute('customer_list');
  1294.         }
  1295.         if(!$ba->getMembership()){
  1296.             $this->addFlash('danger''Ce client n\'a pas d\'adhésion en cours');
  1297.             return $this->redirectToRoute('customer_list');
  1298.         }
  1299.         $membershipCurrent $ba->getMembership();
  1300.         if($membershipCurrent->getUser()->getId() != $ba->getMembership()->getUser()->getId()){
  1301.             $this->addFlash('danger''Ce document ne correspond pas au bon client');
  1302.             return $this->redirectToRoute('customer_list');
  1303.         }
  1304.         if (!$membershipCurrent->getSeller()) {
  1305.             $this->addFlash('danger''Cette page n\'existe pas');
  1306.             return $this->redirectToRoute('customer_list');
  1307.         }
  1308.         if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1309.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1310.             return $this->redirectToRoute('customer_list');
  1311.         }
  1312.         //Generate sepa file
  1313.         $sepaName $this->utils->generateSepa($customer$ba);
  1314.         $ba->setSepaUrlPdf($sepaName);
  1315.         $this->em->persist($ba);
  1316.         $this->em->flush();
  1317.         return $this->render('membership/sepaView.html.twig', [
  1318.             'menu' => 'customer',
  1319.             'sepa' => $ba,
  1320.             'membership' => $membershipCurrent,
  1321.             'customer' => $customer
  1322.         ]);
  1323.     }
  1324.     /**
  1325.      * @Route("/customer/{userID}/membership/files/{membershipID}/update", name="membership_files_update")
  1326.      */
  1327.     public function filesUpdate(Request $request$userID$membershipID): Response
  1328.     {   
  1329.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1330.         if($userID == "me"){
  1331.             $userID $userCurrent->getId();
  1332.         }
  1333.         $customer $this->em
  1334.                 ->getRepository(User::class)
  1335.                 ->findOneBy(['id' => $userID]);
  1336.         if(!$customer){
  1337.             //$this->addFlash('danger', 'Le client n\'existe pas.');
  1338.             return new JsonResponse(array("status" => false"message" => 'Le client n\'existe pas.')); 
  1339.         }
  1340.         $membershipCurrent $this->em
  1341.                 ->getRepository(Membership::class)
  1342.                 ->findOneBy(['id' => $membershipID]);
  1343.         if(!$membershipCurrent){
  1344.             //$this->addFlash('danger', 'Le client n\'existe pas.');
  1345.             return new JsonResponse(array("status" => false"message" => 'Cette adhésion n\'existe pas.')); 
  1346.         }
  1347.         if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){     
  1348.             if (!$membershipCurrent->getSeller()) {
  1349.                 return new JsonResponse(array("status" => false"message" => 'Cette page n\'existe pas')); 
  1350.             }
  1351.             if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1352.                 return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1353.             }
  1354.         } 
  1355.         else if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  1356.             if ($customer->getId() != $userCurrent->getId()) {
  1357.                 return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1358.             }
  1359.         }
  1360.         else{
  1361.             return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1362.         }
  1363.         $file $_FILES['file'];
  1364.         $type $request->get("type");
  1365.         if($file) {
  1366.             $name $type;
  1367.             if($type == "idIdentityRecto"){
  1368.                 $name "ci_recto";
  1369.             }
  1370.             else if($type == "idIdentityVerso"){
  1371.                 $name "ci_verso";
  1372.             }
  1373.             else if($type == "idPassportRecto"){
  1374.                 $name "pass";
  1375.             }
  1376.             else if($type == "idPassportVerso"){
  1377.                 $name "pass_verso";
  1378.             }
  1379.             else if($type == "idTitreSejourRecto"){
  1380.                 $name "tds_recto";
  1381.             }
  1382.             else if($type == "idTitreSejourVerso"){
  1383.                 $name "tds_verso";
  1384.             }
  1385.             else if($type == "rib"){
  1386.                 $name "rib";
  1387.             }
  1388.             else if($type == "carteCombattantRecto"){
  1389.                 $name "cc_recto";
  1390.             }
  1391.             else if($type == "carteCombattantVerso"){
  1392.                 $name "cc_verso";
  1393.             }
  1394.             else if($type == "titreReconnaissanceRecto"){
  1395.                 $name "rn_recto";
  1396.             }
  1397.             else if($type == "titreReconnaissanceVerso"){
  1398.                 $name "rn_verso";
  1399.             }
  1400.             else if($type == "reportMentionRecto"){
  1401.                 $name "mpf";
  1402.             }
  1403.             else if($type == "justificatifFondsGainJeux"){
  1404.                 $name "justificatif_gains_aux_jeux";
  1405.             }
  1406.             else if($type == "idJustificatifAutreFacultatif"){
  1407.                 $name "justificatif_autre_facultatif";
  1408.             }
  1409.             else if($type == "other-file"){
  1410.                 $numberOtherFile = (count($membershipCurrent->getOtherFile()) + 1);
  1411.                 $name "pièce-jointe-".$numberOtherFile;
  1412.             }
  1413.             else if($type == "other-file-origine-fond"){
  1414.                 $numberOtherFile = (count($membershipCurrent->getOtherFileOrigineFond()) + 1);
  1415.                 $name "origine-fond-".$numberOtherFile;
  1416.             }
  1417.             if($type == "dic-custom"){
  1418.                 $name $membershipCurrent->getNumberMembershipFolder().'_'.strtoupper($membershipCurrent->getUser()->getLastName()).'_'.strtoupper($membershipCurrent->getUser()->getFirstName()).'_'.'CERTIFICAT';
  1419.             }
  1420.             else{
  1421.                 $name $membershipCurrent->getNumberMembershipFolder()."_".$membershipCurrent->getUser()->getLastName()."_".$membershipCurrent->getUser()->getFirstName()."_".$name;
  1422.             }
  1423.             $fileArray $this->fileUploader->upload($file$membershipCurrent$name);
  1424.             $fileSend = new FileSend();
  1425.             $fileSend->setFilename($fileArray['fileName']);
  1426.             $fileSend->setExtension($fileArray['extension']);
  1427.             $fileSend->setType($type);
  1428.             $fileSend->setWeigth($fileArray['weight']);
  1429.             $fileSend->setMembership($membershipCurrent);
  1430.             $this->em->persist($fileSend);
  1431.             if($type == "dic-custom"){
  1432.                 if($membershipCurrent->getPlatformVersion() == 1){
  1433.                     //Active Dic
  1434.                     $dic $membershipCurrent->getDic();
  1435.                     $dic->setStatus("VALID");
  1436.                     $this->em->persist($dic);
  1437.                 }
  1438.                 else{
  1439.                     //Active Dic
  1440.                     $fic $membershipCurrent->getFic();
  1441.                     $fic->setStatus("VALID");
  1442.                     $this->em->persist($fic);
  1443.                 }
  1444.                 
  1445.                 $membershipCurrent->setValidatedDicStatus(null);
  1446.                 $membershipCurrent->setValidatedbaStatus(null);
  1447.                 $membershipCurrent->setValidatedSepaStatus(null);
  1448.                 $membershipCurrent->setValidatedStatusStatus(null);
  1449.                 $membershipCurrent->getBa()->setStatus(null);
  1450.                 $membershipCurrent->getBa()->setSepaStatus(null);
  1451.                 $membershipCurrent->setValidatedFolderBySeller(null);
  1452.                 $this->em->persist($membershipCurrent); 
  1453.             }
  1454.             $this->em->flush();
  1455.             if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  1456.                 $userIdTemp 'me';
  1457.             }
  1458.             else{
  1459.                 $userIdTemp $customer->getId();
  1460.             }
  1461.             $urlDelete $this->generateUrl('membership_files_delete'
  1462.                 array(
  1463.                     'userID' => $userIdTemp,
  1464.                     'fileID' => $fileSend->getId()
  1465.                 ), 
  1466.             UrlGeneratorInterface::ABSOLUTE_URL);
  1467.             $data = array(
  1468.                 "status" => true,
  1469.                 "file" => array(
  1470.                     "fileName" => $fileSend->getFilename(),
  1471.                     "urlDelete" => $urlDelete,
  1472.                     "urlView" => "/files/".$customer->getId()."/".$fileSend->getFilename(),
  1473.                     "extension" => $fileSend->getExtension(),
  1474.                     "info" => $this->utils->formatSizeUnits($fileSend->getWeigth()),
  1475.                     "type" => $fileSend->getType(),
  1476.                 )
  1477.             );
  1478.         }
  1479.         else{
  1480.             $data = array(
  1481.                 "status" => false
  1482.             );
  1483.         }
  1484.         return new JsonResponse($data); 
  1485.     }
  1486.     /**
  1487.      * @Route("/customer/{userID}/membership/files/{fileID}/delete", name="membership_files_delete")
  1488.      */
  1489.     public function filesDelete(Request $request$userID$fileID): Response
  1490.     {   
  1491.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1492.         if($userID == "me"){
  1493.             $userID $userCurrent->getId();
  1494.         }
  1495.         $customer $this->em
  1496.                 ->getRepository(User::class)
  1497.                 ->findOneBy(['id' => $userID]);
  1498.         if(!$customer){
  1499.             //$this->addFlash('danger', 'Le client n\'existe pas.');
  1500.             return new JsonResponse(array("status" => false"message" => 'Le client n\'existe pas.')); 
  1501.         }
  1502.         $file $this->em
  1503.                 ->getRepository(FileSend::class)
  1504.                 ->findOneBy(['id' => $fileID]);
  1505.         if(!$file){
  1506.             //$this->addFlash('danger', 'Le client n\'existe pas.');
  1507.             return new JsonResponse(array("status" => false"message" => 'Le fichier n\'existe pas.')); 
  1508.         }
  1509.         $membershipCurrent $file->getMembership();
  1510.         if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){     
  1511.             if (!$membershipCurrent->getSeller()) {
  1512.                 return new JsonResponse(array("status" => false"message" => 'Cette page n\'existe pas')); 
  1513.             }
  1514.             if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1515.                 return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1516.             }
  1517.         } 
  1518.         else if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  1519.             if ($customer->getId() != $userCurrent->getId()) {
  1520.                 return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1521.             }
  1522.         }
  1523.         else{
  1524.             return new JsonResponse(array("status" => false"message" => 'Vous ne pouvez pas accéder à cette page')); 
  1525.         }
  1526.         $type "";
  1527.         if($file){
  1528.             $type $file->getType();
  1529.             if($type == "dic-custom"){
  1530.                 //Active Dic
  1531.                 $dic $membershipCurrent->getDic();
  1532.                 $dic->setStatus(null);
  1533.                 $membershipCurrent->setValidatedDicStatus(null);
  1534.                 $membershipCurrent->setValidatedbaStatus(null);
  1535.                 $membershipCurrent->setValidatedSepaStatus(null);
  1536.                 $membershipCurrent->setValidatedStatusStatus(null);
  1537.                 $membershipCurrent->getBa()->setStatus(null);
  1538.                 $membershipCurrent->getBa()->setSepaStatus(null);
  1539.                 $membershipCurrent->setValidatedFolderBySeller(null);
  1540.                 $this->em->persist($dic);
  1541.                 $this->em->persist($membershipCurrent); 
  1542.             }
  1543.             $this->em->remove($file);
  1544.             $this->em->flush();
  1545.         }
  1546.         $data = array(
  1547.             "status" => true,
  1548.             "file" => array(
  1549.                 "type" => $type
  1550.             )
  1551.         );
  1552.         return new JsonResponse($data); 
  1553.     }
  1554.     /**
  1555.      * @Route("/customer/{userID}/membership/{membershipID}/files/{fileID}/view/{fileName}", name="membership_files_view")
  1556.      */
  1557.     public function filesView(Request $request$userID$membershipID$fileID$fileName null): Response
  1558.     {   
  1559.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1560.         if($userID == "me"){
  1561.             $userIDTemp $userCurrent->getId();
  1562.         }
  1563.         else{
  1564.             $userIDTemp $userID;
  1565.         }
  1566.         $customer $this->em
  1567.                 ->getRepository(User::class)
  1568.                 ->findOneBy(['id' => $userIDTemp]);
  1569.         if(!$customer){
  1570.             $this->addFlash('danger''Le client n\'existe pas.');
  1571.             return $this->redirectToRoute('customer_list');
  1572.         }
  1573.         $membershipCurrent $this->em
  1574.                 ->getRepository(Membership::class)
  1575.                 ->findOneBy(['id' => $membershipID]);
  1576.         if(!$membershipCurrent){
  1577.             //$this->addFlash('danger', 'Le client n\'existe pas.');
  1578.             return new JsonResponse(array("status" => false"message" => 'Le fichier n\'existe pas.')); 
  1579.         }
  1580.         $productType $membershipCurrent->getProduct();
  1581.         if($this->roleService->isGranted('ROLE_SELLER'$userCurrent)){     
  1582.             if (!$membershipCurrent->getSeller()) {
  1583.                 $this->addFlash('danger''Cette page n\'existe pas');
  1584.                 return $this->redirectToRoute('customer_list');
  1585.             }
  1586.             if ($membershipCurrent->getSeller()->getId() != $userCurrent->getId()) {
  1587.                 $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1588.                 return $this->redirectToRoute('customer_list');
  1589.             }
  1590.         } 
  1591.         else if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent)){
  1592.             if ($customer->getId() != $userCurrent->getId()) {
  1593.                 $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1594.                 return $this->redirectToRoute('app_login');
  1595.             }
  1596.         }
  1597.         else{
  1598.             $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  1599.             return $this->redirectToRoute('app_login');
  1600.         }
  1601.         if($fileID == "dic-view"){
  1602.             $urlDic $this->generateUrl('membership_files_view'
  1603.                 array(
  1604.                     'userID' => $userID,
  1605.                     'fileID' => 'dic'
  1606.                 ), 
  1607.             UrlGeneratorInterface::ABSOLUTE_URL);
  1608.             return new Response("<object type='application/pdf' data='".$urlDic."' width='100%' height='100%'></object>");
  1609.         }
  1610.         else if($fileID == "dic"){
  1611.             header("Content-type: application/pdf");
  1612.             header('Content-disposition: inline; filename="Document d’information et de conseil.pdf"');
  1613.             if($membershipCurrent->getDic()->getUrlPdfSign()){
  1614.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign());
  1615.             }
  1616.             else{
  1617.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getDic()->getUrlPdf());
  1618.             }
  1619.             exit();
  1620.         }
  1621.         else if($fileID == "fic"){
  1622.             header("Content-type: application/pdf");
  1623.             header('Content-disposition: inline; filename="Fiche d’information et de conseil.pdf"');
  1624.             if($membershipCurrent->getFic()->getUrlPdfSign()){
  1625.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign());
  1626.             }
  1627.             else{
  1628.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFic()->getUrlPdf());
  1629.             }
  1630.             exit();
  1631.         }
  1632.         else if($fileID == "ba-view"){
  1633.             $urlBa $this->generateUrl('membership_files_view'
  1634.                 array(
  1635.                     'userID' => $userID,
  1636.                     'fileID' => 'ba'
  1637.                 ), 
  1638.             UrlGeneratorInterface::ABSOLUTE_URL);
  1639.             return new Response("<object type='application/pdf' data='".$urlBa."' width='100%' height='100%'></object>");
  1640.         }
  1641.         else if($fileID == "ba"){
  1642.             header ("Content-type: application/pdf");
  1643.             header('Content-disposition: inline; filename="Demande d’adhésion.pdf"');
  1644.             if($membershipCurrent->getBa()->getUrlPdfSign()){
  1645.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign());
  1646.             }
  1647.             else{
  1648.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getUrlPdf());
  1649.             }
  1650.             exit();
  1651.         }
  1652.         else if($fileID == "sepa-view"){
  1653.             $urlSepa $this->generateUrl('membership_files_view'
  1654.                 array(
  1655.                     'userID' => $userID,
  1656.                     'fileID' => 'sepa'
  1657.                 ), 
  1658.             UrlGeneratorInterface::ABSOLUTE_URL);
  1659.             return new Response("<object type='application/pdf' data='".$urlSepa."' width='100%' height='100%'></object>");
  1660.         }
  1661.         else if($fileID == "sepa"){
  1662.             header ("Content-type: application/pdf");
  1663.             header('Content-disposition: inline; filename="Mandat de prélèvement SEPA.pdf"');
  1664.             if($membershipCurrent->getBa()->getSepaUrlPdfSign()){
  1665.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign());
  1666.             }
  1667.             else{
  1668.                 readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdf());
  1669.             }
  1670.             exit();
  1671.         }
  1672.         else if($fileID == "status-view"){
  1673.             $urlStatus $this->generateUrl('membership_files_view'
  1674.                 array(
  1675.                     'userID' => $userID,
  1676.                     'fileID' => 'status'
  1677.                 ), 
  1678.             UrlGeneratorInterface::ABSOLUTE_URL);
  1679.             return new Response("<object type='application/pdf' data='".$urlStatus."' width='100%' height='100%'></object>");
  1680.         }
  1681.         else if($fileID == "status"){
  1682.             header ("Content-type: application/pdf");
  1683.             readfile($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf");
  1684.             exit();
  1685.         }
  1686.         else if($fileID == "reglement"){
  1687.             header ("Content-type: application/pdf");
  1688.             readfile($this->fileUploader->getTargetDirectory()."/../default/".$productType."/REGLEMENT.pdf");
  1689.             exit();
  1690.         }
  1691.         else if($fileID == "dicPublic"){
  1692.             header ("Content-type: application/pdf");
  1693.             readfile($this->fileUploader->getTargetDirectory()."/../default/".$productType."/DIC.pdf");
  1694.             exit();
  1695.         }
  1696.         else{
  1697.             if($membershipCurrent->getFileById($fileID)->getExtension() == "pdf"){
  1698.                 header ("Content-type: application/pdf");
  1699.             }
  1700.             else{
  1701.                 header ("Content-type: image/".$membershipCurrent->getFileById($fileID)->getExtension());
  1702.             }
  1703.             readfile($this->fileUploader->getTargetDirectory()."/".$customer->getId()."/".$membershipCurrent->getFileById($fileID)->getFileName());
  1704.             exit();
  1705.         }
  1706.     }
  1707.     /**
  1708.      * @Route("/customer/{userID}/membership/{membershipID}/validate-folder", name="membership_validate_folder")
  1709.      */
  1710.     public function validateFolder(Request $request$userID$membershipID){
  1711.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1712.         $customer $this->em
  1713.             ->getRepository(User::class)
  1714.             ->find($userID);
  1715.         if ( !$customer ) {
  1716.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  1717.             return $this->redirectToRoute('customer_list');
  1718.         }
  1719.         // STEP 1 - Controls
  1720.         $dicControl false;
  1721.         $ficControl false;
  1722.         $baControl false;
  1723.         $filesControle false;
  1724.         /* SCRIPT VALIDATION DIC + BA + FILES
  1725.         ******
  1726.         ******
  1727.         ******
  1728.         ******
  1729.         ******
  1730.         ******
  1731.         ******
  1732.         ******
  1733.         ******
  1734.         ******
  1735.         ******
  1736.         ******
  1737.         */
  1738.         $dicControl true;
  1739.         $ficControl true;
  1740.         $baControl true;
  1741.         $filesControle true;
  1742.         if((!$dicControl && !$ficControl) || !$baControl || !$filesControle){
  1743.             $this->addFlash('danger''Le dossier n\'a pas pu être validé');
  1744.             return $this->redirectToRoute('customer_list');
  1745.         }
  1746.         //STEP 2 - Create PDF for customer & YouSign
  1747.         /* ********** CREATE DIC START ********** */
  1748.         //Generate dic file
  1749.         //$this->utils->generateDic($customer);
  1750.             
  1751.         /* ********** CREATE DIC END ********** */
  1752.         //If no membership
  1753.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  1754.         //STEP 3 - Create account and send signin-end mail
  1755.         if ( $customer->getStatus() == "CREATE" ) {
  1756.             $this->utils->sendEmailEndSigninCustomer($customer$membershipCurrent);
  1757.             $customer->setStatus('SIGNINEND');
  1758.             $this->em->persist($customer);
  1759.             $this->addFlash('success''Un mail d\'inscription a été envoyé à l\'adresse '.$customer->getEmail());
  1760.         }
  1761.         else{
  1762.             $this->addFlash('warning''Cet utilisateur a déjà terminé son inscription, il peut déjà se connecter via l\'adresse '.$customer->getEmail());
  1763.         }
  1764.         $membershipCurrent->setStatus("VALIDBYSELLER");
  1765.         $membershipCurrent->setValidatedFilesBySeller(true);
  1766.         $membershipCurrent->setValidatedFilesBySellerDate(new \DateTime("now"));
  1767.         $membershipCurrent->setValidatedFolderBySeller(true);
  1768.         $membershipCurrent->setValidatedFolderBySellerDate(new \DateTime("now"));
  1769.         $membershipCurrent->setValidatedDicStatus(null);
  1770.         $membershipCurrent->setValidatedFicStatus(null);
  1771.         $membershipCurrent->setValidatedbaStatus(null);
  1772.         $membershipCurrent->setValidatedSepaStatus(null);
  1773.         $membershipCurrent->setValidatedStatusStatus(null);
  1774.         $membershipCurrent->setValidatedReglementStatus(null);
  1775.         $this->em->persist($membershipCurrent);
  1776.         $this->em->flush();
  1777.         $this->addFlash('success''Le dossier a bien été validé et envoyé');
  1778.         return $this->redirectToRoute('customer_list');
  1779.     }
  1780.     /**
  1781.      * @Route("/customer/{userID}/membership/{membershipID}/validate-folder-by-customer/{folder}", name="membership_validate_folder_by_customer")
  1782.      */
  1783.     public function validateFolderByCustomer(Request $request$userID$membershipID$folder null){
  1784.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1785.         if($userID == "me"){
  1786.             $userID $userCurrent->getId();
  1787.         }
  1788.         $customer $this->em
  1789.             ->getRepository(User::class)
  1790.             ->find($userCurrent->getId());
  1791.         if ( !$customer ) {
  1792.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  1793.             return $this->redirectToRoute('customer_list');
  1794.         }
  1795.         $membershipCurrent $this->em
  1796.             ->getRepository(Membership::class)
  1797.             ->find($membershipID);
  1798.         if ( !$membershipCurrent ) {
  1799.             $this->addFlash('danger''Cette adhésion n\'existe pas');
  1800.             return $this->redirectToRoute('customer_list');
  1801.         }
  1802.         if ( $userCurrent->getId() != $membershipCurrent->getUser()->getId() ) {
  1803.             $this->addFlash('danger''Cette adhésion n\'existe pas');
  1804.             return $this->redirectToRoute('customer_list');
  1805.         }
  1806.         if($folder != null){
  1807.             if($folder == "dic"){
  1808.                 $membershipCurrent->setValidatedDicStatus("VALID");
  1809.                 $membershipCurrent->setValidatedDicDate(new \DateTime("now"));
  1810.                 $membershipCurrent->setValidatedDicAccept(true);
  1811.             }
  1812.             else if($folder == "fic"){
  1813.                 $membershipCurrent->setValidatedFicStatus("VALID");
  1814.                 $membershipCurrent->setValidatedFicDate(new \DateTime("now"));
  1815.                 $membershipCurrent->setValidatedFicAccept(true);
  1816.                 $membershipCurrent->getFic()->setJacceptePreconisation(true);
  1817.                 $membershipCurrent->getFic()->setReconnaisConnaissanceFic(true);
  1818.                 $membershipCurrent->getFic()->setAttesteRecuInformationDetaillee(true);
  1819.                 $membershipCurrent->getFic()->setAttesteRecuDicEtReglement(true);
  1820.                 $membershipCurrent->getFic()->setReconnaisPreconisationsAdaptees(true);
  1821.                 //Update effet date BA
  1822.                 $membershipCurrent->getBa()->setDateEffetAdhesion(new \DateTime("now"));
  1823.                 $this->em->persist($membershipCurrent->getBa());
  1824.                 $this->em->flush();
  1825.                 $baName $this->utils->generateBa($customer$membershipCurrent->getBa());
  1826.             }
  1827.             else if($folder == "ba"){
  1828.                 $membershipCurrent->setValidatedbaStatus("VALID");
  1829.                 $membershipCurrent->setValidatedbaDate(new \DateTime("now"));
  1830.                 $membershipCurrent->setValidatedbaAccept(true);
  1831.                 $membershipCurrent->setValidatedbaAccept(true);
  1832.                 $membershipCurrent->getBa()->setConnaissanceDesStatuts(true);
  1833.                 $membershipCurrent->getBa()->setReconnaisRenoncer30Jours(true);
  1834.                 if(($membershipCurrent->getBa()->getVersementProgramme() != && $membershipCurrent->getBa()->getMoyenDeVersement() != 3) || $membershipCurrent->getBa()->getSepaOriginVersmement() == 2){
  1835.                     $membershipCurrent->setValidatedSepaStatus("VALID");
  1836.                     $membershipCurrent->setValidatedSepaDate(new \DateTime("now"));
  1837.                     $membershipCurrent->setValidatedSepaAccept(true);
  1838.                 }
  1839.             }
  1840.             else if($folder == "sepa"){
  1841.                 $membershipCurrent->setValidatedSepaStatus("VALID");
  1842.                 $membershipCurrent->setValidatedSepaDate(new \DateTime("now"));
  1843.                 $membershipCurrent->setValidatedSepaAccept(true);
  1844.             }
  1845.             else if($folder == "status"){
  1846.                 $membershipCurrent->setValidatedStatusStatus("VALID");
  1847.                 $membershipCurrent->setValidatedStatusDate(new \DateTime("now"));
  1848.                 $membershipCurrent->setValidatedStatusAccept(true);
  1849.             }
  1850.             else if($folder == "reglement"){
  1851.                 $membershipCurrent->setValidatedReglementStatus("VALID");
  1852.                 $membershipCurrent->setValidatedReglementDate(new \DateTime("now"));
  1853.                 $membershipCurrent->setValidatedReglementAccept(true);
  1854.                 $membershipCurrent->setStatus("VALIDBYCUSTOMER");
  1855.                 $baName $this->utils->generateBa($customer$membershipCurrent->getBa());
  1856.                 
  1857.                 if($membershipCurrent->getPlatformVersion() == 1){
  1858.                     if(!$membershipCurrent->getDicIsFile()){
  1859.                         //V1 DIC
  1860.                         $membershipCurrent->getDic()->setJeCertifieSurHonneur(true);
  1861.                         $this->em->persist($membershipCurrent->getDic());
  1862.                     }
  1863.                 }
  1864.                 else{
  1865.                     //V2 FIC
  1866.                     $membershipCurrent->getFic()->setJeCertifieSurHonneur(true);
  1867.                     $this->em->persist($membershipCurrent->getFic());
  1868.                 }
  1869.                 
  1870.                 $membershipCurrent->getBa()->setUrlPdf($baName);
  1871.                 $this->em->persist($membershipCurrent->getBa());
  1872.             }
  1873.             $this->em->persist($membershipCurrent);
  1874.             $this->em->flush();
  1875.             if($folder == "reglement"){
  1876.                 $this->utils->generateBa($customer);
  1877.                 
  1878.                 if($membershipCurrent->getPlatformVersion() == 1){
  1879.                     //V1 DIC
  1880.                     $this->utils->generateDic($customer);
  1881.                 }
  1882.                 else{
  1883.                     //V2 FIC
  1884.                     $this->utils->generateFic($customer$membershipCurrent->getFic());
  1885.                 }
  1886.             }
  1887.         }        
  1888.         if($membershipCurrent->getDicIsFile() == true){
  1889.             $membershipCurrent->setValidatedDicStatus("VALID");
  1890.             $membershipCurrent->setValidatedDicDate(new \DateTime("now"));
  1891.             $membershipCurrent->setValidatedDicAccept(true);
  1892.             $this->em->persist($membershipCurrent);
  1893.             $this->em->flush();
  1894.         }
  1895.         if($membershipCurrent->getPlatformVersion() == && $membershipCurrent->getValidatedDicStatus() != "VALID"){
  1896.             return $this->render('membership/validated/dicValidated.html.twig', [
  1897.                 'dic' => $customer->getCurrentMemberships()->getDic(),
  1898.                 'customer' => $customer,
  1899.                 'membership' => $membershipCurrent
  1900.             ]);
  1901.         }
  1902.         else if($membershipCurrent->getPlatformVersion() == && $membershipCurrent->getValidatedFicStatus() != "VALID"){
  1903.             return $this->render('membership/validated/ficValidated.html.twig', [
  1904.                 'fic' => $customer->getCurrentMemberships()->getFic(),
  1905.                 'customer' => $customer,
  1906.                 'membership' => $membershipCurrent
  1907.             ]);
  1908.         }
  1909.         else if($membershipCurrent->getValidatedBaStatus() != "VALID"){
  1910.             return $this->render('membership/validated/baValidated.html.twig', [
  1911.                 'ba' => $customer->getCurrentMemberships()->getBa(),
  1912.                 'customer' => $customer,
  1913.                 'membership' => $membershipCurrent
  1914.             ]);
  1915.         }
  1916.         else if($membershipCurrent->getValidatedSepaStatus() != "VALID" && ($customer->getCurrentMemberships()->getBa()->getVersementProgramme() == 1  || $customer->getCurrentMemberships()->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
  1917.             return $this->render('membership/validated/sepaValidated.html.twig', [
  1918.                 'sepa' => $customer->getCurrentMemberships()->getBa(),
  1919.                 'customer' => $customer,
  1920.                 'membership' => $membershipCurrent
  1921.             ]);
  1922.         }
  1923.         else if($membershipCurrent->getValidatedStatusStatus() != "VALID"){
  1924.             return $this->render('membership/validated/statusValidated.html.twig', [
  1925.                 'customer' => $customer,
  1926.                 'membership' => $membershipCurrent
  1927.             ]);
  1928.         }
  1929.         else if($membershipCurrent->getValidatedReglementStatus() != "VALID"){
  1930.             return $this->render('membership/validated/reglementValidated.html.twig', [
  1931.                 'customer' => $customer,
  1932.                 'membership' => $membershipCurrent
  1933.             ]);
  1934.         }
  1935.         else{
  1936.             $this->addFlash('success''Les documents ont bien été validés');
  1937.             return $this->redirectToRoute('membership_view', ["userID" => "me""membershipID" => $membershipCurrent->getId()]);
  1938.         }
  1939.     }
  1940.     /**
  1941.      * @Route("/customer/{userID}/membership/{membershipID}/sign-by-seller", name="membership_sign_seller")
  1942.      */
  1943.     public function member_sign_seller(Request $request$userID$membershipID){
  1944.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1945.         $yousignUrlLink $this->getParameter('yousign_url_link');
  1946.         if($userID == "me"){
  1947.             $userIDTemp $userCurrent->getId();
  1948.         }
  1949.         else{
  1950.             $userIDTemp $userID;
  1951.         }
  1952.         $customer $this->em
  1953.             ->getRepository(User::class)
  1954.             ->find($userIDTemp);
  1955.         if ( !$customer ) {
  1956.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  1957.             return $this->redirectToRoute('app_login');
  1958.         }
  1959.         $membershipCurrent $this->em
  1960.             ->getRepository(Membership::class)
  1961.             ->find($membershipID);
  1962.         if ( !$membershipCurrent ) {
  1963.             $this->addFlash('danger''Cette adhésion n\'existe pas');
  1964.             return $this->redirectToRoute('app_login');
  1965.         }
  1966.         //Generate (re)
  1967.         if($membershipCurrent->getPlatformVersion() == 2){
  1968.             $this->utils->generateFic($customer$membershipCurrent->getFic());
  1969.         }
  1970.         $this->utils->generateBa($customer$membershipCurrent->getBa());
  1971.         if(!$membershipCurrent->getUrlSignSeller()){
  1972.             $responseProcedure $this->utils->addSign($customer$membershipCurrent"seller");
  1973.             if($responseProcedure && !$responseProcedure['responseErrorTab']){
  1974.                 $membershipCurrent->setUrlSign($responseProcedure['signerCustomerUrl']);
  1975.                 $membershipCurrent->setUrlSignSeller($responseProcedure['signerSellerUrl']);
  1976.                 $membershipCurrent->setMemberId($responseProcedure['signerCustomerId']);
  1977.                 $membershipCurrent->setSellerMemberId($responseProcedure['signerSellerId']);
  1978.                 $membershipCurrent->setMemberLegal1Id($responseProcedure['signerCustomerLegal1Id']);
  1979.                 $membershipCurrent->setMemberLegal2Id($responseProcedure['signerCustomerLegal2Id']);
  1980.                 $membershipCurrent->setYousignVersion(3);
  1981.                 //$membershipCurrent->setMemberId($memberCustomerId);
  1982.                 $urlSignSeller $membershipCurrent->getUrlSignSeller();
  1983.                 $membershipCurrent->setProcedureId($responseProcedure['responseProcedure']->id);
  1984.                 
  1985.                 //$membershipCurrent->setSignedSeller(1);
  1986.                 if($membershipCurrent->getPlatformVersion() == 1){
  1987.                     //V1 DIC
  1988.                     $membershipCurrent->getDic()->setIdYouSign($responseProcedure['dicFileId']);
  1989.                     $this->em->persist($membershipCurrent->getDic());
  1990.                 } else {
  1991.                     //V2 FIC
  1992.                     $membershipCurrent->getFic()->setIdYouSign($responseProcedure['ficFileId']);
  1993.                     $this->em->persist($membershipCurrent->getFic());
  1994.                 }
  1995.                 
  1996.                 $membershipCurrent->getBa()->setIdYouSign($responseProcedure['baFileId']);
  1997.                 $membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
  1998.                 $membershipCurrent->setStartProcedureSignDate(new \DateTime());
  1999.                 
  2000.                 //Save current membership for redirection
  2001.                 $userCurrent->setCurrentSign($membershipCurrent->getId());
  2002.                 $this->em->persist($userCurrent);
  2003.                 $this->em->persist($membershipCurrent->getBa());
  2004.                 $this->em->persist($membershipCurrent);
  2005.                 $this->em->flush();
  2006.             }
  2007.             else{
  2008.                 //Set error Yousign
  2009.                 $membershipCurrent->setErrorYouSign(json_encode($responseProcedure));
  2010.                 $this->em->persist($membershipCurrent);
  2011.                 $this->em->flush();
  2012.                 $this->addFlash('danger'"Une erreur est survenue, veuillez contacter le support de l'application");
  2013.                 return $this->redirectToRoute('app_login');
  2014.             }
  2015.         } 
  2016.         else {
  2017.             $urlSignSeller $membershipCurrent->getUrlSignSeller();
  2018.         }
  2019.         
  2020.         $this->em->persist($membershipCurrent);
  2021.         $this->em->flush();
  2022.         sleep(2);
  2023.         
  2024.         header('Location: '.$urlSignSeller);
  2025.         exit();
  2026.     }
  2027.     /**
  2028.      * @Route("/customer/{userID}/membership/{membershipID}/sign", name="membership_sign")
  2029.      */
  2030.     public function member_sign(Request $request$userID$membershipID){
  2031.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  2032.         $yousignUrlLink $this->getParameter('yousign_url_link');
  2033.         $customer $this->em
  2034.             ->getRepository(User::class)
  2035.             ->find($userCurrent->getId());
  2036.         if ( !$customer ) {
  2037.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  2038.             return $this->redirectToRoute('app_login');
  2039.         }
  2040.         //If no membership
  2041.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  2042.         //Generate (re)
  2043.         if($membershipCurrent->getPlatformVersion() == 2){
  2044.             //$this->utils->generateFic($customer);
  2045.         }
  2046.         //Set date now
  2047.         $membershipCurrent->getBa()->setDateEffetAdhesion(new \DateTime());
  2048.         $this->em->persist($membershipCurrent->getBa());
  2049.         $this->em->persist($membershipCurrent);
  2050.         $this->em->flush();
  2051.         //Get Update customer membership 
  2052.         $customer $this->em
  2053.             ->getRepository(User::class)
  2054.             ->find($userCurrent->getId());
  2055.         if($customer->isIsAutoSignup()){
  2056.             $this->utils->generateBaFullweb($customer);
  2057.         }
  2058.         else{
  2059.             $this->utils->generateBa($customer);
  2060.         }
  2061.         if($membershipCurrent->getPlatformVersion() == || $customer->isIsAutoSignup()){
  2062.             $responseProcedure $this->utils->addSign($customer$membershipCurrent"customer");
  2063.             if($responseProcedure && !$responseProcedure['responseErrorTab']){
  2064.                 $membershipCurrent->setUrlSign($responseProcedure['signerCustomerUrl']);
  2065.                 $membershipCurrent->setUrlSignSeller($responseProcedure['signerSellerUrl']);
  2066.                 $membershipCurrent->setMemberId($responseProcedure['signerCustomerId']);
  2067.                 $membershipCurrent->setSellerMemberId($responseProcedure['signerSellerId']);
  2068.                 $membershipCurrent->setProcedureId($responseProcedure['responseProcedure']->id);
  2069.                 $membershipCurrent->setYousignVersion(3);
  2070.                 $membershipCurrent->setValidatedFolderByCustomer(1);
  2071.                 if($membershipCurrent->getPlatformVersion() == 1){
  2072.                     if(!$membershipCurrent->getDicIsFile()){
  2073.                         //V1 DIC
  2074.                         $membershipCurrent->getDic()->setIdYouSign($responseProcedure['dicFileId']);
  2075.                         $this->em->persist($membershipCurrent->getDic());
  2076.                     }
  2077.                 } else {
  2078.                     //V2 FIC
  2079.                     $membershipCurrent->getFic()->setIdYouSign($responseProcedure['ficFileId']);
  2080.                     $this->em->persist($membershipCurrent->getFic());
  2081.                 }
  2082.                 
  2083.                 $membershipCurrent->getBa()->setIdYouSign($responseProcedure['baFileId']);
  2084.                 $membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
  2085.                 $membershipCurrent->setStartProcedureSignDate(new \DateTime());
  2086.                 
  2087.                 $this->em->persist($membershipCurrent->getBa());
  2088.                 $this->em->persist($membershipCurrent);
  2089.                 $this->em->flush();
  2090.                 sleep(3);
  2091.                 $urlSign $responseProcedure['signerCustomerUrl'];
  2092.             }
  2093.             else{
  2094.                 //Set error Yousign
  2095.                 $membershipCurrent->setErrorYouSign(json_encode($responseProcedure));
  2096.                 $this->em->persist($membershipCurrent);
  2097.                 $this->em->flush();
  2098.                 $this->addFlash('danger'"Une erreur est survenue, veuillez contacter le support de l'application");
  2099.                 return $this->redirectToRoute('app_login');
  2100.             }
  2101.         } else{
  2102.             /*
  2103.             $responseMember = $this->utils->updateBaSign($customer, $membershipCurrent);
  2104.             $membershipCurrent->setErrorYouSign(json_encode($responseMember['responseMember']));
  2105.             $membershipCurrent->getBa()->setIdYouSign($responseMember['baFileId']);
  2106.             $membershipCurrent->getBa()->setSepaIdYouSign($responseProcedure['sepaFileId']);
  2107.             $this->em->persist($membershipCurrent);
  2108.             $this->em->flush();
  2109.             */
  2110.             /* CREATE NEW SIGN URL - 48 hours */
  2111.             // Fetch the signature link for the second Signer once the first one has signed
  2112.             $client = new Client();
  2113.             $yousignUrl $this->getParameter('yousign_url');
  2114.             $yousignApi $this->getParameter('yousign_api');
  2115.             $newSignatureId $membershipCurrent->getProcedureId();
  2116.             $customerSignatureResponse $client->request('GET'$yousignUrl .'/signature_requests/'.$newSignatureId.'/signers/'.$membershipCurrent->getMemberId(), 
  2117.                 [
  2118.                     'headers' => [
  2119.                         'accept' => 'application/json',
  2120.                         'content-type' => 'application/json',
  2121.                         'Authorization' => 'Bearer ' $yousignApi
  2122.                     ],
  2123.                 ]
  2124.             );
  2125.             //201 for create
  2126.             $customerSignatureResponseBody json_decode($customerSignatureResponse->getBody());
  2127.             $signatureLink $customerSignatureResponseBody->signature_link;
  2128.             
  2129.             $membershipCurrent->setUrlSign($signatureLink);
  2130.             $this->em->persist($membershipCurrent);
  2131.             $this->em->flush();
  2132.             $urlSign $signatureLink;
  2133.         }
  2134.         
  2135.         header('Location: '.$urlSign);
  2136.         exit();
  2137.     }
  2138.     /**
  2139.      * @Route("/customer/{userID}/sign/success", name="customer_sign_success")
  2140.      */
  2141.     public function member_sign_success(Request $request$userID){
  2142.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  2143.         if($userID == "me"){
  2144.             $userID $userCurrent->getId();
  2145.         }
  2146.         $user $this->em
  2147.             ->getRepository(User::class)
  2148.             ->find($userID);
  2149.         if ( !$user ) {
  2150.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  2151.             return $this->redirectToRoute('app_login');
  2152.         }
  2153.         sleep(2);
  2154.         //V2 (SELLER + CUSTOMER)
  2155.         if($this->roleService->isGranted('ROLE_SELLER'$user)){
  2156.             $membershipCurrentId $user->getCurrentSign();
  2157.             if($membershipCurrentId){
  2158.                 $membershipCurrent $this->em
  2159.                     ->getRepository(Membership::class)
  2160.                     ->find($membershipCurrentId);
  2161.                 $membershipCurrent->setSignedSeller(1);
  2162.                 $user->setCurrentSign(null);
  2163.                 $this->em->persist($membershipCurrent);
  2164.                 $this->em->persist($user);
  2165.                 $this->em->flush();
  2166.                 
  2167.                 $this->addFlash('success''Votre signature a bien été prise en compte, vous pouvez valider et transmettre votre dossier.');
  2168.                 return $this->redirectToRoute('membership_view', ["userID" => $membershipCurrent->getUser()->getId(), "membershipID" => $membershipCurrent->getId()]);
  2169.             }
  2170.             else{
  2171.                 $this->addFlash('success''Votre signature a bien été prise en compte, vous pouvez valider et transmettre votre dossier.');
  2172.                 return $this->redirectToRoute('customer_list');
  2173.             }
  2174.         }
  2175.         else{
  2176.             //If no membership
  2177.             $membershipCurrent $this->utils->getMembershipByCustomer($user);
  2178.             $membershipCurrent->setValidatedFolderByCustomer(1);
  2179.             if($membershipCurrent->getBa()->getMoyenDeVersement() == "0"){
  2180.                 $membershipCurrent->setStatus("SIGNBYCUSTOMER");
  2181.             }
  2182.             else{
  2183.                 $membershipCurrent->setStatus("PAYBYCUSTOMER");
  2184.             }
  2185.             //$this->member_sign_end($request, $membershipCurrent->getId());
  2186.             
  2187.             $this->em->persist($membershipCurrent);
  2188.             $this->em->flush();
  2189.             if($membershipCurrent->getUser()->isIsAutoSignup()){
  2190.                 //Set end step
  2191.                 $userCurrent->setStepSignup("end");
  2192.                 $this->em->persist($userCurrent);
  2193.                 $this->em->flush();
  2194.                 $this->addFlash('success''Votre signature a bien été prise en compte, vous allez recevoir les documents par email.');
  2195.                 return $this->redirectToRoute('member_signup', ["token" => $userCurrent->getTokenSignupContinue()]);
  2196.             }
  2197.             
  2198.             $this->addFlash('success''Votre signature a bien été prise en compte, vous allez recevoir les documents par email.');
  2199.             return $this->redirectToRoute('membership_view', ["userID" => 'me'"membershipID" => $membershipCurrent->getId()]);
  2200.         }
  2201.     }
  2202.     /**
  2203.      * @Route("/customer/{userID}/membership/{membershipID}/payment", name="customer_payment")
  2204.      */
  2205.     public function member_payment(Request $request$userID$membershipID){
  2206.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  2207.         if($userID == "me"){
  2208.             $userID $userCurrent->getId();
  2209.         }
  2210.         $customer $this->em
  2211.             ->getRepository(User::class)
  2212.             ->find($userID);
  2213.         if ( !$customer ) {
  2214.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  2215.             return $this->redirectToRoute('app_login');
  2216.         }
  2217.         $systemPayUser $this->getParameter('system_pay_user');
  2218.         $systemPayPassword $this->getParameter('system_pay_password');
  2219.         $systemPayUrl $this->getParameter('system_pay_url');
  2220.         //If no membership
  2221.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  2222.         //Name client description
  2223.         //$membershipCurrent->getNumberMembershipFolder().'-'.$membershipCurrent->getUser()->getFirstName().'-'.$membershipCurrent->getUser()->getFirstName()
  2224.         $urlIPn $this->generateUrl('yousign_payment_end'
  2225.             array(
  2226.                 'membershipID' => $membershipCurrent->getId()
  2227.             ), 
  2228.         UrlGeneratorInterface::ABSOLUTE_URL);
  2229.         $client = new \Lyra\Client();   
  2230.         $client->setUsername($systemPayUser);
  2231.         $client->setPassword($systemPayPassword);
  2232.         $client->setEndpoint($systemPayUrl);
  2233.         $price $membershipCurrent->getBa()->getVersementInitial();
  2234.         if(strpos($price".") == true) {
  2235.             $price str_replace("."""$price);
  2236.         }
  2237.         else{
  2238.             $price strval($price)."00";
  2239.             $price intval($price);
  2240.         }
  2241.         $store = array("amount" => $price
  2242.             "currency" => "EUR"
  2243.             "orderId" => $customer->getId()."-".$membershipCurrent->getId(),
  2244.             "ipnTargetUrl" => $urlIPn,
  2245.             "customer" => array(
  2246.               "email" => $customer->getEmail(),
  2247.               "reference" => $membershipCurrent->getNumberMembershipFolder(),
  2248.         ));
  2249.         $response $client->post("V4/Charge/CreatePayment"$store);
  2250.         $tokenPayment $response['answer']['formToken'];
  2251.         //If no membership
  2252.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  2253.         return $this->render('membership/payment/payment.html.twig', [
  2254.             'menu' => 'customer',
  2255.             'membership' => $membershipCurrent,
  2256.             'customer' => $customer,
  2257.             "tokenPayment" => $tokenPayment
  2258.         ]);
  2259.     }
  2260.     /**
  2261.      * @Route("/customer/{userID}/payment/success", name="customer_payment_success")
  2262.      */
  2263.     public function member_payment_success(Request $request$userID){
  2264.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  2265.         if($userID == "me"){
  2266.             $userID $userCurrent->getId();
  2267.         }
  2268.         $customer $this->em
  2269.             ->getRepository(User::class)
  2270.             ->find($userID);
  2271.         if ( !$customer ) {
  2272.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  2273.             return $this->redirectToRoute('app_login');
  2274.         }
  2275.         //If no membership
  2276.         $membershipCurrent $this->utils->getMembershipByCustomer($customer);
  2277.         $membershipCurrent->setStatus("PAYBYCUSTOMER");
  2278.         $this->em->persist($membershipCurrent);
  2279.         //$this->em->flush();
  2280.         
  2281.         $this->addFlash('success''Votre paiement a bien été pris en compte.');
  2282.         return $this->redirectToRoute('membership_view', ["userID" => 'me'"membershipID" => $membershipCurrent->getId()]);
  2283.     }
  2284.     /**
  2285.      * @Route("/customer/{userID}/membership/reset-sign/{membershipID}", name="yousign_reset_sign")
  2286.      */
  2287.     public function member_reset_sign(Request $request$userID$membershipID){
  2288.         //$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
  2289.         $membershipCurrent $this->em
  2290.                 ->getRepository(Membership::class)
  2291.                 ->find($membershipID);
  2292.         if ( !$membershipCurrent ) {
  2293.             $this->addFlash('danger''Ce dossier n\'existe pas');
  2294.             return $this->redirectToRoute('app_login');
  2295.         }
  2296.         if ( $userID != $membershipCurrent->getUser()->getId() ) {
  2297.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  2298.             return $this->redirectToRoute('app_login');
  2299.         }
  2300.         //Ba and Membership
  2301.         $membershipCurrent->setMailSendCustomer(null);
  2302.         $membershipCurrent->setMailSendSeller(null);
  2303.         $membershipCurrent->setMailSendGestion(null);
  2304.         $membershipCurrent->setMemberLegal1Sign(null);
  2305.         $membershipCurrent->setMemberLegal2Sign(null);
  2306.         $membershipCurrent->setUrlSign(null);
  2307.         $membershipCurrent->setUrlSignSeller(null);
  2308.         $membershipCurrent->setSignedSeller(null);
  2309.         $membershipCurrent->setSignedSellerHooks(null);
  2310.         $membershipCurrent->getBa()->setSepaIdYouSign(null);
  2311.         $membershipCurrent->getBa()->setSepaUrlPdfSign(null);
  2312.         $membershipCurrent->getBa()->setIdYouSign(null);
  2313.         $membershipCurrent->getBa()->setUrlPdfSign(null);
  2314.         $this->em->persist($membershipCurrent->getBa());
  2315.         if($membershipCurrent->getPlatformVersion() == 1){
  2316.             //No fic, just one sign
  2317.             $membershipCurrent->setStatus("VALIDBYCUSTOMER");
  2318.         }
  2319.         else{
  2320.             //With FIC, 2 signs
  2321.             $membershipCurrent->setStatus("DRAFT");
  2322.             $membershipCurrent->setValidatedFolderBySeller(null);
  2323.             $membershipCurrent->getFic()->setIdYouSign(null);
  2324.             $membershipCurrent->getFic()->setUrlPdfSign(null);
  2325.             $this->em->persist($membershipCurrent->getFic());
  2326.         }
  2327.         $this->em->persist($membershipCurrent);
  2328.         $this->em->flush();
  2329.         $this->addFlash('success''La signature a bien été rénitialisé');
  2330.         return $this->redirectToRoute('membership_view', ["userID" => $userID"membershipID" => $membershipCurrent->getId()]);
  2331.     }
  2332.     /**
  2333.      * @Route("/yousignv3/sign", name="yousignv3_sign_end")
  2334.      */
  2335.     public function member_sign_end_v3(Request $request){
  2336.         //$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
  2337.         $requestHook json_decode($request->getContent());
  2338.         $yousignUrl $this->getParameter('yousign_url');
  2339.         $yousignApi $this->getParameter('yousign_api');
  2340.         $newSignatureId $requestHook->data->signature_request->id;
  2341.         /*
  2342.             TEST RESPONSE POST HOOK
  2343.         */
  2344.         
  2345.         /*
  2346.         $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
  2347.         $txt = "Data : ".json_encode($requestHook);
  2348.         fwrite($myfile, $txt);
  2349.         fclose($myfile);
  2350.         
  2351.         $myfile = fopen("signatureId.txt", "w") or die("Unable to open file!");
  2352.         $txt = "Signature ID  : ".$newSignatureId;
  2353.         fwrite($myfile, $txt);
  2354.         fclose($myfile);
  2355.         */
  2356.         //Get metadata
  2357.         $client = new Client();
  2358.         $metaDatas $client->request('GET'$yousignUrl .'/signature_requests/'.$newSignatureId.'/metadata'
  2359.             [
  2360.                 'headers' => [
  2361.                     'accept' => 'application/json',
  2362.                     'content-type' => 'application/json',
  2363.                     'Authorization' => 'Bearer ' $yousignApi
  2364.                 ],
  2365.             ]
  2366.         );
  2367.         //201 for create
  2368.         $metaDatasBody json_decode($metaDatas->getBody());
  2369.         $datas $metaDatasBody->data;
  2370.         $membershipID $datas->membershipId;
  2371.         $membershipCurrent $this->em
  2372.             ->getRepository(Membership::class)
  2373.             ->find($membershipID);
  2374.         /* Note : Check procedure id $requestHook->procedure-id and save in database */
  2375.         if($membershipCurrent->getPlatformVersion() == || $membershipCurrent->getUser()->isIsAutoSignup()){
  2376.             //It's not for seller (no seller sign in V1)
  2377.             //Postion 2, it's for Customer
  2378.             $this->member_sign_end($request$membershipID);
  2379.             return new Response(true);
  2380.         }
  2381.         else{
  2382.             if($requestHook->data->signer->id == $membershipCurrent->getSellerMemberId()){
  2383.                 //Save files
  2384.                 $this->utils->saveFilesYouSignV3($membershipCurrent"seller");
  2385.                 $membershipCurrent->setSignedSeller(1);
  2386.                 $membershipCurrent->setSignedSellerHooks(1);
  2387.                  // Fetch the signature link for the second Signer once the first one has signed
  2388.                 $customerSignatureResponse $client->request('GET'$yousignUrl .'/signature_requests/'.$newSignatureId.'/signers/'.$membershipCurrent->getMemberId(), 
  2389.                     [
  2390.                         'headers' => [
  2391.                             'accept' => 'application/json',
  2392.                             'content-type' => 'application/json',
  2393.                             'Authorization' => 'Bearer ' $yousignApi
  2394.                         ],
  2395.                     ]
  2396.                 );
  2397.                 //201 for create
  2398.                 $customerSignatureResponseBody json_decode($customerSignatureResponse->getBody());
  2399.                 $signatureLink $customerSignatureResponseBody->signature_link;
  2400.                 $membershipCurrent->setUrlSign($signatureLink);
  2401.                 $this->em->persist($membershipCurrent);
  2402.                 $this->em->flush();
  2403.                 return new Response(true);
  2404.             } else {
  2405.                 $isLegal1 $membershipCurrent->getBa()->isRepLegal1Use(); 
  2406.                 $isLegal2 $membershipCurrent->getBa()->isRepLegal2Use(); 
  2407.                 //Postion 2, it's for Customer
  2408.                 if($requestHook->data->signer->id == $membershipCurrent->getMemberId()){
  2409.                     if($isLegal1){
  2410.                         $this->utils->saveFilesYouSignV3($membershipCurrent"customer");
  2411.                     }
  2412.                     else{
  2413.                         $this->member_sign_end($request$membershipID);
  2414.                     }
  2415.                 }
  2416.                 if($isLegal1){
  2417.                     if($requestHook->data->signer->id == $membershipCurrent->getMemberLegal1Id()){
  2418.                         $membershipCurrent->setMemberLegal1Sign(true);
  2419.                         $this->em->persist($membershipCurrent);
  2420.                         $this->em->flush();
  2421.                         $this->utils->saveFilesYouSignV3($membershipCurrent"customer");
  2422.                         if(!$isLegal2){
  2423.                             $this->member_sign_end($request$membershipID);
  2424.                         }
  2425.                     }
  2426.                 }
  2427.                 if($isLegal2){
  2428.                     if($requestHook->data->signer->id == $membershipCurrent->getMemberLegal2Id()){
  2429.                         $membershipCurrent->setMemberLegal2Sign(true);
  2430.                         $this->em->persist($membershipCurrent);
  2431.                         $this->em->flush();
  2432.                         $this->member_sign_end($request$membershipID);
  2433.                     }
  2434.                 }
  2435.                 return new Response(true);
  2436.             }
  2437.         }
  2438.     }
  2439.     /**
  2440.      * @Route("/yousign/sign/{membershipID}", name="yousign_sign_end_seller")
  2441.      */
  2442.     public function member_sign_end_seller(Request $request$membershipID){
  2443.         //$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
  2444.         $requestHook json_decode($request->getContent());
  2445.         /*
  2446.             TEST RESPONSE POST HOOK
  2447.         */
  2448.         
  2449.         /*
  2450.         $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
  2451.         $txt = "Data : ".json_encode($requestHook);
  2452.         fwrite($myfile, $txt);
  2453.         fclose($myfile);
  2454.     
  2455.         die;
  2456.         */
  2457.         /* Note : Check procedure id $requestHook->procedure-id and save in database */
  2458.         $membershipCurrent $this->em
  2459.                 ->getRepository(Membership::class)
  2460.                 ->find($membershipID);
  2461.         if($membershipCurrent->getPlatformVersion() == 1){
  2462.             //It's not for seller (no seller sign in V1)
  2463.             //Postion 2, it's for Customer
  2464.             $this->member_sign_end($request$membershipID);
  2465.             return new Response(true);
  2466.         }
  2467.         else{
  2468.             if($requestHook->member->position == 1){
  2469.                 $membershipCurrent $this->em
  2470.                     ->getRepository(Membership::class)
  2471.                     ->find($membershipID);
  2472.                 //Save files
  2473.                 $this->utils->saveFilesYouSign($membershipCurrent"seller");
  2474.                 $membershipCurrent->setSignedSeller(1);
  2475.                 $membershipCurrent->setSignedSellerHooks(1);
  2476.                 $this->em->persist($membershipCurrent);
  2477.                 $this->em->flush();
  2478.                 return new Response(true);
  2479.             } else {
  2480.                 //Postion 2, it's for Customer
  2481.                 if($requestHook->member->position == 2){
  2482.                     $this->member_sign_end($request$membershipID);
  2483.                 }
  2484.                 return new Response(true);
  2485.             }
  2486.         }
  2487.     }
  2488.     /**
  2489.      * @Route("/yousign/sign-customer/{membershipID}", name="yousign_sign_end")
  2490.      */
  2491.     public function member_sign_end(Request $request$membershipID){
  2492.         //$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
  2493.         $membershipCurrent $this->em
  2494.             ->getRepository(Membership::class)
  2495.             ->find($membershipID);
  2496.         if($membershipCurrent->getBa()->getMoyenDeVersement() == "0"){
  2497.             $membershipCurrent->setStatus("SIGNBYCUSTOMER");
  2498.         }
  2499.         else{
  2500.             $membershipCurrent->setStatus("PAYBYCUSTOMER");
  2501.         }
  2502.         $membershipCurrent->setSignDate(new \DateTime());
  2503.         $this->em->persist($membershipCurrent);
  2504.         $this->em->flush();
  2505.         $customer $membershipCurrent->getUser();
  2506.         //Save files
  2507.         if($membershipCurrent->getYousignVersion() == 3){
  2508.             $this->utils->saveFilesYouSignV3($membershipCurrent"customer");
  2509.         }
  2510.         else{
  2511.             $this->utils->saveFilesYouSign($membershipCurrent"customer");
  2512.         }
  2513.         //Send files (customer + seller)
  2514.         $mailNoReply $this->getParameter('mail_no_reply');
  2515.         $senderName $this->getParameter('sender_name');
  2516.         $mailGestion $this->getParameter('mail_gestion');
  2517.         $urlLogin $this->generateUrl('app_login'
  2518.                 array(
  2519.                     
  2520.             ), 
  2521.         UrlGeneratorInterface::ABSOLUTE_URL);
  2522.         if($membershipCurrent->getUser()->isIsAutoSignup()){
  2523.             $bodyEmail $this->renderView(
  2524.                 'email/sendFilesSignFullweb.html.twig',
  2525.                 array('membership' => $membershipCurrent'urlLogin' => $urlLogin)
  2526.             );
  2527.         } else {
  2528.             $bodyEmail $this->renderView(
  2529.                 'email/sendFilesSign.html.twig',
  2530.                 array('membership' => $membershipCurrent'urlLogin' => $urlLogin)
  2531.             );
  2532.         } 
  2533.         if(!$membershipCurrent->getUser()->isIsAutoSignup()){
  2534.             $bodyEmailSeller $this->renderView(
  2535.                 'email/sendFilesSignSeller.html.twig',
  2536.                 array('membership' => $membershipCurrent'urlLogin' => $urlLogin)
  2537.             );
  2538.         }
  2539.         $bodyEmailGestion $this->renderView(
  2540.             'email/sendFilesSignGestion.html.twig',
  2541.             array('membership' => $membershipCurrent)
  2542.         );
  2543.         $weight 0;
  2544.         $attachmentDic true;
  2545.         $attachmentFraisPdf null;
  2546.         if($membershipCurrent->getDicIsFile() == true){
  2547.             /* FOR SEND CUSTOM DIC */ 
  2548.             if($membershipCurrent->getFileByType("dic-custom")){
  2549.                 if($membershipCurrent->getFileByType("dic-custom")->getExtension() == "pdf"){
  2550.                     $contentType "application/pdf";
  2551.                 }
  2552.                 else{
  2553.                     $contentType "image/".$membershipCurrent->getFileByType("dic-custom")->getExtension();
  2554.                 }
  2555.                 $attachmentDic \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("dic-custom")->getFileName(), $contentType);
  2556.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("dic-custom")->getFileName());
  2557.             }
  2558.             else{
  2559.                 $attachmentDic false;
  2560.             }
  2561.             //$attachmentDic = false;
  2562.         }
  2563.         else{
  2564.             if($membershipCurrent->getPlatformVersion() == 1){
  2565.                 //V1 DIC
  2566.                 $attachmentDic \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign(), "application/pdf");
  2567.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getDic()->getUrlPdfSign());
  2568.             } else {
  2569.                 //V2 FIC
  2570.                 $attachmentDic \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign(), "application/pdf");
  2571.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFic()->getUrlPdfSign());
  2572.             }
  2573.         }
  2574.         $attachmentBa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign(), "application/pdf");
  2575.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getUrlPdfSign());
  2576.         if(!$membershipCurrent->getUser()->isIsAutoSignup()){
  2577.             $attachmentStatus \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf""application/pdf");
  2578.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf");
  2579.             $attachmentReglement \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/REGLEMENT.pdf""application/pdf");
  2580.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/REGLEMENT.pdf");
  2581.             $attachmentDicPdf \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/DIC.pdf""application/pdf");
  2582.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/DIC.pdf");
  2583.             if($membershipCurrent->getProduct() == "retraite"){
  2584.                 //Frais
  2585.                 $attachmentFraisPdf \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/FRAIS.pdf""application/pdf");
  2586.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membershipCurrent->getProduct()."/FRAIS.pdf");
  2587.             }
  2588.         }
  2589.         $title "Merci pour votre signature";
  2590.         $subject "Merci pour votre signature";
  2591.         //For CUSTOMER
  2592.         if(($membershipCurrent->getBa()->getVersementProgramme() == || $membershipCurrent->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
  2593.             $attachmentSepa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
  2594.             if($attachmentDic != false){
  2595.                 if($membershipCurrent->getPlatformVersion() == 1){
  2596.                     //V1 DIC
  2597.                     $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2598.                     ->setSubject("Vos documents signés électroniquement")
  2599.                     ->setFrom(array($mailNoReply => $senderName))
  2600.                     ->setTo(array($customer->getEmail() => $senderName))
  2601.                     ->setBody($bodyEmail,'text/html')
  2602.                     ->attach($attachmentDic)
  2603.                     ->attach($attachmentBa)
  2604.                     ->attach($attachmentSepa)
  2605.                     ->attach($attachmentStatus)
  2606.                     ->attach($attachmentReglement)
  2607.                     ;
  2608.                     if($attachmentFraisPdf){
  2609.                         $message->attach($attachmentFraisPdf);
  2610.                     }
  2611.                 } else {
  2612.                     //V2 FIC
  2613.                     if($membershipCurrent->getUser()->isIsAutoSignup()){
  2614.                         $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2615.                         ->setSubject("Vos documents signés électroniquement")
  2616.                         ->setFrom(array($mailNoReply => $senderName))
  2617.                         ->setTo(array($customer->getEmail() => $senderName))
  2618.                         ->setBody($bodyEmail,'text/html')
  2619.                         ->attach($attachmentDic)
  2620.                         ->attach($attachmentBa)
  2621.                         ->attach($attachmentSepa)
  2622.                         ;
  2623.                     } else {
  2624.                         $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2625.                         ->setSubject("Vos documents signés électroniquement")
  2626.                         ->setFrom(array($mailNoReply => $senderName))
  2627.                         ->setTo(array($customer->getEmail() => $senderName))
  2628.                         ->setBody($bodyEmail,'text/html')
  2629.                         ->attach($attachmentDic)
  2630.                         ->attach($attachmentBa)
  2631.                         ->attach($attachmentSepa)
  2632.                         ->attach($attachmentStatus)
  2633.                         ->attach($attachmentReglement)
  2634.                         ->attach($attachmentDicPdf)
  2635.                         ;
  2636.                         if($attachmentFraisPdf){
  2637.                             $message->attach($attachmentFraisPdf);
  2638.                         }
  2639.                     }
  2640.                 }
  2641.             } else {
  2642.                 $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2643.                 ->setSubject("Vos documents signés électroniquement")
  2644.                 ->setFrom(array($mailNoReply => $senderName))
  2645.                 ->setTo(array($customer->getEmail() => $senderName))
  2646.                 ->setBody($bodyEmail,'text/html')
  2647.                 ->attach($attachmentBa)
  2648.                 ->attach($attachmentSepa)
  2649.                 ->attach($attachmentStatus)
  2650.                 ->attach($attachmentReglement)
  2651.                 ;
  2652.                 if($attachmentFraisPdf){
  2653.                     $message->attach($attachmentFraisPdf);
  2654.                 }
  2655.             }
  2656.         }
  2657.         else{
  2658.             if($attachmentDic != false){
  2659.                 if($membershipCurrent->getUser()->isIsAutoSignup()){
  2660.                     $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2661.                     ->setSubject("Vos documents signés électroniquement")
  2662.                     ->setFrom(array($mailNoReply => $senderName))
  2663.                     ->setTo(array($customer->getEmail() => $senderName))
  2664.                     ->setBody($bodyEmail,'text/html')
  2665.                     ->attach($attachmentDic)
  2666.                     ->attach($attachmentBa)
  2667.                     ;
  2668.                 } else {
  2669.                     $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2670.                     ->setSubject("Vos documents signés électroniquement")
  2671.                     ->setFrom(array($mailNoReply => $senderName))
  2672.                     ->setTo(array($customer->getEmail() => $senderName))
  2673.                     ->setBody($bodyEmail,'text/html')
  2674.                     ->attach($attachmentDic)
  2675.                     ->attach($attachmentBa)
  2676.                     ->attach($attachmentStatus)
  2677.                     ->attach($attachmentReglement)
  2678.                     ;
  2679.                     if($attachmentFraisPdf){
  2680.                         $message->attach($attachmentFraisPdf);
  2681.                     }
  2682.                 }
  2683.             } else {
  2684.                 $message = (new \Swift_Message("Vos documents signés électroniquement"))
  2685.                 ->setSubject("Vos documents signés électroniquement")
  2686.                 ->setFrom(array($mailNoReply => $senderName))
  2687.                 ->setTo(array($customer->getEmail() => $senderName))
  2688.                 ->setBody($bodyEmail,'text/html')
  2689.                 ->attach($attachmentBa)
  2690.                 ->attach($attachmentStatus)
  2691.                 ->attach($attachmentReglement)
  2692.                 ;
  2693.                 if($attachmentFraisPdf){
  2694.                     $message->attach($attachmentFraisPdf);
  2695.                 }
  2696.             }
  2697.         }
  2698.         if(!$membershipCurrent->getMailSendCustomer()){
  2699.             $this->mailer->send($message);
  2700.             $membershipCurrent->setMailSendCustomer(true);
  2701.             $this->em->persist($membershipCurrent);
  2702.             $this->em->flush();
  2703.         }
  2704.         //For SELLER
  2705.         if(!$membershipCurrent->getUser()->isIsAutoSignup()){
  2706.             if($membershipCurrent->getBa()->getVersementProgramme() == || $membershipCurrent->getBa()->getMoyenDeVersement() == 3){
  2707.                 $attachmentSepa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
  2708.                 $message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
  2709.                 ->setSubject("Une adhésion a été signée électroniquement")
  2710.                 ->setFrom(array($mailNoReply => $senderName))
  2711.                 ->setTo(array($membershipCurrent->getSeller()->getEmail() => $senderName))
  2712.                 ->setBody($bodyEmailSeller,'text/html')
  2713.                 //->attach($attachmentDic)
  2714.                 //->attach($attachmentBa)
  2715.                 //->attach($attachmentSepa)
  2716.                 ;
  2717.             }
  2718.             else{
  2719.                 $message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
  2720.                 ->setSubject("Une adhésion a été signée électroniquement")
  2721.                 ->setFrom(array($mailNoReply => $senderName))
  2722.                 ->setTo(array($membershipCurrent->getSeller()->getEmail() => $senderName))
  2723.                 ->setBody($bodyEmailSeller,'text/html')
  2724.                 //->attach($attachmentDic)
  2725.                 //->attach($attachmentBa)
  2726.                 ;
  2727.             }
  2728.             if(!$membershipCurrent->getMailSendSeller()){
  2729.                 $this->mailer->send($message);
  2730.                 $membershipCurrent->setMailSendSeller(true);
  2731.                 $this->em->persist($membershipCurrent);
  2732.                 $this->em->flush();
  2733.             }
  2734.         }
  2735.         //For GESTION
  2736.         if(($membershipCurrent->getBa()->getVersementProgramme() == || $membershipCurrent->getBa()->getMoyenDeVersement() == 3) && $membershipCurrent->getBa()->getSepaOriginVersmement() != 2){
  2737.             $attachmentSepa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getBa()->getSepaUrlPdfSign(), "application/pdf");
  2738.             $message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
  2739.             ->setSubject("Une adhésion a été signée électroniquement - ".$membershipCurrent->getProduct())
  2740.             ->setFrom(array($mailNoReply => $senderName))
  2741.             ->setTo(array($mailGestion => $senderName))
  2742.             ->setBody($bodyEmailGestion,'text/html')
  2743.             ->attach($attachmentBa)
  2744.             ->attach($attachmentSepa)
  2745.             ;
  2746.         }
  2747.         else{
  2748.             $message = (new \Swift_Message("Une adhésion a été signée électroniquement"))
  2749.             ->setSubject("Une adhésion a été signée électroniquement - ".$membershipCurrent->getProduct())
  2750.             ->setFrom(array($mailNoReply => $senderName))
  2751.             ->setTo(array($mailGestion => $senderName))
  2752.             ->setBody($bodyEmailGestion,'text/html')
  2753.             ->attach($attachmentBa)
  2754.             ;
  2755.         }
  2756.         if($attachmentDic){
  2757.             $message->attach($attachmentDic);
  2758.         }
  2759.         if(date('Ymd'strtotime($membershipCurrent->getBa()->getDateDeNaissance()->format("Y-m-d") . ' +18 years')) > date("Ymd")){
  2760.             if($membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")){
  2761.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getExtension());
  2762.                 //$message->attach($attachment);
  2763.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalRecto")->getFileName());
  2764.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2765.                 $message $returnMessage['message'];
  2766.                 if($returnMessage['newMail']){
  2767.                     $weight 0;
  2768.                 }
  2769.             }
  2770.             if($membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")){
  2771.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getExtension());
  2772.                 //$message->attach($attachment);
  2773.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifRepresentantLegalVerso")->getFileName());
  2774.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2775.                 $message $returnMessage['message'];
  2776.                 if($returnMessage['newMail']){
  2777.                     $weight 0;
  2778.                 }
  2779.             }
  2780.         }
  2781.         if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 0){
  2782.             if($membershipCurrent->getFileByType("idIdentityRecto")){
  2783.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idIdentityRecto")->getExtension());
  2784.                 //$message->attach($attachment);
  2785.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityRecto")->getFileName());
  2786.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2787.                 $message $returnMessage['message'];
  2788.                 if($returnMessage['newMail']){
  2789.                     $weight 0;
  2790.                 }
  2791.             }
  2792.             if($membershipCurrent->getFileByType("idIdentityVerso")){
  2793.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("idIdentityVerso")->getExtension());
  2794.                 //$message->attach($attachment);
  2795.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idIdentityVerso")->getFileName());
  2796.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2797.                 $message $returnMessage['message'];
  2798.                 if($returnMessage['newMail']){
  2799.                     $weight 0;
  2800.                 }
  2801.             }
  2802.         }
  2803.         if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 1){
  2804.             if($membershipCurrent->getFileByType("idPassportRecto")){
  2805.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idPassportRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idPassportRecto")->getExtension());
  2806.                 //$message->attach($attachment);
  2807.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idPassportRecto")->getFileName());
  2808.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2809.                 $message $returnMessage['message'];
  2810.                 if($returnMessage['newMail']){
  2811.                     $weight 0;
  2812.                 }
  2813.             }
  2814.         }
  2815.         if($membershipCurrent->getFileByType("idJustificatifFonds")){
  2816.             $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifFonds")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifFonds")->getExtension());
  2817.             //$message->attach($attachment);
  2818.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifFonds")->getFileName());
  2819.             $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2820.             $message $returnMessage['message'];
  2821.             if($returnMessage['newMail']){
  2822.                 $weight 0;
  2823.             }
  2824.         }
  2825.         if($membershipCurrent->getFileByType("avisImposition")){
  2826.             $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("avisImposition")->getFileName(), "image/".$membershipCurrent->getFileByType("avisImposition")->getExtension());
  2827.             //$message->attach($attachment);
  2828.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("avisImposition")->getFileName());
  2829.             $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2830.             $message $returnMessage['message'];
  2831.             if($returnMessage['newMail']){
  2832.                 $weight 0;
  2833.             }
  2834.         }
  2835.         if($membershipCurrent->getFileByType("idJustificatifDomicile")){
  2836.             $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getExtension());
  2837.             //$message->attach($attachment);
  2838.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifDomicile")->getFileName());
  2839.             $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2840.             $message $returnMessage['message'];
  2841.             if($returnMessage['newMail']){
  2842.                 $weight 0;
  2843.             }
  2844.         }
  2845.         if($membershipCurrent->getBa()->getTypeDePieceIdentite() == 2){
  2846.             if($membershipCurrent->getFileByType("idTitreSejourRecto")){
  2847.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getExtension());
  2848.                 //$message->attach($attachment);
  2849.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourRecto")->getFileName());
  2850.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2851.                 $message $returnMessage['message'];
  2852.                 if($returnMessage['newMail']){
  2853.                     $weight 0;
  2854.                 }
  2855.             }
  2856.             if($membershipCurrent->getFileByType("idTitreSejourVerso")){
  2857.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getExtension());
  2858.                 //$message->attach($attachment);
  2859.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idTitreSejourVerso")->getFileName());
  2860.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2861.                 $message $returnMessage['message'];
  2862.                 if($returnMessage['newMail']){
  2863.                     $weight 0;
  2864.                 }
  2865.             }
  2866.         }
  2867.         if($membershipCurrent->getBa()->getVersementProgramme() == || $membershipCurrent->getBa()->getMoyenDeVersement() == 3){
  2868.             if($membershipCurrent->getFileByType("rib")){
  2869.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("rib")->getFileName(), "image/".$membershipCurrent->getFileByType("rib")->getExtension());
  2870.                 //$message->attach($attachment);
  2871.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("rib")->getFileName());
  2872.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2873.                 $message $returnMessage['message'];
  2874.                 if($returnMessage['newMail']){
  2875.                     $weight 0;
  2876.                 }
  2877.             }
  2878.         }
  2879.         if($membershipCurrent->getBa()->getDateCarteCombattant()){
  2880.             if($membershipCurrent->getFileByType("carteCombattantRecto")){
  2881.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("carteCombattantRecto")->getExtension());
  2882.                 //$message->attach($attachment);
  2883.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantRecto")->getFileName());
  2884.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2885.                 $message $returnMessage['message'];
  2886.                 if($returnMessage['newMail']){
  2887.                     $weight 0;
  2888.                 }
  2889.             }
  2890.             if($membershipCurrent->getFileByType("carteCombattantVerso")){
  2891.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("carteCombattantVerso")->getExtension());
  2892.                 //$message->attach($attachment);
  2893.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("carteCombattantVerso")->getFileName());
  2894.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2895.                 $message $returnMessage['message'];
  2896.                 if($returnMessage['newMail']){
  2897.                     $weight 0;
  2898.                 }
  2899.             }
  2900.         }
  2901.         if($membershipCurrent->getBa()->getDateReconnaisanceNation()){
  2902.             if($membershipCurrent->getFileByType("titreReconnaissanceRecto")){
  2903.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getExtension());
  2904.                 //$message->attach($attachment);
  2905.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceRecto")->getFileName());
  2906.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2907.                 $message $returnMessage['message'];
  2908.                 if($returnMessage['newMail']){
  2909.                     $weight 0;
  2910.                 }
  2911.             }
  2912.             if($membershipCurrent->getFileByType("titreReconnaissanceVerso")){
  2913.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getFileName(), "image/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getExtension());
  2914.                 //$message->attach($attachment);
  2915.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("titreReconnaissanceVerso")->getFileName());
  2916.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2917.                 $message $returnMessage['message'];
  2918.                 if($returnMessage['newMail']){
  2919.                     $weight 0;
  2920.                 }
  2921.             }
  2922.         }
  2923.         if($membershipCurrent->getBa()->getDateTranscriptionMention()){
  2924.             if($membershipCurrent->getFileByType("reportMentionRecto")){
  2925.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("reportMentionRecto")->getFileName(), "image/".$membershipCurrent->getFileByType("reportMentionRecto")->getExtension());
  2926.                 //$message->attach($attachment);
  2927.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("reportMentionRecto")->getFileName());
  2928.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2929.                 $message $returnMessage['message'];
  2930.                 if($returnMessage['newMail']){
  2931.                     $weight 0;
  2932.                 }
  2933.             }
  2934.         }
  2935.         //Facultatif file
  2936.         if($membershipCurrent->getFileByType("idJustificatifAutreFacultatif")){
  2937.             $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getFileName(), "image/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getExtension());
  2938.             //$message->attach($attachment);
  2939.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("idJustificatifAutreFacultatif")->getFileName());
  2940.             $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2941.             $message $returnMessage['message'];
  2942.             if($returnMessage['newMail']){
  2943.                 $weight 0;
  2944.             }
  2945.         }
  2946.         //Justificatif gain jeux
  2947.         if($membershipCurrent->getFileByType("justificatifFondsGainJeux")){
  2948.             $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getFileName(), "image/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getExtension());
  2949.             //$message->attach($attachment);
  2950.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$membershipCurrent->getFileByType("justificatifFondsGainJeux")->getFileName());
  2951.             $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2952.             $message $returnMessage['message'];
  2953.             if($returnMessage['newMail']){
  2954.                 $weight 0;
  2955.             }
  2956.         }
  2957.         //OtherFilesOrigineFond
  2958.         $numberFile 1;
  2959.         foreach ($membershipCurrent->getFileSends() as $file) {
  2960.             if($file->getType() == "other-file-origine-fond"){
  2961.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName(), "image/".$file->getExtension());
  2962.                 //$message->attach($attachment);
  2963.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName());
  2964.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2965.                 $message $returnMessage['message'];
  2966.                 if($returnMessage['newMail']){
  2967.                     $weight 0;
  2968.                 }
  2969.                 $numberFile++;
  2970.             }
  2971.         }
  2972.         //OtherFiles
  2973.         $numberFile 1;
  2974.         foreach ($membershipCurrent->getFileSends() as $file) {
  2975.             if($file->getType() == "other-file"){
  2976.                 $attachment \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName(), "image/".$file->getExtension());
  2977.                 //$message->attach($attachment);
  2978.                 $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membershipCurrent->getUser()->getId()."/".$file->getFileName());
  2979.                 $returnMessage $this->sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment);
  2980.                 $message $returnMessage['message'];
  2981.                 if($returnMessage['newMail']){
  2982.                     $weight 0;
  2983.                 }
  2984.                 $numberFile++;
  2985.             }
  2986.         }
  2987.           
  2988.         if(!$membershipCurrent->getMailSendGestion()){
  2989.             $this->mailer->send($message);
  2990.             $membershipCurrent->setMailSendGestion(true);
  2991.             $this->em->persist($membershipCurrent);
  2992.             $this->em->flush();
  2993.         }
  2994.         return new Response(true);
  2995.     }
  2996.     function sendMailNext($weight$message$bodyEmailGestion$membershipCurrent$attachment){
  2997.         if($weight 5000000){
  2998.             $message->attach($attachment);
  2999.             return array(
  3000.                 "message" => $message,
  3001.                 "newMail" => false
  3002.             );
  3003.         }
  3004.         else{
  3005.             if(!$membershipCurrent->getMailSendGestion()){
  3006.                 $this->mailer->send($message);
  3007.             }
  3008.             $mailNoReply $this->getParameter('mail_no_reply');
  3009.             $senderName $this->getParameter('sender_name');
  3010.             $mailGestion $this->getParameter('mail_gestion');
  3011.             $bodyEmailGestion $this->renderView(
  3012.                 'email/sendFilesSignGestion.html.twig',
  3013.                 array('membership' => $membershipCurrent)
  3014.             );
  3015.             $message = (new \Swift_Message("Une adhésion a été signée électroniquement - Suite"))
  3016.             ->setSubject("Une adhésion a été signée électroniquement - Suite")
  3017.             ->setFrom(array($mailNoReply => $senderName))
  3018.             ->setTo(array($mailGestion => $senderName))
  3019.             ->setBody($bodyEmailGestion,'text/html')
  3020.             ;
  3021.             $message->attach($attachment);
  3022.             return array(
  3023.                 "message" => $message,
  3024.                 "newMail" => true
  3025.             );
  3026.         }
  3027.     }
  3028.     /**
  3029.      * @Route("/systempay/payment/{membershipID}", name="yousign_payment_end")
  3030.      */
  3031.     public function member_payment_end(Request $request$membershipID){
  3032.         //$userCurrent = $this->get('security.token_storage')->getToken()->getUser();
  3033.         $membershipCurrent $this->em
  3034.             ->getRepository(Membership::class)
  3035.             ->find($membershipID);
  3036.         $membershipCurrent->setStatus("PAYBYCUSTOMER");
  3037.         $this->em->persist($membershipCurrent);
  3038.         $this->em->flush();
  3039.         $supportedHashAlgorithm = array('sha256_hmac');
  3040.         /* check if the hash algorithm is supported */
  3041.         if (!in_array($_POST['kr-hash-algorithm'],  $supportedHashAlgorithm)) {
  3042.             return "Error 1.1";
  3043.             exit;
  3044.         }
  3045.         /* on some servers, / can be escaped */
  3046.         $krAnswer str_replace('\/''/'$_POST['kr-answer']);
  3047.         /* if key is not defined, we use kr-hash-key POST parameter to choose it */
  3048.         if (is_null($key)) {
  3049.             if ($_POST['kr-hash-key'] == "sha256_hmac") {
  3050.                 $key $this->_hashKey;
  3051.             } elseif ($_POST['kr-hash-key'] == "password") {
  3052.                 $key $this->_password;
  3053.             } else {
  3054.                 return "Error 1.2";
  3055.             }
  3056.         }
  3057.     
  3058.         $calculatedHash hash_hmac('sha256'$krAnswer$key);
  3059.         $this->_lastCalculatedHash $calculatedHash;
  3060.         /* return true if calculated hash and sent hash are the same */
  3061.         //return new JsonResponse(($calculatedHash == $_POST['kr-hash']));
  3062.         $mailNoReply $this->getParameter('mail_no_reply');
  3063.         $senderName $this->getParameter('sender_name');
  3064.         $urlLogin $this->generateUrl('app_login'
  3065.                 array(
  3066.                     
  3067.             ), 
  3068.         UrlGeneratorInterface::ABSOLUTE_URL);
  3069.         //Customer
  3070.         $bodyEmail $this->renderView(
  3071.             'email/paymentEndSuccess.html.twig',
  3072.             array('membership' => $membershipCurrent"urlLogin" => $urlLogin)
  3073.         );
  3074.         $message = (new \Swift_Message("Paiement"))
  3075.             ->setSubject("Paiement")
  3076.             ->setFrom(array($mailNoReply => $senderName))
  3077.             ->setTo(array($membershipCurrent->getUser()->getEmail() => $senderName))
  3078.             ->setBody($bodyEmail,'text/html');
  3079.         $this->mailer->send($message);
  3080.         //For GESTION
  3081.         $mailGestion $this->getParameter('mail_gestion');
  3082.         $bodyEmail $this->renderView(
  3083.             'email/paymentEndGestionSuccess.html.twig',
  3084.             array('membership' => $membershipCurrent"urlLogin" => $urlLogin)
  3085.         );
  3086.         $message = (new \Swift_Message("Nouveau paiement"))
  3087.             ->setSubject("Nouveau paiement")
  3088.             ->setFrom(array($mailNoReply => $senderName))
  3089.             ->setTo(array($mailGestion => $senderName))
  3090.             ->setBody($bodyEmail,'text/html');
  3091.         $this->mailer->send($message);
  3092.         return new Response(
  3093.             "true"
  3094.         );
  3095.     }
  3096.     /**
  3097.      * @Route("customer/{userID}/dic-view-html", name="customer_dic_view_html")
  3098.      */
  3099.     public function dicViewHtml(Request $request$userID){
  3100.         $customer $this->em
  3101.             ->getRepository(User::class)
  3102.             ->find($userID);
  3103.         if ( !$customer ) {
  3104.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  3105.             return $this->redirectToRoute('customer_list');
  3106.         }
  3107.         $this->utils->generateDic($customer);
  3108.         return $this->render('membership/pdf/dicView.html.twig', [
  3109.             'dic' => $customer->getCurrentMemberships()->getDic(),
  3110.         ]);
  3111.     }
  3112.     /**
  3113.      * @Route("customer/{userID}/fic-view-html", name="customer_fic_view_html")
  3114.      */
  3115.     public function ficViewHtml(Request $request$userID){
  3116.         $customer $this->em
  3117.             ->getRepository(User::class)
  3118.             ->find($userID);
  3119.         if ( !$customer ) {
  3120.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  3121.             return $this->redirectToRoute('customer_list');
  3122.         }
  3123.         $this->utils->generateFic($customer);
  3124.         return $this->render('membership/pdf/ficView.html.twig', [
  3125.             'fic' => $customer->getCurrentMemberships()->getFic(),
  3126.         ]);
  3127.     }
  3128.     /**
  3129.      * @Route("customer/{userID}/ba-view-html", name="customer_ba_view_html")
  3130.      */
  3131.     public function baViewHtml(Request $request$userID){
  3132.         $customer $this->em
  3133.             ->getRepository(User::class)
  3134.             ->find($userID);
  3135.         if ( !$customer ) {
  3136.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  3137.             return $this->redirectToRoute('customer_list');
  3138.         }
  3139.         //$this->utils->generateBa($customer);
  3140.         return $this->render('membership/pdf/baView.html.twig', [
  3141.             'ba' => $customer->getCurrentMemberships()->getBa(),
  3142.         ]);
  3143.     }
  3144.     /**
  3145.      * @Route("customer/{userID}/sepa-view-html", name="customer_sepa_view_html")
  3146.      */
  3147.     public function sepaViewHtml(Request $request$userID){
  3148.         $customer $this->em
  3149.             ->getRepository(User::class)
  3150.             ->find($userID);
  3151.         if ( !$customer ) {
  3152.             $this->addFlash('danger''Cet utilisateur n\'existe pas');
  3153.             return $this->redirectToRoute('customer_list');
  3154.         }
  3155.         $this->utils->generateSepa($customer);
  3156.         return $this->render('membership/pdf/sepaView.html.twig', [
  3157.             'ba' => $customer->getCurrentMemberships()->getBa(),
  3158.         ]);
  3159.     }
  3160.     /**
  3161.      * Vérifie si une personne est mineure en fonction de sa date de naissance
  3162.      * @param string $dateNaissance Date de naissance au format "JJ/MM/AAAA"
  3163.      * @return bool true si la personne est mineure, false sinon
  3164.      */
  3165.     function isMineur($dateNaissance) {
  3166.         // Découpage de la chaîne de caractères
  3167.         $parts explode('/'$dateNaissance);
  3168.         
  3169.         // Vérification du format
  3170.         if (count($parts) !== 3) {
  3171.             throw new Exception("Format de date incorrect. Utilisez JJ/MM/AAAA");
  3172.         }
  3173.         
  3174.         // Récupération des composants de la date
  3175.         $jour = (int)$parts[0];
  3176.         $mois = (int)$parts[1];
  3177.         $annee = (int)$parts[2];
  3178.         
  3179.         // Création d'un objet DateTime pour la date de naissance
  3180.         $dateNaissanceObj \DateTime::createFromFormat('d/m/Y'$dateNaissance);
  3181.         
  3182.         // Date actuelle
  3183.         $dateActuelle = new \DateTime();
  3184.         
  3185.         // Calcul de la différence entre les deux dates
  3186.         $difference $dateNaissanceObj->diff($dateActuelle);
  3187.         $age $difference->y;
  3188.         
  3189.         // En France et dans la plupart des pays, on est mineur si on a moins de 18 ans
  3190.         return $age 18;
  3191.     }
  3192. }