src/Controller/HomeController.php line 60

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\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  10. use Symfony\Component\HttpFoundation\Cookie;
  11. use App\Entity\BannedDomainEntity;
  12. use App\Entity\BannedUserEntity;
  13. use App\Entity\BonusEntity;
  14. use App\Entity\GeneratedWalletEntity;
  15. use App\Entity\MessageEntity;
  16. use App\Entity\NotificationEntity;
  17. use App\Entity\RecycledWalletEntity;
  18. use App\Entity\ReferralEntity;
  19. use App\Entity\SettingEntity;
  20. use App\Entity\SupportTicketEntity;
  21. use App\Entity\SupportTicketResponseEntity;
  22. use App\Entity\UserAdjustedTokenEntity;
  23. use App\Entity\UserBonusTokenEntity;
  24. use App\Entity\UserEntity;
  25. use App\Entity\UserOrderTokenEntity;
  26. use App\Entity\UserStakeTokenEntity;
  27. use App\Service\AuthService;
  28. use App\Service\BlockIoService;
  29. use App\Service\TOTPService;
  30. use App\Service\ReCaptchaService;
  31. use App\Form\RegistrationForm;
  32. use App\Form\LoginForm;
  33. use PHPMailer\PHPMailer\PHPMailer;
  34. use PHPMailer\PHPMailer\SMTP;
  35. use PHPMailer\PHPMailer\Exception;
  36. #[Route("/")]
  37. class HomeController extends AbstractController
  38. {
  39.     private $totpService;
  40.     private $recaptchaService;
  41.     public function __construct(TOTPService $totpServiceReCaptchaService $recaptchaService)
  42.     {
  43.         $this->totpService $totpService;
  44.         $this->recaptchaService $recaptchaService;
  45.     }
  46.    #[Route("/"name:"home")]
  47.     public function index(Request $request)
  48.     {
  49.         
  50.         $em $this->getDoctrine()->getManager();
  51.         $stagePurchase $em->getRepository(UserOrderTokenEntity::class)->stagePurchase();
  52.         $stagePurchaseGroupByUser $em->getRepository(UserOrderTokenEntity::class)->completedOrdersCtrGroupByUser();
  53.         $totalOrder  $stagePurchase['stagePurchase'];
  54.         $totalUser $em->getRepository(UserEntity::class)->userCount();
  55.         $totalBonus $em->getRepository(UserBonusTokenEntity::class)->totalBonus();
  56.        
  57.         return $this->render('Home/index.html.twig', [
  58.             'controller_name' => 'HomeController',
  59.             'totalOrder' => $totalOrder,
  60.             'totalUser' => $totalUser,
  61.             'totalUserWithCompletedOrder' => count($stagePurchaseGroupByUser),
  62.             'tokenDisctributed2' => $totalOrder -100000000 + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
  63.             'tokenDisctributed3' => $totalOrder 100000000 + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
  64.             'tokenDisctributed' => $totalOrder + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
  65.             'title' => 'AiETF Token Homepage',
  66.             'tokenDisctributedall' => 3500000000 $totalOrder - ($totalBonus['amt'] ? $totalBonus['amt'] : 0)
  67.         ]);
  68.     }
  69.     #[Route("/registration"name:"home_registration")]
  70.     public function registrationAction(Request $requestAuthService $authService)
  71.     {
  72.         if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
  73.         $em $this->getDoctrine()->getManager();
  74.         $user = new UserEntity();
  75.         $form $this->createForm(RegistrationForm::class, $user);
  76.         $refEmail $request->get('refEmail') ? $request->get('refEmail') : '';
  77.         $session $this->container->get('session');
  78.         $r $session->get('refCode');
  79.       
  80.         if($request->getMethod() == 'POST'){
  81.             $registrationForm $request->get($form->getName());
  82.             $errors = array();
  83.             $validateEmail false;
  84.            // $validateEmail  = $this->validate_email($registrationForm['email']);
  85.         
  86.             $userIps $em->getRepository(UserEntity::class)->findBy(array('ipAddress' => $this->getUserIp()));
  87.            
  88.             if(count($userIps) >= 5){
  89.                   $errors[] = 'Too many accounts have been created from this IP address. Please contact [email protected] for assistance.';
  90.            } else {
  91.               
  92.               $domain substr(strrchr($registrationForm['email'], "@"), 1);
  93.               $bannedDomains $em->getRepository(BannedDomainEntity::class)->banned_domains();
  94.               if(in_array($domainarray_merge($bannedDomains,  array('mailinator.com''make.com''shurkou.com''geeee.me''villastream.xyz''outlookbox.me''gmailvn.net''titiriwiki.com''otpku.com')))){
  95.                 $errors[] = 'Unauthorized registration. Please contact support.';
  96.               } else {
  97.                 if($validateEmail){
  98.                   
  99.                   // $bannedEmail = $em->getRepository(BannedDomainEntity::class)->findOneBy(array('description' => $domain));   
  100.                   // if($bannedEmail){
  101.                   //   $em->getRepository(BannedDomainEntity::class)->banned_domain($bannedEmail);  
  102.                   // }               
  103.                   
  104.                   $errors[] = 'Please use a valid email address';
  105.                 } else {
  106.                   //if (isset($_SESSION['_sf2_attributes']) && isset($_SESSION['_sf2_attributes']['_captcha_captcha']) && isset($_SESSION['_sf2_attributes']['_captcha_captcha']['phrase']) && PhraseBuilder::comparePhrases($_SESSION['_sf2_attributes']['_captcha_captcha']['phrase'], $registrationForm['captcha'])) {
  107.                  //  $return = $this->getCaptcha($request->request->get('g-recaptcha-response'));
  108.                   //  if($return->success && $return->score > 0.5){
  109.                         $errors $em->getRepository(UserEntity::class)->validateRegistration($registrationForm);
  110.                   
  111.                 //     } else {
  112.                  //        $errors[] = 'Invalid Captcha';
  113.                    //  }  
  114.                   }
  115.               }  
  116.            }
  117.            $recaptchaResponse $request->request->get('g-recaptcha-response');
  118.         //    if (!$this->recaptchaService->verifyToken($recaptchaResponse)) {
  119.         //         // If verification fails, return an error
  120.         //         $errors[] = 'Invalid Captcha';
  121.         //     }
  122.         //    if($registrationForm['id']){
  123.         //         $errors[] = 'Opps something went wrong please try again later.';
  124.         //    }
  125.             if(!count($errors)){
  126.                 $form->handleRequest($request);
  127.                 
  128.                 if($form->isValid()){
  129.                     $referral null;
  130.                     $level 1;
  131.                     if(!empty($r)){
  132.                         
  133.                         $referrer  $em->getRepository(UserEntity::class)->findOneBy(array(
  134.                             'referralCode' => $r
  135.                         ));
  136.                         
  137.                         if(!is_null($referrer)){
  138.                        
  139.                             $referral = new ReferralEntity();
  140.                             $referral->setReferrer($referrer);
  141.                             $referral->setlevel($level);
  142.                             $referral->setReferrentEmail($registrationForm['email']);
  143.                             $em->persist($referral);
  144.                             $em->flush();
  145.                             
  146.                           
  147.                         }
  148.                     }
  149.                  
  150.                     $user->setPassword($authService->better_crypt(md5($registrationForm['password']['first']), 15));
  151.                     $user->setType('Member');
  152.                     $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  153.                     $user->setReferral($referral);
  154.                     $user->setIpAddress($this->getUserIp());
  155.                     $user->setWalletAddress($this->generateWalletAddress());
  156.                     $user->setCardNo($this->generateCardNo());
  157.                     $user->setIsNewsletterSubscriber(1);
  158.                     $em->persist($user);
  159.                     $em->flush();
  160.                    //$this->byPass2fa($user);
  161.                     $this->processReferral($referral$em$level);
  162.                     //Send Verification Email
  163.                     $msg $this->renderView('Email/verification.html.twig',array('token' => $user->getToken()));
  164.                     $this->sendMail($user$msg'Complete Your XRPVerse Wallet Registration');
  165.                     $this->get('session')->getFlashBag()->add('success_messages'"We've sent a verification link to your email. Don’t forget to check your spam or junk folder.");
  166.                     return $this->redirect($this->generateUrl('home_login'),302);
  167.                 } else {
  168.                 
  169.                     foreach ($form->getErrors() as $key => $error) {
  170.                       $errors[] = $error->getMessage();
  171.                   }   
  172.           
  173.                     $this->get('session')->getFlashBag()->add('error_messages'"Oops! Something went wrong. Please try again or contact support.");
  174.                 }
  175.             } else {
  176.                 foreach($errors as $error) {
  177.                     $this->get('session')->getFlashBag()->add('error_messages'$error);
  178.                 }
  179.                 $form->submit($registrationFormfalse);
  180.             }
  181.         }
  182.         return $this->render('Home/registration.html.twig', array(
  183.             'form' => $form->createView(),
  184.             'r' => $r,
  185.            'title' => 'Registration - AiETF Token',
  186.             'refEmail' => $refEmail
  187.         ));
  188.     }
  189.     
  190.     private function getCaptcha($secretKey){
  191.         $response file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfUsK8iAAAAALJAX6JY7NgHDbUvICPTOf930MZH&response=' .$secretKey);
  192.     
  193.         return json_decode($response);
  194.     }
  195.     private function processReferral($referral$em$level){
  196.         
  197.         $level++;
  198.         if($level <= 2){
  199.             
  200.            
  201.             if($referral){
  202.                $referrer $referral->getReferrer();
  203.                 if($referrer){
  204.                   $nextLvlReferral $referrer->getReferral();
  205.                   if($nextLvlReferral && $nextLvlReferral->getReferrer()){
  206.                   
  207.                       $newRef = new ReferralEntity();
  208.                       $newRef->setReferrer($nextLvlReferral->getReferrer());
  209.                       $newRef->setlevel($level);
  210.                       $referrentEmail $em->getRepository(UserEntity::class)->findOneBy(array('referral' => $referral->getId() ));
  211.                       $newRef->setReferrentEmail($referrentEmail->getEmail() ? $referrentEmail->getEmail() : 'System');
  212.                       $em->persist($newRef);
  213.                       $em->flush();
  214.                      
  215.                   }
  216.               }
  217.             }
  218.         }        
  219.     }
  220.        #[Route("/two_fa/{e}"name:"home_two_fa")]
  221.     public function two_faAction(Request $request$eAuthService $authService)
  222.     {
  223.     
  224.         if($request->getMethod() == 'POST'){
  225.             
  226.              $iotp $request->request->get('otp');
  227.              
  228.              $user $this->getDoctrine()->getManager()->getRepository(UserEntity::class)->findOneBy(['email' => $e]);
  229.              
  230.              if($this->totpService->verifyOTP() == $iotp ){
  231.                
  232.                 $session $this->get('session');
  233.                 $req_uri $session->has('req_uri') ? $session->get('req_uri') : false;
  234.                 $session->clear();
  235.                 $userData = array(
  236.                     'id' => $user->getId(),
  237.                     'type' => $user->getType(),
  238.                     'email' => $user->getEmail(),
  239.                     'fullName' => $user->getFullName()
  240.                 );
  241.                 $session->set('userData'$userData);    
  242.                 $url $this->generateUrl('dashboard_index');
  243.                 $response = new RedirectResponse($url);
  244.                 
  245.                 $response->headers->setCookie(new Cookie('userId'$user->getId(), (time() + (86400))));
  246.                 $response->headers->setCookie(new Cookie('email'$user->getEmail(), (time() + (86400))));
  247.                 $response->send();
  248.              } else {
  249.                 
  250.                 $this->get('session')->getFlashBag()->add('error_messages'"That 2FA code didn’t work â€” enter a new one.");
  251.              }
  252.         }
  253.         $secret $this->totpService->getSecret();
  254.         $provisioningUri $this->totpService->getProvisioningUri($e);
  255.         $qr $this->totpService->generateQRCode($provisioningUri);
  256.         return $this->render('Home/two_fa.html.twig', array(
  257.             'secret' => $secret,
  258.             'provisioningUri' => $provisioningUri,
  259.             'qr' => $qr,
  260.             'e' => $e,
  261.         ));
  262.     }
  263.    #[Route("/login/{r}"requirements:["r" => "\d+" ], name:"home_login")]
  264.     public function loginAction(Request $requestAuthService $authService$r='')
  265.     {
  266.         if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
  267.         
  268.         $userObj = new UserEntity();
  269.         $form $this->createForm(LoginForm::class, $userObj);
  270.         if($request->getMethod() === 'POST') {
  271.             $registrationForm $request->get($form->getName());
  272.             $em $this->getDoctrine()->getManager();
  273.             $login $request->get('field');
  274.             $user $em->getRepository(UserEntity::class)->findOneBy(array('email' => $registrationForm['email'], 'status' => 'Active'));
  275.             
  276.             if($user && ($user->getPassword() === crypt(md5($registrationForm['password']), $user->getPassword()) || $user->getPassword() === $registrationForm['password'])) {
  277.                 $session $this->get('session');
  278.             
  279.                 if($user->getTwoFa()){
  280.                     
  281.                     return $this->redirect($this->generateUrl('home_two_fa', ['e' => $user->getEmail()]),302);
  282.                 } else {
  283.                     $req_uri $session->has('req_uri') ? $session->get('req_uri') : false;
  284.                     $session->clear();
  285.                     $userData = array(
  286.                         'id' => $user->getId(),
  287.                         'type' => $user->getType(),
  288.                         'email' => $user->getEmail(),
  289.                         'fullName' => $user->getFullName()
  290.                     );
  291.                     $session->set('userData'$userData);    
  292.                     $url $this->generateUrl('dashboard_index');
  293.                     $response = new RedirectResponse($url);
  294.                     
  295.                     $response->headers->setCookie(new Cookie('userId'$user->getId(), (time() + (86400))));
  296.                     $response->headers->setCookie(new Cookie('email'$user->getEmail(), (time() + (86400))));
  297.                     $response->send();
  298.                     
  299.                 }
  300.                     
  301.             } else {
  302.                 $this->get('session')->getFlashBag()->set('error_messages''Invalid username or password.');
  303.             }
  304.             
  305.             
  306.         }
  307.         
  308.         return $this->render('Home/login.html.twig', array(
  309.             'r' => $r,
  310.             'title' => 'Login - AiETF Token',
  311.             'form' => $form->createView()
  312.         ));
  313.     }
  314. #[Route("/loginnew/{r}"requirements:["r"=>"\d+" ], name:"home_loginnew")]
  315.     public function loginnewAction(Request $requestAuthService $authService$r='')
  316.     {
  317.         if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
  318.         
  319.         $userObj = new UserEntity();
  320.         $form $this->createForm(LoginForm::class, $userObj);
  321.         if($request->getMethod() === 'POST') {
  322.             $registrationForm $request->get($form->getName());
  323.             $em $this->getDoctrine()->getManager();
  324.             $login $request->get('field');
  325.             $user $em->getRepository(UserEntity::class)->findOneBy(array('email' => $registrationForm['email'], 'status' => 'Active'));
  326.             
  327.             if($user && ($user->getPassword() === crypt(md5($registrationForm['password']), $user->getPassword()) || $user->getPassword() === $registrationForm['password'])) {
  328.                 $session $this->get('session');
  329.             
  330.                 if($user->getTwoFa()){
  331.                     $twoFaCode $this->generateForgotPasswordVerificationCode();
  332.                     $user->setTwoFaCode($twoFaCode);
  333.                     $em->flush();
  334.                     $this->get('session')->getFlashBag()->add('success_messages'"We’ve sent a 2FA code to your email â€” please enter it to continue.");
  335.                     $msg $this->renderView('Email/two_fa.html.twig',array('code' => $twoFaCode));
  336.                     $this->get('fullMoon.mailService')->sendMail('Your XRPVerse Login Code.'$msg$user->getEmail());
  337.                     return $this->redirect($this->generateUrl('home_two_fa', array('token' => $user->getToken())), 302);
  338.                 } else {
  339.                     $req_uri $session->has('req_uri') ? $session->get('req_uri') : false;
  340.                     $session->clear();
  341.                     $userData = array(
  342.                         'id' => $user->getId(),
  343.                         'type' => $user->getType(),
  344.                         'email' => $user->getEmail(),
  345.                         'fullName' => $user->getFullName()
  346.                     );
  347.                     $session->set('userData'$userData);    
  348.                     $url $this->generateUrl('dashboard_index');
  349.                     $response = new RedirectResponse($url);
  350.                     
  351.                     $response->headers->setCookie(new Cookie('userId'$user->getId(), (time() + (86400))));
  352.                     $response->headers->setCookie(new Cookie('email'$user->getEmail(), (time() + (86400))));
  353.                     $response->send();
  354.                     
  355.                 }
  356.                     
  357.             } else {
  358.                 $this->get('session')->getFlashBag()->set('error_messages''Login failed â€” please check your credentials.');
  359.             }
  360.             
  361.             
  362.         }
  363.         
  364.         return $this->render('Home/loginnew.html.twig', array(
  365.             'r' => $r,
  366.             'title' => 'Login - AiETF Token',
  367.             'form' => $form->createView()
  368.         ));
  369.     }
  370.     #[Route("/code_verification/{token}"name:"home_code_verification")]
  371.     public function code_verificationAction($tokenRequest $requestAuthService $authService)
  372.     {
  373.         $refCode $request->get('r') ? $request->get('r') : '';
  374.         
  375.         if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
  376.         $em $this->getDoctrine()->getManager();
  377.         $user $em->getRepository(UserEntity::class)->findOneBy(array(
  378.             'token' => $token
  379.         ));
  380.         if(!$user){
  381.           
  382.            $this->get('session')->getFlashBag()->set('error_messages''Invalid or expired verification code.');
  383.            return $authService->redirectToLogin();
  384.         } else {
  385.             if(!in_array($user->getStatus(), array('Banned' 'Active'))){
  386.                 
  387.                 $user->setStatus('Active');
  388.                 $user->setReferralCode($this->generateReferralCode());
  389.                 $user->setExchangePhrase($this->generateExchangePhrase());
  390.                 $em->flush();
  391.                 $regBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SB'));
  392.                 //This is for user regisration bonus.
  393.                 if($regBonus){
  394.                        $userRegBonus = new UserBonusTokenEntity();
  395.                        $userRegBonus->setUser($user);
  396.                        $userRegBonus->setBonus($regBonus);
  397.                        $userRegBonus->setAmount($regBonus->getBonusToken());
  398.                        $em->persist($userRegBonus);
  399.                        $em->flush();
  400.                 }
  401.                 $referral $user->getReferral();
  402.                     if($referral){
  403.                        $referral->setStatus('Completed');
  404.                        $primarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'PR'));
  405.                        $firstReferralBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'FRB'));
  406.                        $firstReferrer $referral->getReferrer();
  407.                       
  408.                        if(!$firstReferrer->getHasFirstReferral()){
  409.                            $bonus = new UserBonusTokenEntity();
  410.                            $bonus->setUser($referral->getReferrer());
  411.                            $bonus->setBonus($firstReferralBonus);
  412.                            $bonus->setAmount($firstReferralBonus->getBonusToken());
  413.                            $bonus->setReferral($referral);
  414.                            $em->persist($bonus);
  415.                            $firstReferrer->setHasFirstReferral(true);
  416.                            $em->flush();
  417.                            $notification = new NotificationEntity();
  418.                            $notification->setType('First Referral Bonus');
  419.                            $notification->setMessage('You just have received ' $firstReferralBonus->getBonusToken() . ' Token for your first referral.');
  420.                            $notification->setUser($referral->getReferrer());
  421.                            $em->persist($notification);
  422.                            $em->flush();
  423.                        }
  424.                        if($primarySignUpBonus){
  425.                            $primaryUserBonus = new UserBonusTokenEntity();
  426.                            $primaryUserBonus->setUser($referral->getReferrer());
  427.                            $primaryUserBonus->setBonus($primarySignUpBonus);
  428.                            $primaryUserBonus->setAmount($primarySignUpBonus->getBonusToken());
  429.                            $primaryUserBonus->setReferral($referral);
  430.                            $em->persist($primaryUserBonus);
  431.                            $em->flush();
  432.                            $notification = new NotificationEntity();
  433.                            $notification->setType('Level 1 Referral');
  434.                            $notification->setMessage('You have a new Level 1 Referral');
  435.                            $notification->setUser($referral->getReferrer());
  436.                            $em->persist($notification);
  437.                            $em->flush();
  438.                            $msg $this->renderView('Email/referral.html.twig');
  439.                        //    $this->get('fullMoon.mailService')->sendMail('You have a new referral at LTCB', $msg, $referral->getReferrer()->getEmail());
  440.                        }
  441.                        $referralReferrent $referral->getReferrer();
  442.                        $secondaryReferral $referralReferrent->getReferral();
  443.                        if($secondaryReferral){
  444.                            $secondarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SR'));
  445.                            if($secondarySignUpBonus){
  446.                                $secondaryUserSignUpBonus = new UserBonusTokenEntity();
  447.                                $secondaryUserSignUpBonus->setUser($secondaryReferral->getReferrer());
  448.                                $secondaryUserSignUpBonus->setBonus($secondarySignUpBonus);
  449.                                $secondaryUserSignUpBonus->setAmount($secondarySignUpBonus->getBonusToken());
  450.                                $secondaryUserSignUpBonus->setReferral($referral);
  451.                                $secondaryUserSignUpBonus->setSecondaryReferral($secondaryReferral);
  452.                                $em->persist($secondaryUserSignUpBonus);
  453.                                $em->flush();
  454.                               $notification = new NotificationEntity();
  455.                               $notification->setType('Level 2 Referral');
  456.                               $notification->setMessage('You have a new Level 2 Referral');
  457.                               $notification->setUser($secondaryReferral->getReferrer());
  458.                               $em->persist($notification);
  459.                               $em->flush();
  460.                                $msg $this->renderView('Email/referral.html.twig');
  461.                             //   $this->get('fullMoon.mailService')->sendMail('You have a new referral at ', $msg, $secondaryReferral->getReferrer()->getEmail());
  462.                            }
  463.                           $secondaryReferrent $secondaryReferral->getReferrer();
  464.                           $thirdLevelReferral $secondaryReferrent->getReferral();
  465.                           if($thirdLevelReferral){
  466.                                $bonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'TR'));
  467.                                if($bonus){
  468.                                    $thirdLevelRefBonus = new UserBonusTokenEntity();
  469.                                    $thirdLevelRefBonus->setUser($thirdLevelReferral->getReferrer());
  470.                                    $thirdLevelRefBonus->setBonus($bonus);
  471.                                    $thirdLevelRefBonus->setAmount($bonus->getBonusToken());
  472.                                    $thirdLevelRefBonus->setReferral($referral);
  473.                                    $thirdLevelRefBonus->setSecondaryReferral($secondaryReferral);
  474.                                    $thirdLevelRefBonus->setThirdReferral($thirdLevelReferral);
  475.                                    $em->persist($thirdLevelRefBonus);
  476.                                    $em->flush();
  477.                                    $notification = new NotificationEntity();
  478.                                    $notification->setType('Level 3 Referral');
  479.                                    $notification->setMessage('You have a new Level 3 Referral');
  480.                                    $notification->setUser($thirdLevelReferral->getReferrer());
  481.                                    $em->persist($notification);
  482.                                    $em->flush();
  483.                                    $msg $this->renderView('Email/referral.html.twig');
  484.                                  //  $this->get('fullMoon.mailService')->sendMail('You have a new referral', $msg, $thirdLevelReferral->getReferrer()->getEmail());
  485.                                }
  486.                            }
  487.                        }
  488.                     }
  489.                     $em->flush();
  490.                     //$msg = $this->renderView('Email/welcome.html.twig',array('token' => $user->getToken()));
  491.                     //$this->get('fullMoon.mailService')->sendMail('Welcome', $msg, $user->getEmail());
  492.                     $msg $this->renderView('Email/welcome.html.twig');
  493.                     $this->sendMail($user$msg'Your XRPVerse journey starts here ðŸš€.');
  494.                     $this->get('session')->getFlashBag()->add('success_messages'"Success! Your account is ready. Please log in.");
  495.                     return $this->redirect($this->generateUrl('home_login'),302);
  496.             } else {
  497.                 $this->get('session')->getFlashBag()->set('error_messages''Something went wrong. Please get in touch with support.');
  498.                 return  $authService->redirectToLogin();
  499.             }
  500.         
  501.         }
  502.         return $this->render('Home/code_verification.html.twig', array(
  503.             'title' => 'Verify - AiETF Token',
  504.             'refCode' => $refCode
  505.         ));
  506.     }
  507.     
  508.     
  509.     
  510.    #[Route("/whitepaperv1"name:"home_whitepaperv1")]
  511.     public function white_paperAction(Request $requestAuthService $authService)
  512.     {
  513.       $refCode $request->get('r') ? $request->get('r') : '';
  514.         if($request->getMethod() === 'POST'){
  515.             $params $request->get('field');
  516.             $em $this->getDoctrine()->getManager();
  517.             $user $em->getRepository(UserEntity::class)->findOneBy(array('email' => $params['email_address'],  'status' => 'Active'));
  518.             if($user){
  519.                
  520.                 $code $this->generateForgotPasswordVerificationCode();
  521.                 $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  522.                 $user->setForgotPasswordCode($code);
  523.                 $em->flush();
  524.                 $msg $this->renderView('Email/forgot_password.html.twig',array('code' => $code ));
  525.                 $this->sendMail($user$msg'Use This Code to Reset Your Password.');
  526.                 $this->get('session')->getFlashBag()->add('success_messages'"Check your inbox for your password reset code.");
  527.                 return $this->redirect($this->generateUrl('home_verify_code', array('token' => $user->getToken())),302);
  528.             }  else {
  529.                 $this->get('session')->getFlashBag()->add('error_messages'"We couldn’t find an account with that email.");
  530.             }
  531.         }
  532.         return $this->render('Home/whitepaper.html.twig',array(
  533.             'title' => 'WhitePaper - XRPVerse',
  534.             'refCode' => $refCode
  535.         ));
  536.     }
  537.     
  538.     
  539. #[Route("/forgot_password"name:"home_forgot_password")]
  540.     public function forgot_passwordAction(Request $requestAuthService $authService)
  541.     {
  542.       $refCode $request->get('r') ? $request->get('r') : '';
  543.         if($request->getMethod() === 'POST'){
  544.             $params $request->get('field');
  545.             $em $this->getDoctrine()->getManager();
  546.             $user $em->getRepository(UserEntity::class)->findOneBy(array('email' => $params['email_address'],  'status' => 'Active'));
  547.             if($user){
  548.                
  549.                 $code $this->generateForgotPasswordVerificationCode();
  550.                 $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  551.                 $user->setForgotPasswordCode($code);
  552.                 $em->flush();
  553.                 $msg $this->renderView('Email/forgot_password.html.twig',array('code' => $code ));
  554.                 $this->sendMail($user$msg'Use This Code to Reset Your Password.');
  555.                 $this->get('session')->getFlashBag()->add('success_messages'"Check your inbox for your password reset code.");
  556.                 return $this->redirect($this->generateUrl('home_verify_code', array('token' => $user->getToken())),302);
  557.             }  else {
  558.                 $this->get('session')->getFlashBag()->add('error_messages'"We couldn’t find an account with that email.");
  559.             }
  560.         }
  561.         return $this->render('Home/forgot_password.html.twig',array(
  562.             'title' => 'Forgot Password - XRPVerse',
  563.             'refCode' => $refCode
  564.         ));
  565.     }
  566.    #[Route("/verify_code/{token}"name:"home_verify_code")]
  567.     public function verify_codeAction(Request $request$tokenAuthService $authService)
  568.     {
  569.       $refCode $request->get('r') ? $request->get('r') : '';
  570.                    $em $this->getDoctrine()->getManager();
  571.       $user $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
  572.       if(!$user){
  573.           $this->get('session')->getFlashBag()->add('error_messages'"Invalid or expired verification code.");
  574.           return $this->redirect($this->generateUrl('home_login'),302);
  575.       } 
  576.       if($request->getMethod() == 'POST'){
  577.         if($user->getForgotPasswordCode() == $request->get('code')){
  578.           $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  579.           $em->flush();
  580.           return $this->redirect($this->generateUrl('home_reset_password', array('token' => $user->getToken())),302);
  581.         } else {
  582.           $this->get('session')->getFlashBag()->add('error_messages'"Invalid or expired verification code.");
  583.         }
  584.       }       
  585.       return $this->render('Home/verify_code.html.twig', array(
  586.           'token' => $token,
  587.           'refCode' => $refCode));
  588.     }
  589.    #[Route("/reset_password/{token}"name:"home_reset_password")]
  590.     public function reset_passwordAction(Request $request$tokenAuthService $authService)
  591.     {
  592.         $refCode $request->get('r') ? $request->get('r') : '';
  593.         if($request->getMethod() === 'POST'){
  594.             $params $request->get('field');
  595.             $em $this->getDoctrine()->getManager();
  596.             $user $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
  597.             if($user){
  598.                 $errors $em->getRepository(UserEntity::class)->validateForgotPassword($params);
  599.                 
  600.                 if(!count($errors)){
  601.                     $user->setPassword($authService->better_crypt(md5($params['password']['first']), 15));
  602.                     $em->flush();
  603.                     $notification = new NotificationEntity();
  604.                     $notification->setType('Password Reset');
  605.                     $notification->setMessage('Password has successfully updated.');
  606.                     $notification->setUser($user);
  607.                     $em->persist($notification);
  608.                     $em->flush();
  609.                     $this->get('session')->getFlashBag()->add('success_messages'"Password changed successfully. You’re all set!");
  610.                     return $this->redirect($this->generateUrl('home_login'),302);
  611.                 } else {
  612.                     foreach($errors as $error) {
  613.                         $this->get('session')->getFlashBag()->add('error_messages'$error);
  614.                     }
  615.                 }
  616.             }  else {
  617.                 $this->get('session')->getFlashBag()->add('error_messages'"Invalid or expired verification code.");
  618.             }
  619.         }
  620.         return $this->render('Home/reset_password.html.twig', array(
  621.            'title' => 'Reset Password - AiETF Token',
  622.             'token' => $token,
  623.             'refCode' => $refCode));
  624.     }
  625.    #[Route("/logout"name:"home_logout")]
  626.     public function logoutAction(AuthService $authService) {
  627.         
  628.         if(!$authService->isLoggedIn()) return $authService->redirectToLogin();
  629.         $this->get('session')->clear();
  630.         if(isSet($_COOKIE['userId'])) {
  631.             unset($_COOKIE['userId']);
  632.             setcookie('userId'null, -1'/');
  633.         }
  634.         if(isSet($_COOKIE['email'])) {
  635.             unset($_COOKIE['email']);
  636.             setcookie('email'null, -1'/');
  637.         }
  638.         return $authService->redirectToLogin();
  639.     }
  640.    #[Route("/terms"name:"home_terms")]
  641.     public function termsAction(Request $request){
  642.        
  643.         $em $this->getDoctrine()->getManager();
  644.       
  645.       return $this->render('Home/terms.html.twig');
  646.     }
  647.     
  648.     
  649.    #[Route("/cookies"name:"home_cookies")]
  650.     public function cookiesAction(Request $request){
  651.        
  652.         $em $this->getDoctrine()->getManager();
  653.       
  654.       return $this->render('Home/cookies.html.twig');
  655.     }
  656.    #[Route("/privacy"name:"home_privacy")]
  657.     public function privacyAction(Request $request){
  658.         $refCode $request->get('r') ? $request->get('r') : '';
  659.         $em $this->getDoctrine()->getManager();
  660.       
  661.       return $this->render('Home/privacy.html.twig');
  662.     }
  663. #[Route("/whitepaper"name:"home_whitepaper")]
  664.      public function whitepaperAction(Request $request){
  665.         $filename "Whitepaper.pdf";
  666.         return new BinaryFileResponse(__DIR__  .'/../../public/' $filename);
  667.     }
  668.    #[Route("/token"name:"home_token")]
  669.     public function tokenAction(Request $request){
  670.       $refCode $request->get('r') ? $request->get('r') : '';
  671.         $em $this->getDoctrine()->getManager();
  672.       
  673.       return $this->render('Home/token.html.twig');
  674.     }
  675.     #[Route("/contact"name:"home_contact_us")]
  676.     public function contact_usAction(Request $request){
  677.       $refCode $request->get('r') ? $request->get('r') : '';
  678.       if($request->getMethod() === 'POST'){
  679.         $supportMsg  $request->get('field');
  680.         $errors = array();
  681.         if(empty($supportMsg['name'])){ $errors[] = 'Please put your name.'; }
  682.         if(empty($supportMsg['email'])){ $errors[] = 'Please put your email.'; }
  683.       //  if(empty($supportMsg['phone'])){ $errors[] = 'Please put your phone no.'; }
  684.         if(empty($supportMsg['message'])){ $errors[] = 'Please put your Message.'; }
  685.         if(!count($errors)){
  686.             $this->get('session')->getFlashBag()->add('success_messages'"Message received! Our team will respond as soon as possible.");
  687.             $msg $this->renderView('Email/support_msg.html.twig', array('msg' =>  $supportMsg));
  688.             
  689.             $this->sendSupportMail$msg,'New Support Message');
  690.         } else {
  691.            foreach($errors as $error) {
  692.                 $this->get('session')->getFlashBag()->add('error_messages'$error);
  693.             }
  694.         }
  695.       }
  696.        return $this->redirect$this->generateUrl('home'), 302);
  697.     }
  698.     #[Route("/faq"name:"home_faq")]
  699.     public function faqAction(Request $request){
  700.       $refCode $request->get('r') ? $request->get('r') : '';
  701.       return $this->render('Home/faq.html.twig' , array(
  702.             'refCode' => $refCode));
  703.     }
  704.     #[Route("/news"name:"home_news")]
  705.     public function newsAction(Request $request){
  706.       $refCode $request->get('r') ? $request->get('r') : '';
  707.       return $this->render('Home/news.html.twig' , array(
  708.             'refCode' => $refCode));
  709.     }
  710.    #[Route("/project_bonuses"name:"home_project_bonuses")]
  711.     public function projectBonusesAction(Request $request){
  712.       $refCode $request->get('r') ? $request->get('r') : '';
  713.       return $this->render('Home/project_bonuses.html.twig' , array(
  714.             'refCode' => $refCode));
  715.     }
  716.    #[Route("/roadmap"name:"home_roadmap")]
  717.     public function roadmapAction(Request $request){
  718.       $refCode $request->get('r') ? $request->get('r') : '';
  719.       return $this->render('Home/roadmap.html.twig' , array(
  720.             'refCode' => $refCode));
  721.     }
  722.    #[Route("/about"name:"home_about")]
  723.     public function aboutAction(Request $request){
  724.       $refCode $request->get('r') ? $request->get('r') : '';
  725.       return $this->render('Home/about.html.twig' , array(
  726.             'refCode' => $refCode));
  727.     }
  728.    #[Route("/blog"name:"home_blog")]
  729.     public function blogAction(Request $request){
  730.       $refCode $request->get('r') ? $request->get('r') : '';
  731.       return $this->render('Home/blog.html.twig' , array(
  732.             'refCode' => $refCode));
  733.     }
  734.    #[Route("/AiPay-is-live"name:"home_blog1")]
  735.     public function blog1Action(Request $request){
  736.       $refCode $request->get('r') ? $request->get('r') : '';
  737.       return $this->render('Home/blog1.html.twig' , array(
  738.             'refCode' => $refCode));
  739.     }
  740.    #[Route("/gleancoinisborn"name:"home_blogpost")]
  741.     public function gleancoinisbornAction(Request $request){
  742.       $refCode $request->get('r') ? $request->get('r') : '';
  743.       return $this->render('Home/gleanisborn.html.twig' , array(
  744.             'refCode' => $refCode));
  745.     }
  746.    #[Route("/howto"name:"home_blogpost1")]
  747.     public function howtoAction(Request $request){
  748.       $refCode $request->get('r') ? $request->get('r') : '';
  749.       return $this->render('Home/howto.html.twig' , array(
  750.             'refCode' => $refCode));
  751.     }
  752.    #[Route("/home1"name:"home_home1")]
  753.     public function newhomeAction(Request $request){
  754.         
  755.          $em $this->getDoctrine()->getManager();
  756.         $stagePurchase $em->getRepository(UserOrderTokenEntity::class)->stagePurchase();
  757.         $stagePurchaseGroupByUser $em->getRepository(UserOrderTokenEntity::class)->completedOrdersCtrGroupByUser();
  758.         $totalOrder  $stagePurchase['stagePurchase'];
  759.         $totalUser $em->getRepository(UserEntity::class)->userCount();  
  760.         
  761.       $refCode $request->get('r') ? $request->get('r') : '';
  762.       return $this->render('Home/home.html.twig', [
  763.             'controller_name' => 'HomeController',
  764.             'totalOrder' => $totalOrder,
  765.             'totalUser' => $totalUser,
  766.             'totalUserWithCompletedOrder' => count($stagePurchaseGroupByUser)
  767.         ]);
  768.     }
  769.     #[Route("/news/article/{title}"name:"home_news_article")]
  770.     public function news_articleAction($titleRequest $request){
  771.       $refCode $request->get('r') ? $request->get('r') : '';
  772.       return $this->render('Home/news_article.html.twig',array('article' => $title,'refCode' => $refCode));
  773.     }
  774.    #[Route("/stake_mining"name:"home_stake_mining")]
  775.     public function stake_miningAction(Request $request){
  776.         $refCode $request->get('r') ? $request->get('r') : '';
  777.       return $this->render('Home/stake_mining.html.twig',array('article' => 'What is Stake Mining?','refCode' => $refCode));
  778.     
  779.     }
  780.    #[Route("/mobile_app"name:"home_mobile_app")]
  781.     public function mobile_appAction(Request $request){
  782.         $refCode $request->get('r') ? $request->get('r') : '';
  783.       return $this->render('Home/mobile_app.html.twig',array('refCode' => $refCode));
  784.     
  785.     }
  786.     #[Route("/send/test_email"name:"home_send_test_email")]
  787.     public function send_test_emailAction(){
  788.        $msg $this->renderView('Email/send_test_email.html.twig');
  789.        $this->get('fullMoon.mailService')->sendMail('The LTCB Launch Was A Success!'$msg'[email protected]');
  790.       die("Message Send....");
  791.     }
  792.     private function generateReferralCode($length 6) {
  793.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  794.         $charactersLength strlen($characters);
  795.         $randomString '';
  796.         $em $this->getDoctrine()->getManager();
  797.         for ($i 0$i $length$i++) {
  798.             $randomString .= $characters[rand(0$charactersLength 1)];
  799.         }
  800.         $referralCode $em->getRepository(UserEntity::class)->findOneBy(array('referralCode' => $randomString));
  801.         if($referralCode){
  802.             $this->generateReferralCode();
  803.         }
  804.         return $randomString;
  805.     }
  806.     private function generateExchangePhrase($length 26) {
  807.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  808.         $charactersLength strlen($characters);
  809.         $randomString '';
  810.         $em $this->getDoctrine()->getManager();
  811.         for ($i 0$i $length$i++) {
  812.             $randomString .= $characters[rand(0$charactersLength 1)];
  813.         }
  814.         $exchangePhrase $em->getRepository(UserEntity::class)->findOneBy(array('exchangePhrase' => $randomString));
  815.         if($exchangePhrase){
  816.             $this->generateExchangePhrase();
  817.         }
  818.         return $randomString;
  819.     }
  820.     private function generateWalletAddress($length 16) {
  821.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  822.         $charactersLength strlen($characters);
  823.         $randomString '';
  824.         $em $this->getDoctrine()->getManager();
  825.         for ($i 0$i $length$i++) {
  826.             $randomString .= $characters[rand(0$charactersLength 1)];
  827.         }
  828.         $walletAddress $em->getRepository(UserEntity::class)->findOneBy(array('walletAddress' => $randomString));
  829.         if($walletAddress){
  830.             $this->generateWalletAddress();
  831.         }
  832.         return $randomString;
  833.     }
  834.     private function generateForgotPasswordVerificationCode($length 4) {
  835.         $characters '0123456789';
  836.         $charactersLength strlen($characters);
  837.         $randomString '';
  838.         $em $this->getDoctrine()->getManager();
  839.         for ($i 0$i $length$i++) {
  840.             $randomString .= $characters[rand(0$charactersLength 1)];
  841.         }
  842.         return $randomString;
  843.     }
  844.     private function getUserIp()
  845.     {
  846.         // Get real visitor IP behind CloudFlare network
  847.         if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  848.             $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  849.             $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  850.         }
  851.         $client  = @$_SERVER['HTTP_CLIENT_IP'];
  852.         $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
  853.         $remote  $_SERVER['REMOTE_ADDR'];
  854.         if(filter_var($clientFILTER_VALIDATE_IP))
  855.         {
  856.             $ip $client;
  857.         }
  858.         elseif(filter_var($forwardFILTER_VALIDATE_IP))
  859.         {
  860.             $ip $forward;
  861.         }
  862.         else
  863.         {
  864.             $ip $remote;
  865.         }
  866.         return $ip;
  867.     }
  868.     private function validate_email($email){
  869.         $params = array(
  870.           "address" => $email
  871.         );
  872.         $ch curl_init();
  873.         curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC);
  874.         curl_setopt($chCURLOPT_USERPWD'api:899a34e2ae5642471efeb2cc85d68a70-28d78af2-83177aee');
  875.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  876.         curl_setopt($chCURLOPT_CUSTOMREQUEST'GET');
  877.         curl_setopt($chCURLOPT_POSTFIELDS$params);
  878.         curl_setopt($chCURLOPT_URL'https://api.mailgun.net/v4/address/validate');
  879.         $result curl_exec($ch);
  880.         curl_close($ch);
  881.         return json_decode($resulttrue);
  882.     }
  883.        #[Route("/r/{refCode}"name:"home_referral")]
  884.     public function referral(Request $request$refCode)
  885.     {
  886.         $em $this->getDoctrine()->getManager();
  887.         if(!empty($refCode)){
  888.             $session $this->container->get('session');
  889.             $session->set('refCode' $refCode);
  890.         }
  891.         return $this->redirect($this->generateUrl('home') , 302);
  892.     }
  893.     private function byPass2fa($user){
  894.         $em $this->getDoctrine()->getManager();
  895.         
  896.         $user->setStatus('Active');
  897.         $user->setReferralCode($this->generateReferralCode());
  898.         $user->setExchangePhrase($this->generateExchangePhrase());
  899.         $em->flush();
  900.         $regBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SB'));
  901.         //This is for user regisration bonus.
  902.         if($regBonus){
  903.                $userRegBonus = new UserBonusTokenEntity();
  904.                $userRegBonus->setUser($user);
  905.                $userRegBonus->setBonus($regBonus);
  906.                $userRegBonus->setAmount($regBonus->getBonusToken());
  907.                $em->persist($userRegBonus);
  908.                $em->flush();
  909.         }
  910.         $referral $user->getReferral();
  911.             if($referral){
  912.                $referral->setStatus('Completed');
  913.                $primarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'PR'));
  914.                $firstReferralBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'FRB'));
  915.                $firstReferrer $referral->getReferrer();
  916.               
  917.                if(!$firstReferrer->getHasFirstReferral()){
  918.                    $bonus = new UserBonusTokenEntity();
  919.                    $bonus->setUser($referral->getReferrer());
  920.                    $bonus->setBonus($firstReferralBonus);
  921.                    $bonus->setAmount($firstReferralBonus->getBonusToken());
  922.                    $bonus->setReferral($referral);
  923.                    $em->persist($bonus);
  924.                    $firstReferrer->setHasFirstReferral(true);
  925.                    $em->flush();
  926.                    $notification = new NotificationEntity();
  927.                    $notification->setType('First Referral Bonus');
  928.                    $notification->setMessage('You just have received ' $firstReferralBonus->getBonusToken() . ' Token for your first referral.');
  929.                    $notification->setUser($referral->getReferrer());
  930.                    $em->persist($notification);
  931.                    $em->flush();
  932.                }
  933.                if($primarySignUpBonus){
  934.                    $primaryUserBonus = new UserBonusTokenEntity();
  935.                    $primaryUserBonus->setUser($referral->getReferrer());
  936.                    $primaryUserBonus->setBonus($primarySignUpBonus);
  937.                    $primaryUserBonus->setAmount($primarySignUpBonus->getBonusToken());
  938.                    $primaryUserBonus->setReferral($referral);
  939.                    $em->persist($primaryUserBonus);
  940.                    $em->flush();
  941.                    $notification = new NotificationEntity();
  942.                    $notification->setType('Level 1 Referral');
  943.                    $notification->setMessage('You have a new Level 1 Referral');
  944.                    $notification->setUser($referral->getReferrer());
  945.                    $em->persist($notification);
  946.                    $em->flush();
  947.                 //   $msg = $this->renderView('Email/referral.html.twig');
  948.                  //  $this->get('fullMoon.mailService')->sendMail('You have a new referral at LTCB', $msg, $referral->getReferrer()->getEmail());
  949.                }
  950.                $referralReferrent $referral->getReferrer();
  951.                $secondaryReferral $referralReferrent->getReferral();
  952.                if($secondaryReferral){
  953.                    $secondarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SR'));
  954.                    if($secondarySignUpBonus){
  955.                        $secondaryUserSignUpBonus = new UserBonusTokenEntity();
  956.                        $secondaryUserSignUpBonus->setUser($secondaryReferral->getReferrer());
  957.                        $secondaryUserSignUpBonus->setBonus($secondarySignUpBonus);
  958.                        $secondaryUserSignUpBonus->setAmount($secondarySignUpBonus->getBonusToken());
  959.                        $secondaryUserSignUpBonus->setReferral($referral);
  960.                        $secondaryUserSignUpBonus->setSecondaryReferral($secondaryReferral);
  961.                        $em->persist($secondaryUserSignUpBonus);
  962.                        $em->flush();
  963.                       $notification = new NotificationEntity();
  964.                       $notification->setType('Level 2 Referral');
  965.                       $notification->setMessage('You have a new Level 2 Referral');
  966.                       $notification->setUser($secondaryReferral->getReferrer());
  967.                       $em->persist($notification);
  968.                       $em->flush();
  969.                      //  $msg = $this->renderView('Email/referral.html.twig');
  970.                       // $this->get('fullMoon.mailService')->sendMail('You have a new referral at ', $msg, $secondaryReferral->getReferrer()->getEmail());
  971.                    }
  972.                   $secondaryReferrent $secondaryReferral->getReferrer();
  973.                   $thirdLevelReferral $secondaryReferrent->getReferral();
  974.                   if($thirdLevelReferral){
  975.                        $bonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'TR'));
  976.                        if($bonus){
  977.                            $thirdLevelRefBonus = new UserBonusTokenEntity();
  978.                            $thirdLevelRefBonus->setUser($thirdLevelReferral->getReferrer());
  979.                            $thirdLevelRefBonus->setBonus($bonus);
  980.                            $thirdLevelRefBonus->setAmount($bonus->getBonusToken());
  981.                            $thirdLevelRefBonus->setReferral($referral);
  982.                            $thirdLevelRefBonus->setSecondaryReferral($secondaryReferral);
  983.                            $thirdLevelRefBonus->setThirdReferral($thirdLevelReferral);
  984.                            $em->persist($thirdLevelRefBonus);
  985.                            $em->flush();
  986.                            $notification = new NotificationEntity();
  987.                            $notification->setType('Level 3 Referral');
  988.                            $notification->setMessage('You have a new Level 3 Referral');
  989.                            $notification->setUser($thirdLevelReferral->getReferrer());
  990.                            $em->persist($notification);
  991.                            $em->flush();
  992.                           // $msg = $this->renderView('Email/referral.html.twig');
  993.                            //$this->get('fullMoon.mailService')->sendMail('You have a new referral', $msg, $thirdLevelReferral->getReferrer()->getEmail());
  994.                        }
  995.                    }
  996.                }
  997.             }
  998.           $this->get('session')->clear();
  999.             $em->flush();
  1000.     }
  1001.     
  1002.     private function generateCardNo($length 12) {
  1003.        
  1004.         $characters '0123456789';
  1005.         $charactersLength strlen($characters);
  1006.         $randomString '5163';
  1007.         $em $this->getDoctrine()->getManager();
  1008.         for ($i 0$i $length$i++) {
  1009.             $randomString .= $characters[rand(0$charactersLength 1)];
  1010.         }
  1011.         $orderTokenAddressExists $em->getRepository(UserEntity::class)->findOneBy(array('cardNo' => $randomString));
  1012.         if($orderTokenAddressExists){
  1013.             $this->generateRandomString();
  1014.         }
  1015.         return $randomString;
  1016.     }
  1017.    #[Route("/sendmail"name:"home_sendmail")]
  1018.     public function sendMail($user$email$subject){
  1019.          $mail = new PHPMailer(true);
  1020.         //Server settings
  1021.         $mail->SMTPDebug false;                  //Enable verbose debug output
  1022.         $mail->isSMTP();                                            //Send using SMTP
  1023.          $mail->Host       'xrpverse.app';          //Set the SMTP server to send through
  1024.         $mail->SMTPAuth   true;                                   //Enable SMTP authentication
  1025.         $mail->Username   '[email protected]';                  //SMTP username
  1026.         $mail->Password   'Wakeke123!';   
  1027.         $mail->SMTPSecure 'ssl';                              //Enable implicit TLS encryption
  1028.         $mail->Port       465;   
  1029.         //Recipients
  1030.         $mail->setFrom('[email protected]');
  1031.         $mail->addAddress($user->getEmail());
  1032.         //Content
  1033.         $mail->isHTML(true);                                  //Set email format to HTML
  1034.         $mail->Subject $subject;
  1035.         $mail->Body    $email;
  1036.         $mail->send();
  1037.     }
  1038.      private function sendSupportMail($email$subject){
  1039.          $mail = new PHPMailer(true);
  1040.        //Server settings
  1041.         $mail->SMTPDebug false;                  //Enable verbose debug output
  1042.         $mail->isSMTP();                                            //Send using SMTP
  1043.         $mail->Host       'mail.aipayplatform.com';          //Set the SMTP server to send through
  1044.         $mail->SMTPAuth   true;                                   //Enable SMTP authentication
  1045.         $mail->Username   '[email protected]';                  //SMTP username
  1046.         $mail->Password   'Wakeke123!!';   
  1047.         $mail->SMTPSecure 'ssl';                              //Enable implicit TLS encryption
  1048.         $mail->Port       465;   
  1049.         //Recipients
  1050.         $mail->setFrom('[email protected]');
  1051.         $mail->addAddress('[email protected]');
  1052.         //Content
  1053.         $mail->isHTML(true);                                  //Set email format to HTML
  1054.         $mail->Subject $subject;
  1055.         $mail->Body    $email;
  1056.         $mail->send();
  1057.     }
  1058. }