src/Controller/SignupController.php line 174

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 Symfony\Component\HttpFoundation\File\Exception\FileException;
  12. use Symfony\Component\HttpFoundation\File\UploadedFile;
  13. use Symfony\Component\String\Slugger\SluggerInterface;
  14. use Symfony\Component\DependencyInjection\ContainerInterface;
  15. use Doctrine\Common\Collections\ArrayCollection;
  16. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. use App\Services\RoleService;
  19. use App\Services\FileUploader;
  20. use App\Services\Utils;
  21. use App\Form\signup\SignupUserType;
  22. use App\Form\signup\SignupStep1_1_0Type;
  23. use App\Form\signup\SignupStep1_2_0Type;
  24. use App\Form\signup\SignupStep1_3_0Type;
  25. use App\Form\signup\SignupStep1_4_0Type;
  26. use App\Form\signup\SignupStep1_5_0Type;
  27. use App\Form\signup\SignupStep2_1_0Type;
  28. use App\Form\signup\SignupStep2_2_0Type;
  29. use App\Form\signup\SignupStep2_4_0Type;
  30. use App\Form\signup\SignupStep2_5_0Type;
  31. use App\Form\signup\SignupStep2_6_0Type;
  32. use App\Form\signup\SignupStep2_8_0Type;
  33. use App\Form\signup\SignupStep2_9_0Type;
  34. use App\Form\signup\SignupStep3_1_0Type;
  35. use App\Form\signup\SignupStep3_2_0Type;
  36. use App\Form\signup\SignupStep3_3_0Type;
  37. use App\Form\signup\SignupStep3_4_0Type;
  38. use App\Form\signup\SignupStep3_4_1Type;
  39. use App\Form\signup\SignupStep3_5_0Type;
  40. use App\Form\signup\SignupStep4_1_0Type;
  41. use App\Form\signup\SignupStep4_2_0Type;
  42. use App\Form\signup\SignupStep5_1_0Type;
  43. use App\Form\signup\SignupStep5_2_0Type;
  44. use App\Form\signup\SignupStep5_3_0Type;
  45. use App\Form\signup\SignupStep6_2_0Type;
  46. use App\Form\signup\SignupStep6_3_0Type;
  47. use App\Entity\User;
  48. use App\Entity\Membership;
  49. use App\Entity\FileSend;
  50. use App\Entity\Fic;
  51. use App\Entity\Ba;
  52. /**
  53.  * @Route("/")
  54.  */
  55. class SignupController extends AbstractController
  56. {
  57.     protected $em;
  58.     protected $fileUploader;
  59.     protected $utils;
  60.     public function __construct(EntityManagerInterface $entityManager\Swift_Mailer $mailerFileUploader $fileUploaderUtils $utilsTranslatorInterface $translator\Knp\Snappy\Pdf $knpSnappyRoleService $roleService) {
  61.         $this->em $entityManager;
  62.         $this->mailer $mailer;
  63.         $this->fileUploader $fileUploader;
  64.         $this->utils $utils;
  65.         $this->translator $translator;
  66.         $this->knpSnappy $knpSnappy;
  67.         $this->roleService $roleService;
  68.     }
  69.     /**
  70.      * @Route("nouvelle-adhesion-retraite/{token?}/{action?}/{stepForAction?}", name="member_signup_retraite")
  71.      */
  72.     public function signupRetraite(Request $request, ?String $token null, ?string $action null, ?string $stepForAction null){
  73.         return $this->signup($request$token$action$stepForAction"retraite");
  74.     }
  75.  
  76.     /**
  77.      * @Route("nouvelle-adhesion-epargne/{token?}/{action?}/{stepForAction?}", name="member_signup_epargne")
  78.      */
  79.     public function signupEpargne(Request $request, ?String $token null, ?string $action null, ?string $stepForAction null){
  80.         return $this->signup($request$token$action$stepForAction"epargne");
  81.     }
  82.     /**
  83.      * @Route("nouvelle-adhesion/{token?}/{action?}/{stepForAction?}", name="member_signup")
  84.      */
  85.     public function signup(Request $request, ?String $token null, ?string $action null, ?string $stepForAction null, ?string $product "retraite"){
  86.         //Initial variables
  87.         $step "0";
  88.         $previousStep null
  89.         $nextStep null;
  90.         $errorEnd null;
  91.         $form null;
  92.         $ba null;
  93.         $fic null;
  94.         $user null;
  95.         $membership null;
  96.         $finalStep false;
  97.         $productType $product;
  98.         if($token && $token != "noToken"){
  99.             $user $this->em
  100.                 ->getRepository(User::class)
  101.                 ->findOneBy(['tokenSignupContinue' => $token]);
  102.             if(!$user){
  103.                 $this->addFlash('danger''Cette adhésion n\'existe pas');
  104.                 if($this->getUser()){
  105.                     $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  106.                     if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent) && $userCurrent->isIsAutoSignup()){
  107.                         return $this->redirectToRoute('member_signup', array("token" => $userCurrent->getTokenSignupContinue()));
  108.                     }
  109.                     else{
  110.                         $this->addFlash('danger''Vous êtes connecté sur un compte non compatbile avec la création d\'une adhésion autonome');
  111.                         return $this->redirectToRoute('app_login');
  112.                     }
  113.                 }
  114.                 return $this->redirectToRoute('member_signup', array("token" => null));
  115.             }
  116.             
  117.             // Authenticating user
  118.             if($user && !$this->getUser()){
  119.                 if($this->roleService->isGranted('ROLE_CUSTOMER'$user)){
  120.                     $tokenUserTemp = new UsernamePasswordToken($usernull'main'$user->getRoles());
  121.                     $this->get('security.token_storage')->setToken($tokenUserTemp);
  122.                     $this->get('session')->set('_security_main'serialize($tokenUserTemp));
  123.                     $user->setLastLogin(new \DateTime());
  124.                     $this->em->persist($user);
  125.                     $this->em->flush();
  126.                 }
  127.             }
  128.             else{
  129.                 $user->setLastOpenDate(new \DateTime());
  130.                 $this->em->persist($user);
  131.                 $this->em->flush();
  132.             }
  133.             //If no membership
  134.             $membershipCurrent $this->utils->getMembershipByCustomer($user);
  135.             $membership $membershipCurrent;
  136.             $ba $membership->getBa();
  137.             $fic $membership->getFic();
  138.             $productType $membership->getProduct();
  139.             //Same entity as BA
  140.             $sepa $membership->getBa();
  141.             $step $user->getStepSignup();
  142.             $productType $membership->getProduct();
  143.             if ($this->getParameter('kernel.environment') === 'dev') {
  144.                 //Generate fic file
  145.                 $ficName $this->utils->generateFicFullweb($user);
  146.                 //Generate ba file
  147.                 $baName $this->utils->generateBaFullweb($user);
  148.                 //Generate sepa file
  149.                 $sepaName $this->utils->generateSepa($user);
  150.                 $fic->setUrlPdf($ficName);
  151.                 $ba->setUrlPdf($baName);
  152.                 $ba->setSepaUrlPdf($sepaName);
  153.                 $this->em->persist($fic);
  154.                 $this->em->persist($ba);
  155.                 $this->em->flush();
  156.             }
  157.             
  158.             if($step == "0"){
  159.                 $previousStep null;
  160.                 $form $this->createForm(SignupUserType::class, $user, Array("validation_groups" => "update"));
  161.                 $form->handleRequest($request);
  162.                 if($form->isSubmitted() && $form->isValid()) {
  163.                     //Birthday date
  164.                     if($user->getDateDeNaissance()){
  165.                         $dateDeNaissance str_replace("/""-"$user->getDateDeNaissance());
  166.                         $user->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissance))));
  167.                     } else{
  168.                         $user->setDateDeNaissance(null);
  169.                     }
  170.                     if($user->isAdresseFiscaleFrance() == 0){
  171.                         $user->setStepSignup("0.0.end");
  172.                     }
  173.                     else{
  174.                         if($productType == "epargne"){
  175.                             $user->setStepSignup("2");
  176.                         }
  177.                         else{
  178.                             $user->setStepSignup("1");
  179.                         }   
  180.                     }
  181.                     $this->em->persist($user);
  182.                     $this->em->flush($user);
  183.                     
  184.                     $fic->setSex($user->getSex());
  185.                     $fic->setEmail($user->getEmail());
  186.                     $fic->setDateDeNaissance($user->getDateDeNaissance());
  187.                     $fic->setNom($user->getLastName());
  188.                     $fic->setPrenom($user->getFirstName());
  189.                     $fic->setAdresseFiscaleResidenceFrance(false);
  190.                     $ba->setSex($user->getSex());
  191.                     $ba->setEmail($user->getEmail());
  192.                     $ba->setDateDeNaissance($user->getDateDeNaissance());
  193.                     $ba->setNom($user->getLastName());
  194.                     $ba->setPrenom($user->getFirstName());
  195.                     $ba->setResidenceFrance(true);
  196.                     $this->em->persist($ba);
  197.                     $this->em->flush();
  198.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  199.                 }
  200.             }
  201.             if($step == "0.0.end"){  
  202.                 $previousStep "0";
  203.                 $errorEnd = array("title" => "Fin de parcours""description" => "Seuls les personnes résidents fiscalement en France peuvent souscrire");
  204.             }
  205.             if($step == "1"){
  206.                 $previousStep "0";
  207.                 $nextStep "1.1.0";
  208.             }
  209.             if($step == "1.1.0"){
  210.                 $previousStep "1";
  211.                 $form $this->createForm(SignupStep1_1_0Type::class, $ba, Array("validation_groups" => "update"));
  212.                 $form->handleRequest($request);
  213.                 if($form->isSubmitted() && $form->isValid()) {
  214.                     if($ba->getTitulaireTitre() == "0"){
  215.                          $user->setStepSignup("1.2.0");
  216.                     }
  217.                     else{
  218.                         $user->setStepSignup("1.4.0");
  219.                         $ba->setEngageFournirCopieTitreAttribue(true);
  220.                     }
  221.                     
  222.                     $this->em->persist($user);
  223.                     $this->em->persist($ba);
  224.                     $this->em->flush();
  225.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  226.                 }
  227.             }
  228.             if($step == "1.2.0"){
  229.                 $previousStep "1.1.0";
  230.                 $form $this->createForm(SignupStep1_2_0Type::class, $ba, Array("validation_groups" => "update"));
  231.                 $form->handleRequest($request);
  232.                 if($form->isSubmitted() && $form->isValid()) {
  233.                     //getDateCarteCombattant
  234.                     if($ba->getDateCarteCombattant()){
  235.                         $dateCarteCombattant str_replace("/""-"$ba->getDateCarteCombattant());
  236.                         $ba->setDateCarteCombattant(new \DateTime(date("Y-m-d"strtotime($dateCarteCombattant))));
  237.                     } else{
  238.                         $ba->setDateCarteCombattant(null);
  239.                     }
  240.                     //getDateReconnaisanceNation
  241.                     if($ba->getDateReconnaisanceNation()){
  242.                         $dateReconnaisanceNation str_replace("/""-"$ba->getDateReconnaisanceNation());
  243.                         $ba->setDateReconnaisanceNation(new \DateTime(date("Y-m-d"strtotime($dateReconnaisanceNation))));
  244.                     } else{
  245.                         $ba->setDateReconnaisanceNation(null);
  246.                     }
  247.                     //getDateTranscriptionMention
  248.                     if($ba->getDateTranscriptionMention()){
  249.                         $dateTranscriptionMention str_replace("/""-"$ba->getDateTranscriptionMention());
  250.                         $ba->setDateTranscriptionMention(new \DateTime(date("Y-m-d"strtotime($dateTranscriptionMention))));
  251.                     } else{
  252.                         $ba->setDateTranscriptionMention(null);
  253.                     }
  254.                     if($ba->getDateCarteCombattant() || $ba->getDateReconnaisanceNation()){
  255.                         //false == Oui (warning)
  256.                         $fic->setReconnaisanceNation(false);
  257.                         if($ba->getDateReconnaisanceNation()){
  258.                             $fic->setDateReconnaisanceNation($ba->getDateReconnaisanceNation());
  259.                         }
  260.                         if($ba->getDateCarteCombattant()){
  261.                             $fic->setDateReconnaisanceNation($ba->getDateCarteCombattant());
  262.                         }
  263.                     }
  264.                     else{
  265.                         //True == Non
  266.                         $fic->setReconnaisanceNation(true);
  267.                         $fic->setDateReconnaisanceNation(null);
  268.                     }
  269.                     $fic->setReconnaisanceNation($ba->getDateReconnaisanceNation() ? false true);
  270.                     $fic->setDateReconnaisanceNation($ba->getDateReconnaisanceNation());
  271.                     $user->setStepSignup("1.3.0");
  272.                     $this->em->persist($user);
  273.                     $this->em->persist($ba);
  274.                     $this->em->persist($fic);
  275.                     $this->em->flush();
  276.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  277.                 }
  278.             }
  279.             if($step == "1.3.0"){
  280.                 $previousStep "1.2.0";
  281.                 $form $this->createForm(SignupStep1_3_0Type::class, $ba, Array("validation_groups" => "update"));
  282.                 $form->handleRequest($request);
  283.                 if($form->isSubmitted() && $form->isValid()) {
  284.                     $user->setStepSignup("1.4.0");
  285.                     $this->em->persist($user);
  286.                     $this->em->persist($ba);
  287.                     $this->em->flush();
  288.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  289.                 }
  290.             }
  291.             if($step == "1.4.0"){  
  292.                 if($ba->getTitulaireTitre() == "0"){
  293.                     $previousStep "1.3.0";
  294.                 }
  295.                 else{
  296.                     $previousStep "1.1.0";
  297.                 }
  298.                 //OTHER CONTRACTS FORM
  299.                 $originalOtherContracts = new ArrayCollection();
  300.                 // Create an ArrayCollection of the current Tag objects in the database
  301.                 foreach ($ba->getOtherContracts() as $otherContract) {
  302.                     $originalOtherContracts->add($otherContract);
  303.                 }
  304.                 $form $this->createForm(SignupStep1_4_0Type::class, $ba, Array("validation_groups" => "update"));
  305.                 $form->handleRequest($request);
  306.                 if($form->isSubmitted() && $form->isValid()) {
  307.                     // remove the relationship between the OtherContract and the BA
  308.                     foreach ($originalOtherContracts as $otherContract) {
  309.                         if (false === $ba->getOtherContracts()->contains($otherContract)) {
  310.                             // To delete the Tag entirely
  311.                             $this->em->remove($otherContract);
  312.                         }
  313.                     }
  314.                     //Update date fro the OtherContract
  315.                     foreach ($ba->getOtherContracts() as $otherContract) {
  316.                         if($otherContract->getDateAdhesion()){
  317.                             $dateAdhesion str_replace("/""-"$otherContract->getDateAdhesion());
  318.                             $otherContract->setDateAdhesion(new \DateTime(date("Y-m-d"strtotime($dateAdhesion))));
  319.                         } else{
  320.                             $otherContract->setDateAdhesion(null);
  321.                         }
  322.                         $this->em->persist($otherContract);
  323.                     }
  324.                     $user->setStepSignup("1.5.0");
  325.                     $this->em->persist($user);
  326.                     $this->em->persist($ba);
  327.                     $this->em->flush();
  328.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  329.                 }
  330.             }
  331.             if($step == "1.5.0"){  
  332.                 $previousStep "1.4.0";
  333.                 $form $this->createForm(SignupStep1_5_0Type::class, $ba, Array("validation_groups" => "update"));
  334.                 $form->handleRequest($request);
  335.                 if($form->isSubmitted() && $form->isValid()) {
  336.                     if($ba->isObjectifPrincipalConstitutionRetraite() == 0){
  337.                         $user->setStepSignup("1.5.end");
  338.                     }
  339.                     else{
  340.                         $user->setStepSignup("2");
  341.                     }
  342.                     
  343.                     $this->em->persist($user);
  344.                     $this->em->persist($ba);
  345.                     $this->em->flush();
  346.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  347.                 }
  348.             }
  349.             if($step == "1.5.end"){  
  350.                 $previousStep "1.5.0";
  351.                 $errorEnd = array("title" => "Fin de parcours""description" => "Vous avez indiqué que votre objectif principal n’est pas la constitution d'une retraite  supplémentaire. Nous vous invitons à prendre contact avec un conseiller MER.");
  352.             }
  353.             if($step == "2"){
  354.                 if($productType == "epargne"){
  355.                     $previousStep "0";
  356.                 }
  357.                 else{
  358.                     $previousStep "1.5.0";
  359.                 }
  360.                 $nextStep "2.1.0";
  361.             }
  362.             if($step == "2.1.0"){  
  363.                 $previousStep "2";
  364.                 $form $this->createForm(SignupStep2_1_0Type::class, $ba, Array("validation_groups" => "update"));
  365.                 $form->handleRequest($request);
  366.                 if($form->isSubmitted() && $form->isValid()) {
  367.                     if($ba->isGreenCard() == 1){
  368.                         $user->setStepSignup("2.1.end");
  369.                     }
  370.                     else{
  371.                         $user->setStepSignup("2.2.0");
  372.                     }
  373.                     $fic->setNationalite($ba->getNationalite());
  374.                     $fic->setLieuDeNaissance($ba->getLieuVilleDeNaissance()." ".$ba->getLieuCodePostalDeNaissance()." ".$ba->getLieuPaysDeNaissance());
  375.                     $ba->setLieuDeNaissance($ba->getLieuVilleDeNaissance()." ".$ba->getLieuCodePostalDeNaissance()." ".$ba->getLieuPaysDeNaissance());
  376.                     $this->em->persist($user);
  377.                     $this->em->persist($ba);
  378.                     $this->em->persist($fic);
  379.                     $this->em->flush();
  380.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  381.                 }
  382.             }
  383.             if($step == "2.1.end"){  
  384.                 $previousStep "2.1.0";
  385.                 $errorEnd = array("title" => "Fin de parcours""description" => "Vous avez indiqué avoir la Green Card et être citoyen américain.<br/><br/>
  386. Votre situation particulière nécessite une étude approfondie de votre dossier. Nous vous invitons à prendre contact avec notre service commercial.");
  387.             }
  388.             if($step == "2.2.0"){  
  389.                 $previousStep "2.1.0";
  390.                 $form $this->createForm(SignupStep2_2_0Type::class, $ba, Array("validation_groups" => "update"));
  391.                 $form->handleRequest($request);
  392.                 if($form->isSubmitted() && $form->isValid()) {
  393.                     $fic->setAdresseFiscale($ba->getFiscaleAddress());
  394.                     $fic->setAdresseFiscaleCodePostal($ba->getFiscaleCodePostal());
  395.                     $fic->setAdresseFiscaleVille($ba->getFiscaleVille());
  396.                     $fic->setAdresseFiscalePays($ba->getFiscalePays());
  397.                     $fic->setAdressePostale($ba->getNumeroDeVoie());
  398.                     $fic->setAdresseCodePostal($ba->getCodePostal());
  399.                     $fic->setAdresseVille($ba->getVille());
  400.                     $fic->setAdressePays($ba->getPays());
  401.                     $user->setStepSignup("2.4.0");
  402.                     $this->em->persist($user);
  403.                     $this->em->persist($ba);
  404.                     $this->em->persist($fic);
  405.                     $this->em->flush();
  406.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  407.                 }
  408.             }
  409.             if($step == "2.3.0"){  
  410.                 //CODE NIF NO DEV
  411.             }
  412.             if($step == "2.4.0"){  
  413.                 $previousStep "2.2.0";
  414.                 $form $this->createForm(SignupStep2_4_0Type::class, $fic, Array("validation_groups" => "update"));
  415.                 $form->handleRequest($request);
  416.                 if($form->isSubmitted() && $form->isValid()) {
  417.                     if($fic->isBeneficiezProtectionJuridique() == 0){
  418.                         $user->setStepSignup("2.4.end");
  419.                     }
  420.                     else{
  421.                         $user->setStepSignup("2.5.0");
  422.                     }
  423.                     
  424.                     $this->em->persist($user);
  425.                     $this->em->persist($fic);
  426.                     //Update BA
  427.                     $ba->setProfessionCspCategory($fic->getProfessionCspCategory());
  428.                     $ba->setProfessionCspSousCategory($fic->getProfessionCspSousCategory());
  429.                     $this->em->persist($ba);
  430.                     $this->em->flush();
  431.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  432.                 }
  433.             }
  434.             if($step == "2.4.end"){  
  435.                 $previousStep "2.4.0";
  436.                 $errorEnd = array("title" => "Fin de parcours""description" => "Votre situation particulière nécessite une étude approfondie de votre dossier. Nous vous invitons à prendre contact avec notre service commercial.");
  437.             }
  438.             if($step == "2.5.0"){  
  439.                 $previousStep "2.4.0";
  440.                 $form $this->createForm(SignupStep2_5_0Type::class, $fic, Array("validation_groups" => "update"));
  441.                 $form->handleRequest($request);
  442.                 if($form->isSubmitted() && $form->isValid()) {
  443.                     $user->setStepSignup("2.6.0");
  444.                     $this->em->persist($user);
  445.                     $this->em->persist($fic);
  446.                     $this->em->flush();
  447.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  448.                 }
  449.             }
  450.             if($step == "2.6.0"){  
  451.                 $previousStep "2.5.0";
  452.                 $form $this->createForm(SignupStep2_6_0Type::class, $fic, Array("validation_groups" => "update"));
  453.                 $form->handleRequest($request);
  454.                 if($form->isSubmitted() && $form->isValid()) {
  455.                     if($productType == "epargne"){
  456.                         $user->setStepSignup("2.7");
  457.                     }
  458.                     else{
  459.                         $user->setStepSignup("2.7.0");
  460.                     }
  461.                     $this->em->persist($user);
  462.                     $this->em->persist($fic);
  463.                     //Update BA
  464.                     $ba->setSituationFamilliale($fic->getSituationFamilliale());
  465.                     $this->em->persist($ba);
  466.                     $this->em->flush();
  467.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  468.                 }
  469.             }
  470.             //Just for epargne
  471.             if($step == "2.7"){
  472.                 $previousStep "2.6.0";
  473.                 $nextStep "2.7.0";
  474.             }
  475.             if($step == "2.7.0"){
  476.                 if($productType == "epargne"){
  477.                     $previousStep "2.7";
  478.                 }
  479.                 else{
  480.                     $previousStep "2.6.0";
  481.                 }
  482.                 
  483.                 $nextStep "2.8.0";
  484.             }
  485.             if($step == "2.8.0"){  
  486.                 $previousStep "2.7.0";
  487.                 $form $this->createForm(SignupStep2_8_0Type::class, $fic, Array("validation_groups" => "update"));
  488.                 $form->handleRequest($request);
  489.                 if($form->isSubmitted() && $form->isValid()) {
  490.                     if($fic->isPrefInvestiDurabilite()){
  491.                         $user->setStepSignup("2.9.0");
  492.                     }
  493.                     else{
  494.                         $user->setStepSignup("3");
  495.                     }
  496.    
  497.                     $this->em->persist($user);
  498.                     $this->em->persist($fic);
  499.                     $this->em->flush();
  500.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  501.                 }
  502.             }
  503.             if($step == "2.9.0"){  
  504.                 $previousStep "2.8.0";
  505.                 $form $this->createForm(SignupStep2_9_0Type::class, $fic, Array("validation_groups" => "update"));
  506.                 $form->handleRequest($request);
  507.                 if($form->isSubmitted() && $form->isValid()) {
  508.                     if($fic->isPrefInvestiDurabiliteConfirmationAdhesion() == "0"){
  509.                         $user->setStepSignup("2.9.end");
  510.                     }
  511.                     else{
  512.                         $user->setStepSignup("3");
  513.                     }
  514.                     
  515.                     $this->em->persist($user);
  516.                     $this->em->persist($fic);
  517.                     $this->em->flush();
  518.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  519.                 }
  520.             }
  521.             if($step == "2.9.end"){  
  522.                 $previousStep "2.9.0";
  523.                 $errorEnd = array("title" => "Fin de parcours""description" => "Votre situation particulière nécessite une étude approfondie de votre dossier. Nous vous invitons à prendre contact avec notre service commercial.");
  524.             }
  525.             if($step == "3"){
  526.                 if($fic->isPrefInvestiDurabilite()){
  527.                     $previousStep "2.9.0";
  528.                 }
  529.                 else{
  530.                     $previousStep "2.8.0";
  531.                 }
  532.                 
  533.                 $nextStep "3.1.0";
  534.             }
  535.             if($step == "3.1.0"){  
  536.                 $previousStep "3";
  537.                 $form $this->createForm(SignupStep3_1_0Type::class, $fic, Array("validation_groups" => "update"));
  538.                 $form->handleRequest($request);
  539.                 if($form->isSubmitted() && $form->isValid()) {
  540.                     $user->setStepSignup("3.2.0");
  541.                     $this->em->persist($user);
  542.                     $this->em->persist($fic);
  543.                     $this->em->flush();
  544.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  545.                 }
  546.             }
  547.             if($step == "3.2.0"){  
  548.                 $previousStep "3.1.0";
  549.                 $form $this->createForm(SignupStep3_2_0Type::class, $fic, Array("validation_groups" => "update"));
  550.                 $form->handleRequest($request);
  551.                 if($form->isSubmitted() && $form->isValid()) {
  552.                     $user->setStepSignup("3.3.0");
  553.                     $this->em->persist($user);
  554.                     $this->em->persist($fic);
  555.                     $this->em->flush();
  556.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  557.                 }
  558.             }
  559.             if($step == "3.3.0"){  
  560.                 $previousStep "3.2.0";
  561.                 $form $this->createForm(SignupStep3_3_0Type::class, $fic, Array("validation_groups" => "update"));
  562.                 $form->handleRequest($request);
  563.                 if($form->isSubmitted() && $form->isValid()) {
  564.                     $user->setStepSignup("3.4.0");
  565.                     $this->em->persist($user);
  566.                     $this->em->persist($fic);
  567.                     $this->em->flush();
  568.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  569.                 }
  570.             }
  571.             if($step == "3.4.0"){  
  572.                 $previousStep "3.3.0";
  573.                 $form $this->createForm(SignupStep3_4_0Type::class, $fic, Array("validation_groups" => "update"));
  574.                 $form->handleRequest($request);
  575.                 if($form->isSubmitted() && $form->isValid()) {
  576.                     if($productType == "epargne"){
  577.                         if($fic->getObjectifsEpargnePriorite() == "1"){
  578.                             $user->setStepSignup("3.4.end");
  579.                         }
  580.                         else{
  581.                             $user->setStepSignup("3.4.1");
  582.                         }
  583.                     }
  584.                     else{
  585.                         $user->setStepSignup("3.5.0");
  586.                     }
  587.                     $this->em->persist($user);
  588.                     $this->em->persist($fic);
  589.                     $this->em->flush();
  590.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  591.                 }
  592.             }
  593.             if($step == "3.4.end"){  
  594.                 $previousStep "3.4.0";
  595.                 $errorEnd = array("title" => "Fin de parcours""description" => "Votre situation particulière nécessite une étude approfondie de votre dossier. Nous vous invitons à prendre contact avec notre service commercial.");
  596.             }
  597.             if($step == "3.4.1"){  
  598.                 $previousStep "3.4.0";
  599.                 $form $this->createForm(SignupStep3_4_1Type::class, $fic, Array("validation_groups" => "update"));
  600.                 $form->handleRequest($request);
  601.                 if($form->isSubmitted() && $form->isValid()) {
  602.                     $user->setStepSignup("3.5.0");
  603.                     $this->em->persist($user);
  604.                     $this->em->persist($fic);
  605.                     $this->em->flush();
  606.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  607.                 }
  608.             }
  609.             if($step == "3.5.0"){  
  610.                 if($productType == "epargne"){
  611.                     $previousStep "3.4.1";
  612.                 }
  613.                 else{
  614.                     $previousStep "3.4.0";
  615.                 }
  616.                 $form $this->createForm(SignupStep3_5_0Type::class, $fic, Array("validation_groups" => "update"));
  617.                 $form->handleRequest($request);
  618.                 if($form->isSubmitted() && $form->isValid()) {
  619.                     $user->setStepSignup("3.6.0");
  620.                     $this->em->persist($user);
  621.                     $this->em->persist($fic);
  622.                     $this->em->flush();
  623.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  624.                 }
  625.             }
  626.             if($step == "3.6.0"){
  627.                 $previousStep "3.5.0";
  628.                 $nextStep "4";
  629.             }
  630.             if($step == "4"){
  631.                 $previousStep "3.6.0";
  632.                 
  633.                 if($productType == "epargne"){
  634.                     $nextStep "4.2.0";
  635.                 }
  636.                 else{
  637.                     $nextStep "4.1.0";
  638.                 }
  639.             }
  640.             if($step == "4.1.0"){  
  641.                 $previousStep "4";
  642.                 $form $this->createForm(SignupStep4_1_0Type::class, $fic, Array("validation_groups" => "update"));
  643.                 $form->handleRequest($request);
  644.                 if($form->isSubmitted() && $form->isValid()) {
  645.                     if($fic->getSouscrireRetraiteMutualistePourConstituer() == 2){
  646.                         $user->setStepSignup("5");
  647.                     }
  648.                     else{
  649.                         $user->setStepSignup("4.2.0");
  650.                     }
  651.                     $ba->setOptionCapital($fic->getSouscrireRetraiteMutualistePourConstituer());
  652.                     $this->em->persist($user);
  653.                     $this->em->persist($fic);
  654.                     $this->em->persist($ba);
  655.                     $this->em->flush();
  656.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  657.                 }
  658.             }
  659.             if($step == "4.2.0"){  
  660.                 if($productType == "epargne"){
  661.                     $previousStep "4";
  662.                 }
  663.                 else{
  664.                     $previousStep "4.1.0";
  665.                 }
  666.                 //BENEFICIAIRES FORM
  667.                 $originalBeneficiaires = new ArrayCollection();
  668.                 // Create an ArrayCollection of the current Tag objects in the database
  669.                 foreach ($ba->getBeneficiaires() as $beneficiaire) {
  670.                     $originalBeneficiaires->add($beneficiaire);
  671.                 }
  672.                 $form $this->createForm(SignupStep4_2_0Type::class, $ba, Array("validation_groups" => "update"));
  673.                 $form->handleRequest($request);
  674.                 if($form->isSubmitted() && $form->isValid()) {
  675.                     // remove the relationship between the Beneficiaire and the BA
  676.                     foreach ($originalBeneficiaires as $beneficiaire) {
  677.                         if (false === $ba->getBeneficiaires()->contains($beneficiaire)) {
  678.                             // To delete the Tag entirely
  679.                             $this->em->remove($beneficiaire);
  680.                         }
  681.                     }
  682.                     //Update date fro the Beneficiaire
  683.                     foreach ($ba->getBeneficiaires() as $beneficiaire) {
  684.                         if($beneficiaire->getDateDeNaissance()){
  685.                             $dateAdhesion str_replace("/""-"$beneficiaire->getDateDeNaissance());
  686.                             $beneficiaire->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateAdhesion))));
  687.                         } else{
  688.                             $beneficiaire->setDateDeNaissance(null);
  689.                         }
  690.                         
  691.                         $this->em->persist($beneficiaire);
  692.                     }
  693.                     $user->setStepSignup("5");
  694.                     $this->em->persist($user);
  695.                     $this->em->persist($ba);
  696.                     $this->em->flush();
  697.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  698.                 }
  699.             }
  700.             if($step == "5"){
  701.                 if($productType == "retraite"){
  702.                     if($fic->getSouscrireRetraiteMutualistePourConstituer() == 2){
  703.                         $previousStep "4.1.0";
  704.                     }
  705.                     else{
  706.                         $previousStep "4.2.0";
  707.                     }
  708.                 }
  709.                 else{
  710.                     $previousStep "4.2.0";
  711.                 }
  712.                 $nextStep "5.1.0";
  713.             }
  714.             if($step == "5.1.0"){  
  715.                 $previousStep "5";
  716.                 $form $this->createForm(SignupStep5_1_0Type::class, $ba, Array("validation_groups" => "update"));
  717.                 $form->handleRequest($request);
  718.                 if($form->isSubmitted() && $form->isValid()) {
  719.                     //getDateEffetAdhesion
  720.                     $ba->setDateEffetAdhesion(new \DateTime("now"));
  721.                     //getDateDeLiquidation
  722.                     if($productType == "retraite"){
  723.                         if($ba->getDateDeLiquidation()){
  724.                             $dateDeLiquidation str_replace("/""-"$ba->getDateDeLiquidation());
  725.                             $ba->setDateDeLiquidation(new \DateTime(date("Y-m-d"strtotime($dateDeLiquidation))));
  726.                         } else{
  727.                             $ba->setDateDeLiquidation(null);
  728.                         }
  729.                     }
  730.                     $ba->setMoyenDeVersement("3");
  731.                     $user->setStepSignup("5.2.0");
  732.                     $this->em->persist($user);
  733.                     $this->em->persist($ba);
  734.                     $this->em->flush();
  735.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  736.                 }
  737.             }
  738.             if($step == "5.2.0"){  
  739.                 $previousStep "5.1.0";
  740.                 $form $this->createForm(SignupStep5_2_0Type::class, $ba, Array("validation_groups" => "update"));
  741.                 $form->handleRequest($request);
  742.                 if($form->isSubmitted() && $form->isValid()) {
  743.                     $user->setStepSignup("5.3.0");
  744.                     $this->em->persist($user);
  745.                     $this->em->persist($ba);
  746.                     $this->em->flush();
  747.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  748.                 }
  749.             }
  750.             if($step == "5.3.0"){  
  751.                 $previousStep "5.2.0";
  752.                 $form $this->createForm(SignupStep5_3_0Type::class, $ba, Array("validation_groups" => "update"));
  753.                 $form->handleRequest($request);
  754.                 if($form->isSubmitted() && $form->isValid()) {
  755.                     $user->setStepSignup("6");
  756.                     $this->em->persist($user);
  757.                     $this->em->persist($ba);
  758.                     $this->em->flush();
  759.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  760.                 }
  761.             }
  762.             if($step == "6"){
  763.                 $previousStep "5.3.0";
  764.                 $nextStep "6.1.0";
  765.                 $finalStep true;
  766.             }
  767.             if($step == "6.1.0"){  
  768.                 $previousStep "6";
  769.                 $nextStep "6.2.0";
  770.                 $finalStep true;
  771.             }
  772.             if($step == "6.2.0"){  
  773.                 $previousStep "6.1.0";
  774.                 $finalStep true;
  775.                 $form $this->createForm(SignupStep6_2_0Type::class, $ba, Array("validation_groups" => "update"));
  776.                 $form->handleRequest($request);
  777.                 if($form->isSubmitted() && $form->isValid()) {
  778.                     $iban $ba->getSepaCodeIban();
  779.                     $iban str_replace(" """$iban);
  780.                     $bic $ba->getSepaCodeBic();
  781.                     $bic str_replace(" """$bic);
  782.                     $ba->setSepaCodeIban($iban);
  783.                     $ba->setSepaCodeBic($bic);
  784.                     $user->setStepSignup("6.3.0");
  785.                     $this->em->persist($user);
  786.                     $this->em->persist($ba);
  787.                     $this->em->flush();
  788.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  789.                 }
  790.             }
  791.             if($step == "6.3.0"){  
  792.                 $previousStep "6.2.0";
  793.                 $finalStep true;
  794.                 //Generate fic file
  795.                 $ficName $this->utils->generateFicFullWeb($user);
  796.                 //Generate ba file
  797.                 $baName $this->utils->generateBaFullWeb($user);
  798.                 //Generate sepa file
  799.                 $sepaName $this->utils->generateSepa($user);
  800.                 $fic->setUrlPdf($ficName);
  801.                 $ba->setUrlPdf($baName);
  802.                 $ba->setSepaUrlPdf($sepaName);
  803.                 $this->em->persist($fic);
  804.                 $this->em->persist($ba);
  805.                 $this->em->flush();
  806.                 //Send mail for customer
  807.                 $this->sendMailFolder($membershipCurrent);
  808.                 //Generate form
  809.                 $form $this->createForm(SignupStep6_3_0Type::class, $ba, Array("validation_groups" => "update"));
  810.                 $form->handleRequest($request);
  811.                 if($form->isSubmitted() && $form->isValid()) {       
  812.                     if($productType == "epargne"){
  813.                       if($ba->isJeDemandeAdhesionProduit() == false){
  814.                         $user->setStepSignup("6.3.end");
  815.                       }
  816.                       else{
  817.                         $user->setStepSignup("6.4.0");
  818.                       }
  819.                     }   
  820.                     else{
  821.                         $user->setStepSignup("6.4.0");
  822.                         $ba->setReconnaisEtreInforme(true);
  823.                         $ba->setConnaissanceDesStatuts(true);
  824.                         $ba->setReconnaisRenoncer30Jours(true);
  825.                         $ba->setReconnaisAvoirPrisConnaissance(true);
  826.                     }           
  827.                     $membershipCurrent->setValidatedFolderByCustomer(true);
  828.                     $this->em->persist($user);
  829.                     $this->em->persist($membershipCurrent);
  830.                     $this->em->persist($ba);
  831.                     $this->em->flush();
  832.                     return $this->redirectToRoute('member_signup', ["token" => $token]);
  833.                 }
  834.             }
  835.             if($step == "6.3.end"){  
  836.                 $finalStep true;
  837.                 $previousStep "6.3.0";
  838.                 $errorEnd = array("title" => "Fin de parcours""description" => "Votre situation particulière nécessite une étude approfondie de votre dossier. Nous vous invitons à prendre contact avec notre service commercial.");
  839.             }
  840.             if($step == "6.4.0"){  
  841.                 $previousStep "6.3.0";
  842.                 $nextStep "6.5.0";
  843.                 $finalStep true;
  844.             }
  845.             if($step == "6.5.0"){  
  846.                 $previousStep "6.4.0";
  847.                 $nextStep "end";
  848.                 $finalStep true;
  849.             }
  850.             if($step == "end"){  
  851.                 $previousStep "6.5.0";
  852.                 $nextStep "";
  853.                 $finalStep true;
  854.                 //If no sign
  855.                 /*
  856.                 if(!$membership->getSignDate()){
  857.                     
  858.                     return $this->redirectToRoute('membership_sign', ["userID" => "me", "membershipID" => $membership->getId()]);
  859.                     //Redirect Yousign
  860.                 }
  861.                 else{
  862.                     //If sign
  863.                 }
  864.                 */
  865.             }
  866.             //For next
  867.             if($action == "next"){
  868.                 $user->setStepSignup($nextStep);
  869.                 $this->em->persist($user);
  870.                 $this->em->flush($user);
  871.                 return $this->redirectToRoute('member_signup', ["token" => $token]);
  872.             }
  873.             //For previous
  874.             if($action == "previous"){
  875.                 $user->setStepSignup($previousStep);
  876.                 $this->em->persist($user);
  877.                 $this->em->flush($user);
  878.                 return $this->redirectToRoute('member_signup', ["token" => $token]);
  879.             }
  880.             //Upadte step by recap
  881.             if($action == "getStep"){
  882.                 if($step != "6.1.0"){
  883.                     $this->addFlash('danger''Vous ne pouvez pas accéder à cette page');
  884.                     return $this->redirectToRoute('member_signup', []);
  885.                 }
  886.                 $user->setStepSignup($stepForAction);
  887.                 $this->em->persist($user);
  888.                 $this->em->flush($user);
  889.                 return $this->redirectToRoute('member_signup', ["token" => $token]);
  890.             }
  891.             //$errorEnd = array("title" => "Fin de parcours", "description" => "Votre profil nécessite une étude approfondie de votre besoin. <br/>Pour se faire, merci de contacter votre conseiller au [Tel + mail du service commercial]");
  892.         }
  893.         elseif($action == "endStep0"){
  894.             $step "0.0.end";
  895.             $previousStep "0";
  896.             $errorEnd = array("title" => "Nous sommes navrés, seules personnes résidentes fiscalement en France peuvent souscrire""description" => "");
  897.         }
  898.         elseif($action == "endStep0Minor"){
  899.             $step "0.0.end.minor";
  900.             $previousStep "0";
  901.             $errorEnd = array("title" => "Fin de parcours""description" => "Oups...nous sommes navrés ! Vous ne pouvez pas finaliser ce parcours de souscription en ligne. Pour finaliser La souscription au contrat ".$this->utils->getProductName($productType)." pour un mineur, contactez nos conseillers.");
  902.         }
  903.         elseif($action == "endStep0Older"){
  904.             $step "0.0.end.older";
  905.             $previousStep "0";
  906.             $errorEnd = array("title" => "Fin de parcours""description" => "Oups...nous sommes navrés ! Vous ne pouvez pas finaliser ce parcours de souscription en ligne. Pour finaliser La souscription au contrat ".$this->utils->getProductName($productType)." pour un majeur de plus de 70 ans, contactez nos conseillers.");
  907.         }
  908.         else{
  909.             if($this->getUser()){
  910.                 $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  911.                 if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent) && $userCurrent->isIsAutoSignup()){
  912.                     return $this->redirectToRoute('member_signup', array("token" => $userCurrent->getTokenSignupContinue()));
  913.                 }
  914.                 else{
  915.                     $this->addFlash('danger''Vous êtes connecté sur un compte non compatbile avec la création d\'une adhésion autonome');
  916.                     return $this->redirectToRoute('app_login');
  917.                 }
  918.             }
  919.             $user = new User;
  920.             $form $this->createForm(SignupUserType::class, $user, Array("validation_groups" => "update"));
  921.             $form->handleRequest($request);
  922.             if($form->isSubmitted() && $form->isValid()) {
  923.                 $dateDeNaissance str_replace("/""-"$user->getDateDeNaissance());
  924.                 $user->setDateDeNaissance(new \DateTime(date("Y-m-d"strtotime($dateDeNaissance))));
  925.                 if($user->isAdresseFiscaleFrance() == 0){
  926.                     $user->setStepSignup("0.0.end");
  927.                 }
  928.                 else if($this->utils->isMinor($user->getDateDeNaissance())){
  929.                     $user->setStepSignup("0.0.end.minor");
  930.                 }
  931.                 else if($this->utils->isSeventyOrOlder($user->getDateDeNaissance())){
  932.                     $user->setStepSignup("0.0.end.older");
  933.                 }
  934.                 else{
  935.                     if($productType == "epargne"){
  936.                         $user->setStepSignup("2");
  937.                     }
  938.                     else{
  939.                         $user->setStepSignup("1");
  940.                     } 
  941.                 }
  942.                 if($user->getStepSignup() == "0.0.end"){
  943.                     if($productType == "epargne"){
  944.                         return $this->redirectToRoute('member_signup_epargne', ["token" => "noToken""action" => "endStep0"]);
  945.                     }
  946.                     else{
  947.                         return $this->redirectToRoute('member_signup_retraite', ["token" => "noToken""action" => "endStep0"]);
  948.                     }
  949.                 } 
  950.                 else if($user->getStepSignup() == "0.0.end.minor"){
  951.                     if($productType == "epargne"){
  952.                         return $this->redirectToRoute('member_signup_epargne', ["token" => "noToken""action" => "endStep0Minor"]);
  953.                     }
  954.                     else{
  955.                         return $this->redirectToRoute('member_signup_retraite', ["token" => "noToken""action" => "endStep0Minor"]);
  956.                     }
  957.                 }
  958.                 else if($user->getStepSignup() == "0.0.end.older"){
  959.                     if($productType == "epargne"){
  960.                         return $this->redirectToRoute('member_signup_epargne', ["token" => "noToken""action" => "endStep0Older"]);
  961.                     }
  962.                     else{
  963.                         return $this->redirectToRoute('member_signup_retraite', ["token" => "noToken""action" => "endStep0Older"]);
  964.                     }
  965.                 }
  966.                 else {
  967.                     //If email exist
  968.                     $userExist $this->em
  969.                     ->getRepository(User::class)
  970.                     ->findOneBy(['email' => $user->getEmail()]);
  971.                     if(!$userExist){
  972.                         //Valided step 0 and create user
  973.                         $token bin2hex(random_bytes(20));
  974.                         //Account
  975.                         $user->setIsAutoSignup(true);
  976.                         $user->setTokenSignupContinue($token);
  977.                         $user->setPassword("null");
  978.                         $user->setUsername($user->getEmail());
  979.                         $user->setStatus("VALID");
  980.                         $user->addRole('ROLE_CUSTOMER');
  981.                         //Set unique ID FOLDER
  982.                         $uniqueIdFolder substr($user->getFirstName(), 03)."-".date("ymdhis");
  983.                         $user->setAutoSignFolderNumber($uniqueIdFolder);
  984.                         //Birthday date -> LAST FUNCTION, use previous
  985.                         /*
  986.                         if($user->getDateDeNaissance()){
  987.                             $dateDeNaissance = str_replace("/", "-", $user->getDateDeNaissance());
  988.                             $user->setDateDeNaissance(new \DateTime(date("Y-m-d", strtotime($dateDeNaissance))));
  989.                         } else{
  990.                             $user->setDateDeNaissance(null);
  991.                         }
  992.                         */
  993.                         $this->em->persist($user);
  994.                         $this->em->flush($user);
  995.                         //add data in BA, SEPA and FIC
  996.                         $membershipCurrent $this->utils->createMembershipByProduct($user$productType"fullweb");
  997.                         $ba $membershipCurrent->getBa();
  998.                         $fic $membershipCurrent->getFic();
  999.                         $fic->setSex($user->getSex());
  1000.                         $fic->setEmail($user->getEmail());
  1001.                         $fic->setDateDeNaissance($user->getDateDeNaissance());
  1002.                         $fic->setNom($user->getLastName());
  1003.                         $fic->setPrenom($user->getFirstName());
  1004.                         $fic->setAdresseFiscaleResidenceFrance(false);
  1005.                         $ba->setSex($user->getSex());
  1006.                         $ba->setEmail($user->getEmail());
  1007.                         $ba->setDateDeNaissance($user->getDateDeNaissance());
  1008.                         $ba->setNom($user->getLastName());
  1009.                         $ba->setPrenom($user->getFirstName());
  1010.                         $ba->setCodeConseiller("FWB");
  1011.                         $ba->setResidenceFrance(true);
  1012.                         $this->em->persist($ba);
  1013.                         $this->em->flush();
  1014.                         //Send mail start signup
  1015.                         $mailNoReply $this->getParameter('mail_no_reply');
  1016.                         $senderName $this->getParameter('sender_name');
  1017.                         $urlSignup $this->get('router')->generate('member_signup', array('token' => $token), UrlGeneratorInterface::ABSOLUTE_URL);
  1018.                         $bodyEmail $this->renderView(
  1019.                             'email/startSignup.html.twig',
  1020.                             array('user' => $user'urlSignup' => $urlSignup)
  1021.                         );
  1022.                         $message = (new \Swift_Message("Demande d'adhésion"))
  1023.                             ->setSubject("Demande d'adhésion")
  1024.                             ->setFrom(array($mailNoReply => $senderName))
  1025.                             ->setTo(array($user->getEmail() => $senderName))
  1026.                             ->setBody($bodyEmail'text/html');
  1027.                         $this->mailer->send($message);
  1028.                         return $this->redirectToRoute('member_signup', ["token" => $token]);
  1029.                     }
  1030.                     else{
  1031.                         $this->addFlash('danger''Une demande d\'adhésion a déjà été émise avec cette adresse email.');
  1032.                     }
  1033.                 }
  1034.             }
  1035.         }
  1036.         $stepKey str_replace(".""_"$step);
  1037.         return $this->render('signup/signup.html.twig', Array(
  1038.             "step" => $step,
  1039.             "stepKey" => $stepKey,
  1040.             "productType" => $productType,
  1041.             "form" => $form $form->createView() : null,
  1042.             "errorEnd" => $errorEnd,
  1043.             "token" => $token,
  1044.             "user" => $user,
  1045.             "ba" => $ba,
  1046.             "fic" => $fic,
  1047.             "membership" => $membership,
  1048.             "previousStep" => $previousStep,
  1049.             "nextStep" => $nextStep,
  1050.             "finalStep" => $finalStep
  1051.         ));
  1052.     }
  1053.     /**
  1054.      * @Route("/fullweb/re_send_mail_no_sign", name="signup_resend_mail_no_sign")
  1055.      */
  1056.     public function reSendMailNoSign(Request $request){
  1057.         $userCurrent $this->get('security.token_storage')->getToken()->getUser();
  1058.         if($this->roleService->isGranted('ROLE_CUSTOMER'$userCurrent) && $userCurrent->isIsAutoSignup()){
  1059.             $token $userCurrent->getTokenSignupContinue();
  1060.             $membershipCurrent $this->utils->getMembershipByCustomer($userCurrent);
  1061.             $dateSendMail $membershipCurrent->getSendMailNoSignDate();
  1062.             $datetimeNow = new \DateTime('now -60 seconds');
  1063.             if($datetimeNow->format("YmdHis") >= $dateSendMail->format("YmdHis")){
  1064.                 $this->sendMailFolder($membershipCurrenttrue);
  1065.                 $this->addFlash('success'"Le mail vient d'être à nouveau envoyé");
  1066.             }
  1067.             else{
  1068.                 $this->addFlash('danger'"Vous avez déjà fait une demande dans les 60 dernières secondes, vous devez attendre pour réessayer");
  1069.             }
  1070.             return $this->redirectToRoute('member_signup', ["token" => $token]);
  1071.         }
  1072.         else{
  1073.             $this->addFlash('danger''Vous êtes connecté sur un compte non compatbile avec la création d\'une adhésion autonome');
  1074.             return $this->redirectToRoute('app_login');
  1075.         }
  1076.     }
  1077.     private function sendMailFolder(Membership $membershipbool $force false){
  1078.         if($membership->isSendMailNoSign() && $force == false){
  1079.             return true;
  1080.         }
  1081.         //BA, DIC, FIC AND SEPA
  1082.         //Send mail start signup
  1083.         $mailNoReply $this->getParameter('mail_no_reply');
  1084.         $senderName $this->getParameter('sender_name');
  1085.         $productType $membership->getProduct();
  1086.         $user $membership->getUser();
  1087.         $weight 0;
  1088.         $bodyEmail $this->renderView(
  1089.             'email/sendFilesNoSign_'.$membership->getProduct().'.html.twig',
  1090.             array('membership' => $membership)
  1091.         );
  1092.         //Fic
  1093.         $attachmentFic \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membership->getUser()->getId()."/".$membership->getFic()->getUrlPdf(), "application/pdf")->setFilename("Non signé - Fiche d'information et de conseil.pdf");
  1094.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membership->getUser()->getId()."/".$membership->getFic()->getUrlPdf());
  1095.         //Ba
  1096.         $attachmentBa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membership->getUser()->getId()."/".$membership->getBa()->getUrlPdf(), "application/pdf")->setFilename("Non signé - Demande d'adhésion.pdf");
  1097.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/".$membership->getUser()->getId()."/".$membership->getBa()->getUrlPdf());
  1098.         //Sepa
  1099.         $attachmentSepa \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/".$membership->getUser()->getId()."/".$membership->getBa()->getSepaUrlPdf(), "application/pdf")->setFilename("Non signé - Mandat de prélèvement SEPA.pdf");
  1100.         //Status
  1101.         $attachmentStatus \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf""application/pdf");
  1102.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../img/Statuts_mer_2022.pdf");
  1103.         //Réglements
  1104.         $attachmentReglement \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/REGLEMENT.pdf""application/pdf");
  1105.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/REGLEMENT.pdf");
  1106.         //Dic
  1107.         $attachmentDicPdf \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/DIC.pdf""application/pdf");
  1108.         $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/DIC.pdf");
  1109.         if($productType == "retraite"){
  1110.             //Frais
  1111.             $attachmentFraisPdf \Swift_Attachment::fromPath($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/FRAIS.pdf""application/pdf");
  1112.             $weight $weight filesize($this->fileUploader->getTargetDirectory()."/../default/".$membership->getProduct()."/FRAIS.pdf");
  1113.         }
  1114.         $message = (new \Swift_Message("Éléments précontractuels"))
  1115.             ->setSubject("Éléments précontractuels")
  1116.             ->setFrom(array($mailNoReply => $senderName))
  1117.             ->setTo(array($user->getEmail() => $senderName))
  1118.             ->setBody($bodyEmail'text/html')
  1119.             ->attach($attachmentFic)
  1120.             ->attach($attachmentBa)
  1121.             ->attach($attachmentSepa)
  1122.             ->attach($attachmentStatus)
  1123.             ->attach($attachmentReglement)
  1124.             ->attach($attachmentDicPdf)   
  1125.         ;
  1126.         if($productType == "retraite"){
  1127.             $message->attach($attachmentFraisPdf);
  1128.         }
  1129.         $this->mailer->send($message);
  1130.         $membership->setSendMailNoSign(true);
  1131.         $membership->setSendMailNoSignDate(new \DateTime("now"));
  1132.         $this->em->persist($membership);
  1133.         $this->em->flush($membership);
  1134.         return true;
  1135.     }
  1136. }