src/Controller/HomeController.php line 92

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[] = 'To many accounts from this IP address. Please contact [email protected] for support.';
  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 a system Administrator';
  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'AiETF Wallet Verification: Your Action Needed');
  165.                     $this->get('session')->getFlashBag()->add('success_messages'"Please check your email for verification link - Make sure to check your spam 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'"Something wen't wrong please contact a System Administrator.");
  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'"Invalid OTP");
  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'"Please check your email for your two-fa code.");
  335.                     $msg $this->renderView('Email/two_fa.html.twig',array('code' => $twoFaCode));
  336.                     $this->get('fullMoon.mailService')->sendMail('Two-Factor Authentication 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''Invalid username or password.');
  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 Token.');
  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'Welcome to AiETF, Your Free 5,000 AiETF Tokens Have Been Credited.');
  494.                     $this->get('session')->getFlashBag()->add('success_messages'"Your Registration Is Now Complete You Can Now Login.");
  495.                     return $this->redirect($this->generateUrl('home_login'),302);
  496.             } else {
  497.                 $this->get('session')->getFlashBag()->set('error_messages''Opps Something Went Wrong Please Contact 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.    #[Route("/forgot_password"name:"home_forgot_password")]
  508.     public function forgot_passwordAction(Request $requestAuthService $authService)
  509.     {
  510.       $refCode $request->get('r') ? $request->get('r') : '';
  511.         if($request->getMethod() === 'POST'){
  512.             $params $request->get('field');
  513.             $em $this->getDoctrine()->getManager();
  514.             $user $em->getRepository(UserEntity::class)->findOneBy(array('email' => $params['email_address'],  'status' => 'Active'));
  515.             if($user){
  516.                
  517.                 $code $this->generateForgotPasswordVerificationCode();
  518.                 $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  519.                 $user->setForgotPasswordCode($code);
  520.                 $em->flush();
  521.                 $msg $this->renderView('Email/forgot_password.html.twig',array('code' => $code ));
  522.                 $this->sendMail($user$msg'Forgot Password Verification Code!');
  523.                 $this->get('session')->getFlashBag()->add('success_messages'"Please check your email for verification code.");
  524.                 return $this->redirect($this->generateUrl('home_verify_code', array('token' => $user->getToken())),302);
  525.             }  else {
  526.                 $this->get('session')->getFlashBag()->add('error_messages'"Invalid Email Address.");
  527.             }
  528.         }
  529.         return $this->render('Home/forgot_password.html.twig',array(
  530.             'title' => 'Forgot Password - AiETF Token',
  531.             'refCode' => $refCode
  532.         ));
  533.     }
  534.    #[Route("/verify_code/{token}"name:"home_verify_code")]
  535.     public function verify_codeAction(Request $request$tokenAuthService $authService)
  536.     {
  537.       $refCode $request->get('r') ? $request->get('r') : '';
  538.                    $em $this->getDoctrine()->getManager();
  539.       $user $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
  540.       if(!$user){
  541.           $this->get('session')->getFlashBag()->add('error_messages'"Invalid Request.");
  542.           return $this->redirect($this->generateUrl('home_login'),302);
  543.       } 
  544.       if($request->getMethod() == 'POST'){
  545.         if($user->getForgotPasswordCode() == $request->get('code')){
  546.           $user->setToken($user->getId().  md5(rand(1,999)) . '.' md5(time()));
  547.           $em->flush();
  548.           return $this->redirect($this->generateUrl('home_reset_password', array('token' => $user->getToken())),302);
  549.         } else {
  550.           $this->get('session')->getFlashBag()->add('error_messages'"Invalid Code");
  551.         }
  552.       }       
  553.       return $this->render('Home/verify_code.html.twig', array(
  554.           'token' => $token,
  555.           'refCode' => $refCode));
  556.     }
  557.    #[Route("/reset_password/{token}"name:"home_reset_password")]
  558.     public function reset_passwordAction(Request $request$tokenAuthService $authService)
  559.     {
  560.         $refCode $request->get('r') ? $request->get('r') : '';
  561.         if($request->getMethod() === 'POST'){
  562.             $params $request->get('field');
  563.             $em $this->getDoctrine()->getManager();
  564.             $user $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
  565.             if($user){
  566.                 $errors $em->getRepository(UserEntity::class)->validateForgotPassword($params);
  567.                 
  568.                 if(!count($errors)){
  569.                     $user->setPassword($authService->better_crypt(md5($params['password']['first']), 15));
  570.                     $em->flush();
  571.                     $notification = new NotificationEntity();
  572.                     $notification->setType('Password Reset');
  573.                     $notification->setMessage('Password has successfully updated.');
  574.                     $notification->setUser($user);
  575.                     $em->persist($notification);
  576.                     $em->flush();
  577.                     $this->get('session')->getFlashBag()->add('success_messages'"Your Password Successfully change.");
  578.                     return $this->redirect($this->generateUrl('home_login'),302);
  579.                 } else {
  580.                     foreach($errors as $error) {
  581.                         $this->get('session')->getFlashBag()->add('error_messages'$error);
  582.                     }
  583.                 }
  584.             }  else {
  585.                 $this->get('session')->getFlashBag()->add('error_messages'"Invalid Token.");
  586.             }
  587.         }
  588.         return $this->render('Home/reset_password.html.twig', array(
  589.            'title' => 'Reset Password - AiETF Token',
  590.             'token' => $token,
  591.             'refCode' => $refCode));
  592.     }
  593.    #[Route("/logout"name:"home_logout")]
  594.     public function logoutAction(AuthService $authService) {
  595.         
  596.         if(!$authService->isLoggedIn()) return $authService->redirectToLogin();
  597.         $this->get('session')->clear();
  598.         if(isSet($_COOKIE['userId'])) {
  599.             unset($_COOKIE['userId']);
  600.             setcookie('userId'null, -1'/');
  601.         }
  602.         if(isSet($_COOKIE['email'])) {
  603.             unset($_COOKIE['email']);
  604.             setcookie('email'null, -1'/');
  605.         }
  606.         return $authService->redirectToLogin();
  607.     }
  608.    #[Route("/terms"name:"home_terms")]
  609.     public function termsAction(Request $request){
  610.        
  611.         $em $this->getDoctrine()->getManager();
  612.       
  613.       return $this->render('Home/terms.html.twig');
  614.     }
  615.     
  616.     
  617.    #[Route("/cookies"name:"home_cookies")]
  618.     public function cookiesAction(Request $request){
  619.        
  620.         $em $this->getDoctrine()->getManager();
  621.       
  622.       return $this->render('Home/cookies.html.twig');
  623.     }
  624.    #[Route("/privacy"name:"home_privacy")]
  625.     public function privacyAction(Request $request){
  626.         $refCode $request->get('r') ? $request->get('r') : '';
  627.         $em $this->getDoctrine()->getManager();
  628.       
  629.       return $this->render('Home/privacy.html.twig');
  630.     }
  631. #[Route("/whitepaper"name:"home_whitepaper")]
  632.      public function whitepaperAction(Request $request){
  633.         $filename "Whitepaper.pdf";
  634.         return new BinaryFileResponse(__DIR__  .'/../../public/' $filename);
  635.     }
  636.    #[Route("/token"name:"home_token")]
  637.     public function tokenAction(Request $request){
  638.       $refCode $request->get('r') ? $request->get('r') : '';
  639.         $em $this->getDoctrine()->getManager();
  640.       
  641.       return $this->render('Home/token.html.twig');
  642.     }
  643.     #[Route("/contact"name:"home_contact_us")]
  644.     public function contact_usAction(Request $request){
  645.       $refCode $request->get('r') ? $request->get('r') : '';
  646.       if($request->getMethod() === 'POST'){
  647.         $supportMsg  $request->get('field');
  648.         $errors = array();
  649.         if(empty($supportMsg['name'])){ $errors[] = 'Please put your name.'; }
  650.         if(empty($supportMsg['email'])){ $errors[] = 'Please put your email.'; }
  651.       //  if(empty($supportMsg['phone'])){ $errors[] = 'Please put your phone no.'; }
  652.         if(empty($supportMsg['message'])){ $errors[] = 'Please put your Message.'; }
  653.         if(!count($errors)){
  654.             $this->get('session')->getFlashBag()->add('success_messages'"Thank you for reaching us we will back to you as soon as possible.");
  655.             $msg $this->renderView('Email/support_msg.html.twig', array('msg' =>  $supportMsg));
  656.             
  657.             $this->sendSupportMail$msg,'New Support Message');
  658.         } else {
  659.            foreach($errors as $error) {
  660.                 $this->get('session')->getFlashBag()->add('error_messages'$error);
  661.             }
  662.         }
  663.       }
  664.        return $this->redirect$this->generateUrl('home'), 302);
  665.     }
  666.     #[Route("/faq"name:"home_faq")]
  667.     public function faqAction(Request $request){
  668.       $refCode $request->get('r') ? $request->get('r') : '';
  669.       return $this->render('Home/faq.html.twig' , array(
  670.             'refCode' => $refCode));
  671.     }
  672.     #[Route("/news"name:"home_news")]
  673.     public function newsAction(Request $request){
  674.       $refCode $request->get('r') ? $request->get('r') : '';
  675.       return $this->render('Home/news.html.twig' , array(
  676.             'refCode' => $refCode));
  677.     }
  678.    #[Route("/project_bonuses"name:"home_project_bonuses")]
  679.     public function projectBonusesAction(Request $request){
  680.       $refCode $request->get('r') ? $request->get('r') : '';
  681.       return $this->render('Home/project_bonuses.html.twig' , array(
  682.             'refCode' => $refCode));
  683.     }
  684.    #[Route("/roadmap"name:"home_roadmap")]
  685.     public function roadmapAction(Request $request){
  686.       $refCode $request->get('r') ? $request->get('r') : '';
  687.       return $this->render('Home/roadmap.html.twig' , array(
  688.             'refCode' => $refCode));
  689.     }
  690.    #[Route("/about"name:"home_about")]
  691.     public function aboutAction(Request $request){
  692.       $refCode $request->get('r') ? $request->get('r') : '';
  693.       return $this->render('Home/about.html.twig' , array(
  694.             'refCode' => $refCode));
  695.     }
  696.    #[Route("/blog"name:"home_blog")]
  697.     public function blogAction(Request $request){
  698.       $refCode $request->get('r') ? $request->get('r') : '';
  699.       return $this->render('Home/blog.html.twig' , array(
  700.             'refCode' => $refCode));
  701.     }
  702.    #[Route("/AiPay-is-live"name:"home_blog1")]
  703.     public function blog1Action(Request $request){
  704.       $refCode $request->get('r') ? $request->get('r') : '';
  705.       return $this->render('Home/blog1.html.twig' , array(
  706.             'refCode' => $refCode));
  707.     }
  708.    #[Route("/gleancoinisborn"name:"home_blogpost")]
  709.     public function gleancoinisbornAction(Request $request){
  710.       $refCode $request->get('r') ? $request->get('r') : '';
  711.       return $this->render('Home/gleanisborn.html.twig' , array(
  712.             'refCode' => $refCode));
  713.     }
  714.    #[Route("/howto"name:"home_blogpost1")]
  715.     public function howtoAction(Request $request){
  716.       $refCode $request->get('r') ? $request->get('r') : '';
  717.       return $this->render('Home/howto.html.twig' , array(
  718.             'refCode' => $refCode));
  719.     }
  720.    #[Route("/home1"name:"home_home1")]
  721.     public function newhomeAction(Request $request){
  722.         
  723.          $em $this->getDoctrine()->getManager();
  724.         $stagePurchase $em->getRepository(UserOrderTokenEntity::class)->stagePurchase();
  725.         $stagePurchaseGroupByUser $em->getRepository(UserOrderTokenEntity::class)->completedOrdersCtrGroupByUser();
  726.         $totalOrder  $stagePurchase['stagePurchase'];
  727.         $totalUser $em->getRepository(UserEntity::class)->userCount();  
  728.         
  729.       $refCode $request->get('r') ? $request->get('r') : '';
  730.       return $this->render('Home/home.html.twig', [
  731.             'controller_name' => 'HomeController',
  732.             'totalOrder' => $totalOrder,
  733.             'totalUser' => $totalUser,
  734.             'totalUserWithCompletedOrder' => count($stagePurchaseGroupByUser)
  735.         ]);
  736.     }
  737.     #[Route("/news/article/{title}"name:"home_news_article")]
  738.     public function news_articleAction($titleRequest $request){
  739.       $refCode $request->get('r') ? $request->get('r') : '';
  740.       return $this->render('Home/news_article.html.twig',array('article' => $title,'refCode' => $refCode));
  741.     }
  742.    #[Route("/stake_mining"name:"home_stake_mining")]
  743.     public function stake_miningAction(Request $request){
  744.         $refCode $request->get('r') ? $request->get('r') : '';
  745.       return $this->render('Home/stake_mining.html.twig',array('article' => 'What is Stake Mining?','refCode' => $refCode));
  746.     
  747.     }
  748.    #[Route("/mobile_app"name:"home_mobile_app")]
  749.     public function mobile_appAction(Request $request){
  750.         $refCode $request->get('r') ? $request->get('r') : '';
  751.       return $this->render('Home/mobile_app.html.twig',array('refCode' => $refCode));
  752.     
  753.     }
  754.     #[Route("/send/test_email"name:"home_send_test_email")]
  755.     public function send_test_emailAction(){
  756.        $msg $this->renderView('Email/send_test_email.html.twig');
  757.        $this->get('fullMoon.mailService')->sendMail('The LTCB Launch Was A Success!'$msg'[email protected]');
  758.       die("Message Send....");
  759.     }
  760.     private function generateReferralCode($length 6) {
  761.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  762.         $charactersLength strlen($characters);
  763.         $randomString '';
  764.         $em $this->getDoctrine()->getManager();
  765.         for ($i 0$i $length$i++) {
  766.             $randomString .= $characters[rand(0$charactersLength 1)];
  767.         }
  768.         $referralCode $em->getRepository(UserEntity::class)->findOneBy(array('referralCode' => $randomString));
  769.         if($referralCode){
  770.             $this->generateReferralCode();
  771.         }
  772.         return $randomString;
  773.     }
  774.     private function generateExchangePhrase($length 26) {
  775.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  776.         $charactersLength strlen($characters);
  777.         $randomString '';
  778.         $em $this->getDoctrine()->getManager();
  779.         for ($i 0$i $length$i++) {
  780.             $randomString .= $characters[rand(0$charactersLength 1)];
  781.         }
  782.         $exchangePhrase $em->getRepository(UserEntity::class)->findOneBy(array('exchangePhrase' => $randomString));
  783.         if($exchangePhrase){
  784.             $this->generateExchangePhrase();
  785.         }
  786.         return $randomString;
  787.     }
  788.     private function generateWalletAddress($length 16) {
  789.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  790.         $charactersLength strlen($characters);
  791.         $randomString '';
  792.         $em $this->getDoctrine()->getManager();
  793.         for ($i 0$i $length$i++) {
  794.             $randomString .= $characters[rand(0$charactersLength 1)];
  795.         }
  796.         $walletAddress $em->getRepository(UserEntity::class)->findOneBy(array('walletAddress' => $randomString));
  797.         if($walletAddress){
  798.             $this->generateWalletAddress();
  799.         }
  800.         return $randomString;
  801.     }
  802.     private function generateForgotPasswordVerificationCode($length 4) {
  803.         $characters '0123456789';
  804.         $charactersLength strlen($characters);
  805.         $randomString '';
  806.         $em $this->getDoctrine()->getManager();
  807.         for ($i 0$i $length$i++) {
  808.             $randomString .= $characters[rand(0$charactersLength 1)];
  809.         }
  810.         return $randomString;
  811.     }
  812.     private function getUserIp()
  813.     {
  814.         // Get real visitor IP behind CloudFlare network
  815.         if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  816.             $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  817.             $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  818.         }
  819.         $client  = @$_SERVER['HTTP_CLIENT_IP'];
  820.         $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
  821.         $remote  $_SERVER['REMOTE_ADDR'];
  822.         if(filter_var($clientFILTER_VALIDATE_IP))
  823.         {
  824.             $ip $client;
  825.         }
  826.         elseif(filter_var($forwardFILTER_VALIDATE_IP))
  827.         {
  828.             $ip $forward;
  829.         }
  830.         else
  831.         {
  832.             $ip $remote;
  833.         }
  834.         return $ip;
  835.     }
  836.     private function validate_email($email){
  837.         $params = array(
  838.           "address" => $email
  839.         );
  840.         $ch curl_init();
  841.         curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC);
  842.         curl_setopt($chCURLOPT_USERPWD'api:899a34e2ae5642471efeb2cc85d68a70-28d78af2-83177aee');
  843.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  844.         curl_setopt($chCURLOPT_CUSTOMREQUEST'GET');
  845.         curl_setopt($chCURLOPT_POSTFIELDS$params);
  846.         curl_setopt($chCURLOPT_URL'https://api.mailgun.net/v4/address/validate');
  847.         $result curl_exec($ch);
  848.         curl_close($ch);
  849.         return json_decode($resulttrue);
  850.     }
  851.        #[Route("/referral/{refCode}"name:"home_referral")]
  852.     public function referral(Request $request$refCode)
  853.     {
  854.         $em $this->getDoctrine()->getManager();
  855.         if(!empty($refCode)){
  856.             $session $this->container->get('session');
  857.             $session->set('refCode' $refCode);
  858.         }
  859.         return $this->redirect($this->generateUrl('home') , 302);
  860.     }
  861.     private function byPass2fa($user){
  862.         $em $this->getDoctrine()->getManager();
  863.         
  864.         $user->setStatus('Active');
  865.         $user->setReferralCode($this->generateReferralCode());
  866.         $user->setExchangePhrase($this->generateExchangePhrase());
  867.         $em->flush();
  868.         $regBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SB'));
  869.         //This is for user regisration bonus.
  870.         if($regBonus){
  871.                $userRegBonus = new UserBonusTokenEntity();
  872.                $userRegBonus->setUser($user);
  873.                $userRegBonus->setBonus($regBonus);
  874.                $userRegBonus->setAmount($regBonus->getBonusToken());
  875.                $em->persist($userRegBonus);
  876.                $em->flush();
  877.         }
  878.         $referral $user->getReferral();
  879.             if($referral){
  880.                $referral->setStatus('Completed');
  881.                $primarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'PR'));
  882.                $firstReferralBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'FRB'));
  883.                $firstReferrer $referral->getReferrer();
  884.               
  885.                if(!$firstReferrer->getHasFirstReferral()){
  886.                    $bonus = new UserBonusTokenEntity();
  887.                    $bonus->setUser($referral->getReferrer());
  888.                    $bonus->setBonus($firstReferralBonus);
  889.                    $bonus->setAmount($firstReferralBonus->getBonusToken());
  890.                    $bonus->setReferral($referral);
  891.                    $em->persist($bonus);
  892.                    $firstReferrer->setHasFirstReferral(true);
  893.                    $em->flush();
  894.                    $notification = new NotificationEntity();
  895.                    $notification->setType('First Referral Bonus');
  896.                    $notification->setMessage('You just have received ' $firstReferralBonus->getBonusToken() . ' Token for your first referral.');
  897.                    $notification->setUser($referral->getReferrer());
  898.                    $em->persist($notification);
  899.                    $em->flush();
  900.                }
  901.                if($primarySignUpBonus){
  902.                    $primaryUserBonus = new UserBonusTokenEntity();
  903.                    $primaryUserBonus->setUser($referral->getReferrer());
  904.                    $primaryUserBonus->setBonus($primarySignUpBonus);
  905.                    $primaryUserBonus->setAmount($primarySignUpBonus->getBonusToken());
  906.                    $primaryUserBonus->setReferral($referral);
  907.                    $em->persist($primaryUserBonus);
  908.                    $em->flush();
  909.                    $notification = new NotificationEntity();
  910.                    $notification->setType('Level 1 Referral');
  911.                    $notification->setMessage('You have a new Level 1 Referral');
  912.                    $notification->setUser($referral->getReferrer());
  913.                    $em->persist($notification);
  914.                    $em->flush();
  915.                 //   $msg = $this->renderView('Email/referral.html.twig');
  916.                  //  $this->get('fullMoon.mailService')->sendMail('You have a new referral at LTCB', $msg, $referral->getReferrer()->getEmail());
  917.                }
  918.                $referralReferrent $referral->getReferrer();
  919.                $secondaryReferral $referralReferrent->getReferral();
  920.                if($secondaryReferral){
  921.                    $secondarySignUpBonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SR'));
  922.                    if($secondarySignUpBonus){
  923.                        $secondaryUserSignUpBonus = new UserBonusTokenEntity();
  924.                        $secondaryUserSignUpBonus->setUser($secondaryReferral->getReferrer());
  925.                        $secondaryUserSignUpBonus->setBonus($secondarySignUpBonus);
  926.                        $secondaryUserSignUpBonus->setAmount($secondarySignUpBonus->getBonusToken());
  927.                        $secondaryUserSignUpBonus->setReferral($referral);
  928.                        $secondaryUserSignUpBonus->setSecondaryReferral($secondaryReferral);
  929.                        $em->persist($secondaryUserSignUpBonus);
  930.                        $em->flush();
  931.                       $notification = new NotificationEntity();
  932.                       $notification->setType('Level 2 Referral');
  933.                       $notification->setMessage('You have a new Level 2 Referral');
  934.                       $notification->setUser($secondaryReferral->getReferrer());
  935.                       $em->persist($notification);
  936.                       $em->flush();
  937.                      //  $msg = $this->renderView('Email/referral.html.twig');
  938.                       // $this->get('fullMoon.mailService')->sendMail('You have a new referral at ', $msg, $secondaryReferral->getReferrer()->getEmail());
  939.                    }
  940.                   $secondaryReferrent $secondaryReferral->getReferrer();
  941.                   $thirdLevelReferral $secondaryReferrent->getReferral();
  942.                   if($thirdLevelReferral){
  943.                        $bonus $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'TR'));
  944.                        if($bonus){
  945.                            $thirdLevelRefBonus = new UserBonusTokenEntity();
  946.                            $thirdLevelRefBonus->setUser($thirdLevelReferral->getReferrer());
  947.                            $thirdLevelRefBonus->setBonus($bonus);
  948.                            $thirdLevelRefBonus->setAmount($bonus->getBonusToken());
  949.                            $thirdLevelRefBonus->setReferral($referral);
  950.                            $thirdLevelRefBonus->setSecondaryReferral($secondaryReferral);
  951.                            $thirdLevelRefBonus->setThirdReferral($thirdLevelReferral);
  952.                            $em->persist($thirdLevelRefBonus);
  953.                            $em->flush();
  954.                            $notification = new NotificationEntity();
  955.                            $notification->setType('Level 3 Referral');
  956.                            $notification->setMessage('You have a new Level 3 Referral');
  957.                            $notification->setUser($thirdLevelReferral->getReferrer());
  958.                            $em->persist($notification);
  959.                            $em->flush();
  960.                           // $msg = $this->renderView('Email/referral.html.twig');
  961.                            //$this->get('fullMoon.mailService')->sendMail('You have a new referral', $msg, $thirdLevelReferral->getReferrer()->getEmail());
  962.                        }
  963.                    }
  964.                }
  965.             }
  966.           $this->get('session')->clear();
  967.             $em->flush();
  968.     }
  969.     
  970.     private function generateCardNo($length 12) {
  971.        
  972.         $characters '0123456789';
  973.         $charactersLength strlen($characters);
  974.         $randomString '5163';
  975.         $em $this->getDoctrine()->getManager();
  976.         for ($i 0$i $length$i++) {
  977.             $randomString .= $characters[rand(0$charactersLength 1)];
  978.         }
  979.         $orderTokenAddressExists $em->getRepository(UserEntity::class)->findOneBy(array('cardNo' => $randomString));
  980.         if($orderTokenAddressExists){
  981.             $this->generateRandomString();
  982.         }
  983.         return $randomString;
  984.     }
  985.    #[Route("/sendmail"name:"home_sendmail")]
  986.     public function sendMail($user$email$subject){
  987.          $mail = new PHPMailer(true);
  988.         //Server settings
  989.         $mail->SMTPDebug false;                  //Enable verbose debug output
  990.         $mail->isSMTP();                                            //Send using SMTP
  991.          $mail->Host       'xrpverse.app';          //Set the SMTP server to send through
  992.         $mail->SMTPAuth   true;                                   //Enable SMTP authentication
  993.         $mail->Username   '[email protected]';                  //SMTP username
  994.         $mail->Password   'Wakeke123!';   
  995.         $mail->SMTPSecure 'ssl';                              //Enable implicit TLS encryption
  996.         $mail->Port       465;   
  997.         //Recipients
  998.         $mail->setFrom('[email protected]');
  999.         $mail->addAddress($user->getEmail());
  1000.         //Content
  1001.         $mail->isHTML(true);                                  //Set email format to HTML
  1002.         $mail->Subject $subject;
  1003.         $mail->Body    $email;
  1004.         $mail->send();
  1005.     }
  1006.      private function sendSupportMail($email$subject){
  1007.          $mail = new PHPMailer(true);
  1008.        //Server settings
  1009.         $mail->SMTPDebug false;                  //Enable verbose debug output
  1010.         $mail->isSMTP();                                            //Send using SMTP
  1011.         $mail->Host       'mail.aipayplatform.com';          //Set the SMTP server to send through
  1012.         $mail->SMTPAuth   true;                                   //Enable SMTP authentication
  1013.         $mail->Username   '[email protected]';                  //SMTP username
  1014.         $mail->Password   'Wakeke123!!';   
  1015.         $mail->SMTPSecure 'ssl';                              //Enable implicit TLS encryption
  1016.         $mail->Port       465;   
  1017.         //Recipients
  1018.         $mail->setFrom('[email protected]');
  1019.         $mail->addAddress('[email protected]');
  1020.         //Content
  1021.         $mail->isHTML(true);                                  //Set email format to HTML
  1022.         $mail->Subject $subject;
  1023.         $mail->Body    $email;
  1024.         $mail->send();
  1025.     }
  1026. }