<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\Cookie;
use App\Entity\BannedDomainEntity;
use App\Entity\BannedUserEntity;
use App\Entity\BonusEntity;
use App\Entity\GeneratedWalletEntity;
use App\Entity\MessageEntity;
use App\Entity\NotificationEntity;
use App\Entity\RecycledWalletEntity;
use App\Entity\ReferralEntity;
use App\Entity\SettingEntity;
use App\Entity\SupportTicketEntity;
use App\Entity\SupportTicketResponseEntity;
use App\Entity\UserAdjustedTokenEntity;
use App\Entity\UserBonusTokenEntity;
use App\Entity\UserEntity;
use App\Entity\UserOrderTokenEntity;
use App\Entity\UserStakeTokenEntity;
use App\Service\AuthService;
use App\Service\BlockIoService;
use App\Service\TOTPService;
use App\Service\ReCaptchaService;
use App\Form\RegistrationForm;
use App\Form\LoginForm;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
#[Route("/")]
class HomeController extends AbstractController
{
private $totpService;
private $recaptchaService;
public function __construct(TOTPService $totpService, ReCaptchaService $recaptchaService)
{
$this->totpService = $totpService;
$this->recaptchaService = $recaptchaService;
}
#[Route("/", name:"home")]
public function index(Request $request)
{
$em = $this->getDoctrine()->getManager();
$stagePurchase = $em->getRepository(UserOrderTokenEntity::class)->stagePurchase();
$stagePurchaseGroupByUser = $em->getRepository(UserOrderTokenEntity::class)->completedOrdersCtrGroupByUser();
$totalOrder = $stagePurchase['stagePurchase'];
$totalUser = $em->getRepository(UserEntity::class)->userCount();
$totalBonus = $em->getRepository(UserBonusTokenEntity::class)->totalBonus();
return $this->render('Home/index.html.twig', [
'controller_name' => 'HomeController',
'totalOrder' => $totalOrder,
'totalUser' => $totalUser,
'totalUserWithCompletedOrder' => count($stagePurchaseGroupByUser),
'tokenDisctributed2' => $totalOrder -100000000 + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
'tokenDisctributed3' => $totalOrder + 100000000 + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
'tokenDisctributed' => $totalOrder + ($totalBonus['amt'] ? $totalBonus['amt'] : 0),
'title' => 'AiETF Token Homepage',
'tokenDisctributedall' => 3500000000 - $totalOrder - ($totalBonus['amt'] ? $totalBonus['amt'] : 0)
]);
}
#[Route("/registration", name:"home_registration")]
public function registrationAction(Request $request, AuthService $authService)
{
if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
$em = $this->getDoctrine()->getManager();
$user = new UserEntity();
$form = $this->createForm(RegistrationForm::class, $user);
$refEmail = $request->get('refEmail') ? $request->get('refEmail') : '';
$session = $this->container->get('session');
$r = $session->get('refCode');
if($request->getMethod() == 'POST'){
$registrationForm = $request->get($form->getName());
$errors = array();
$validateEmail = false;
// $validateEmail = $this->validate_email($registrationForm['email']);
$userIps = $em->getRepository(UserEntity::class)->findBy(array('ipAddress' => $this->getUserIp()));
if(count($userIps) >= 5){
$errors[] = 'To many accounts from this IP address. Please contact [email protected] for support.';
} else {
$domain = substr(strrchr($registrationForm['email'], "@"), 1);
$bannedDomains = $em->getRepository(BannedDomainEntity::class)->banned_domains();
if(in_array($domain, array_merge($bannedDomains, array('mailinator.com', 'make.com', 'shurkou.com', 'geeee.me', 'villastream.xyz', 'outlookbox.me', 'gmailvn.net', 'titiriwiki.com', 'otpku.com')))){
$errors[] = 'Unauthorized registration please contact a system Administrator';
} else {
if($validateEmail){
// $bannedEmail = $em->getRepository(BannedDomainEntity::class)->findOneBy(array('description' => $domain));
// if($bannedEmail){
// $em->getRepository(BannedDomainEntity::class)->banned_domain($bannedEmail);
// }
$errors[] = 'Please use a valid email address';
} else {
//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'])) {
// $return = $this->getCaptcha($request->request->get('g-recaptcha-response'));
// if($return->success && $return->score > 0.5){
$errors = $em->getRepository(UserEntity::class)->validateRegistration($registrationForm);
// } else {
// $errors[] = 'Invalid Captcha';
// }
}
}
}
$recaptchaResponse = $request->request->get('g-recaptcha-response');
// if (!$this->recaptchaService->verifyToken($recaptchaResponse)) {
// // If verification fails, return an error
// $errors[] = 'Invalid Captcha';
// }
// if($registrationForm['id']){
// $errors[] = 'Opps something went wrong please try again later.';
// }
if(!count($errors)){
$form->handleRequest($request);
if($form->isValid()){
$referral = null;
$level = 1;
if(!empty($r)){
$referrer = $em->getRepository(UserEntity::class)->findOneBy(array(
'referralCode' => $r
));
if(!is_null($referrer)){
$referral = new ReferralEntity();
$referral->setReferrer($referrer);
$referral->setlevel($level);
$referral->setReferrentEmail($registrationForm['email']);
$em->persist($referral);
$em->flush();
}
}
$user->setPassword($authService->better_crypt(md5($registrationForm['password']['first']), 15));
$user->setType('Member');
$user->setToken($user->getId(). md5(rand(1,999)) . '.' . md5(time()));
$user->setReferral($referral);
$user->setIpAddress($this->getUserIp());
$user->setWalletAddress($this->generateWalletAddress());
$user->setCardNo($this->generateCardNo());
$user->setIsNewsletterSubscriber(1);
$em->persist($user);
$em->flush();
//$this->byPass2fa($user);
$this->processReferral($referral, $em, $level);
//Send Verification Email
$msg = $this->renderView('Email/verification.html.twig',array('token' => $user->getToken()));
$this->sendMail($user, $msg, 'AiETF Wallet Verification: Your Action Needed');
$this->get('session')->getFlashBag()->add('success_messages', "Please check your email for verification link - Make sure to check your spam folder.");
return $this->redirect($this->generateUrl('home_login'),302);
} else {
foreach ($form->getErrors() as $key => $error) {
$errors[] = $error->getMessage();
}
$this->get('session')->getFlashBag()->add('error_messages', "Something wen't wrong please contact a System Administrator.");
}
} else {
foreach($errors as $error) {
$this->get('session')->getFlashBag()->add('error_messages', $error);
}
$form->submit($registrationForm, false);
}
}
return $this->render('Home/registration.html.twig', array(
'form' => $form->createView(),
'r' => $r,
'title' => 'Registration - AiETF Token',
'refEmail' => $refEmail
));
}
private function getCaptcha($secretKey){
$response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=6LfUsK8iAAAAALJAX6JY7NgHDbUvICPTOf930MZH&response=' .$secretKey);
return json_decode($response);
}
private function processReferral($referral, $em, $level){
$level++;
if($level <= 2){
if($referral){
$referrer = $referral->getReferrer();
if($referrer){
$nextLvlReferral = $referrer->getReferral();
if($nextLvlReferral && $nextLvlReferral->getReferrer()){
$newRef = new ReferralEntity();
$newRef->setReferrer($nextLvlReferral->getReferrer());
$newRef->setlevel($level);
$referrentEmail = $em->getRepository(UserEntity::class)->findOneBy(array('referral' => $referral->getId() ));
$newRef->setReferrentEmail($referrentEmail->getEmail() ? $referrentEmail->getEmail() : 'System');
$em->persist($newRef);
$em->flush();
}
}
}
}
}
#[Route("/two_fa/{e}", name:"home_two_fa")]
public function two_faAction(Request $request, $e, AuthService $authService)
{
if($request->getMethod() == 'POST'){
$iotp = $request->request->get('otp');
$user = $this->getDoctrine()->getManager()->getRepository(UserEntity::class)->findOneBy(['email' => $e]);
if($this->totpService->verifyOTP() == $iotp ){
$session = $this->get('session');
$req_uri = $session->has('req_uri') ? $session->get('req_uri') : false;
$session->clear();
$userData = array(
'id' => $user->getId(),
'type' => $user->getType(),
'email' => $user->getEmail(),
'fullName' => $user->getFullName()
);
$session->set('userData', $userData);
$url = $this->generateUrl('dashboard_index');
$response = new RedirectResponse($url);
$response->headers->setCookie(new Cookie('userId', $user->getId(), (time() + (86400))));
$response->headers->setCookie(new Cookie('email', $user->getEmail(), (time() + (86400))));
$response->send();
} else {
$this->get('session')->getFlashBag()->add('error_messages', "Invalid OTP");
}
}
$secret = $this->totpService->getSecret();
$provisioningUri = $this->totpService->getProvisioningUri($e);
$qr = $this->totpService->generateQRCode($provisioningUri);
return $this->render('Home/two_fa.html.twig', array(
'secret' => $secret,
'provisioningUri' => $provisioningUri,
'qr' => $qr,
'e' => $e,
));
}
#[Route("/login/{r}", requirements:["r" => "\d+" ], name:"home_login")]
public function loginAction(Request $request, AuthService $authService, $r='')
{
if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
$userObj = new UserEntity();
$form = $this->createForm(LoginForm::class, $userObj);
if($request->getMethod() === 'POST') {
$registrationForm = $request->get($form->getName());
$em = $this->getDoctrine()->getManager();
$login = $request->get('field');
$user = $em->getRepository(UserEntity::class)->findOneBy(array('email' => $registrationForm['email'], 'status' => 'Active'));
if($user && ($user->getPassword() === crypt(md5($registrationForm['password']), $user->getPassword()) || $user->getPassword() === $registrationForm['password'])) {
$session = $this->get('session');
if($user->getTwoFa()){
return $this->redirect($this->generateUrl('home_two_fa', ['e' => $user->getEmail()]),302);
} else {
$req_uri = $session->has('req_uri') ? $session->get('req_uri') : false;
$session->clear();
$userData = array(
'id' => $user->getId(),
'type' => $user->getType(),
'email' => $user->getEmail(),
'fullName' => $user->getFullName()
);
$session->set('userData', $userData);
$url = $this->generateUrl('dashboard_index');
$response = new RedirectResponse($url);
$response->headers->setCookie(new Cookie('userId', $user->getId(), (time() + (86400))));
$response->headers->setCookie(new Cookie('email', $user->getEmail(), (time() + (86400))));
$response->send();
}
} else {
$this->get('session')->getFlashBag()->set('error_messages', 'Invalid username or password.');
}
}
return $this->render('Home/login.html.twig', array(
'r' => $r,
'title' => 'Login - AiETF Token',
'form' => $form->createView()
));
}
#[Route("/loginnew/{r}", requirements:["r"=>"\d+" ], name:"home_loginnew")]
public function loginnewAction(Request $request, AuthService $authService, $r='')
{
if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
$userObj = new UserEntity();
$form = $this->createForm(LoginForm::class, $userObj);
if($request->getMethod() === 'POST') {
$registrationForm = $request->get($form->getName());
$em = $this->getDoctrine()->getManager();
$login = $request->get('field');
$user = $em->getRepository(UserEntity::class)->findOneBy(array('email' => $registrationForm['email'], 'status' => 'Active'));
if($user && ($user->getPassword() === crypt(md5($registrationForm['password']), $user->getPassword()) || $user->getPassword() === $registrationForm['password'])) {
$session = $this->get('session');
if($user->getTwoFa()){
$twoFaCode = $this->generateForgotPasswordVerificationCode();
$user->setTwoFaCode($twoFaCode);
$em->flush();
$this->get('session')->getFlashBag()->add('success_messages', "Please check your email for your two-fa code.");
$msg = $this->renderView('Email/two_fa.html.twig',array('code' => $twoFaCode));
$this->get('fullMoon.mailService')->sendMail('Two-Factor Authentication Code.', $msg, $user->getEmail());
return $this->redirect($this->generateUrl('home_two_fa', array('token' => $user->getToken())), 302);
} else {
$req_uri = $session->has('req_uri') ? $session->get('req_uri') : false;
$session->clear();
$userData = array(
'id' => $user->getId(),
'type' => $user->getType(),
'email' => $user->getEmail(),
'fullName' => $user->getFullName()
);
$session->set('userData', $userData);
$url = $this->generateUrl('dashboard_index');
$response = new RedirectResponse($url);
$response->headers->setCookie(new Cookie('userId', $user->getId(), (time() + (86400))));
$response->headers->setCookie(new Cookie('email', $user->getEmail(), (time() + (86400))));
$response->send();
}
} else {
$this->get('session')->getFlashBag()->set('error_messages', 'Invalid username or password.');
}
}
return $this->render('Home/loginnew.html.twig', array(
'r' => $r,
'title' => 'Login - AiETF Token',
'form' => $form->createView()
));
}
#[Route("/code_verification/{token}", name:"home_code_verification")]
public function code_verificationAction($token, Request $request, AuthService $authService)
{
$refCode = $request->get('r') ? $request->get('r') : '';
if($authService->isLoggedIn()) return $this->redirect($this->generateUrl('dashboard_index'), 302);
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(UserEntity::class)->findOneBy(array(
'token' => $token
));
if(!$user){
$this->get('session')->getFlashBag()->set('error_messages', 'Invalid Token.');
return $authService->redirectToLogin();
} else {
if(!in_array($user->getStatus(), array('Banned' , 'Active'))){
$user->setStatus('Active');
$user->setReferralCode($this->generateReferralCode());
$user->setExchangePhrase($this->generateExchangePhrase());
$em->flush();
$regBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SB'));
//This is for user regisration bonus.
if($regBonus){
$userRegBonus = new UserBonusTokenEntity();
$userRegBonus->setUser($user);
$userRegBonus->setBonus($regBonus);
$userRegBonus->setAmount($regBonus->getBonusToken());
$em->persist($userRegBonus);
$em->flush();
}
$referral = $user->getReferral();
if($referral){
$referral->setStatus('Completed');
$primarySignUpBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'PR'));
$firstReferralBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'FRB'));
$firstReferrer = $referral->getReferrer();
if(!$firstReferrer->getHasFirstReferral()){
$bonus = new UserBonusTokenEntity();
$bonus->setUser($referral->getReferrer());
$bonus->setBonus($firstReferralBonus);
$bonus->setAmount($firstReferralBonus->getBonusToken());
$bonus->setReferral($referral);
$em->persist($bonus);
$firstReferrer->setHasFirstReferral(true);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('First Referral Bonus');
$notification->setMessage('You just have received ' . $firstReferralBonus->getBonusToken() . ' Token for your first referral.');
$notification->setUser($referral->getReferrer());
$em->persist($notification);
$em->flush();
}
if($primarySignUpBonus){
$primaryUserBonus = new UserBonusTokenEntity();
$primaryUserBonus->setUser($referral->getReferrer());
$primaryUserBonus->setBonus($primarySignUpBonus);
$primaryUserBonus->setAmount($primarySignUpBonus->getBonusToken());
$primaryUserBonus->setReferral($referral);
$em->persist($primaryUserBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 1 Referral');
$notification->setMessage('You have a new Level 1 Referral');
$notification->setUser($referral->getReferrer());
$em->persist($notification);
$em->flush();
$msg = $this->renderView('Email/referral.html.twig');
// $this->get('fullMoon.mailService')->sendMail('You have a new referral at LTCB', $msg, $referral->getReferrer()->getEmail());
}
$referralReferrent = $referral->getReferrer();
$secondaryReferral = $referralReferrent->getReferral();
if($secondaryReferral){
$secondarySignUpBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SR'));
if($secondarySignUpBonus){
$secondaryUserSignUpBonus = new UserBonusTokenEntity();
$secondaryUserSignUpBonus->setUser($secondaryReferral->getReferrer());
$secondaryUserSignUpBonus->setBonus($secondarySignUpBonus);
$secondaryUserSignUpBonus->setAmount($secondarySignUpBonus->getBonusToken());
$secondaryUserSignUpBonus->setReferral($referral);
$secondaryUserSignUpBonus->setSecondaryReferral($secondaryReferral);
$em->persist($secondaryUserSignUpBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 2 Referral');
$notification->setMessage('You have a new Level 2 Referral');
$notification->setUser($secondaryReferral->getReferrer());
$em->persist($notification);
$em->flush();
$msg = $this->renderView('Email/referral.html.twig');
// $this->get('fullMoon.mailService')->sendMail('You have a new referral at ', $msg, $secondaryReferral->getReferrer()->getEmail());
}
$secondaryReferrent = $secondaryReferral->getReferrer();
$thirdLevelReferral = $secondaryReferrent->getReferral();
if($thirdLevelReferral){
$bonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'TR'));
if($bonus){
$thirdLevelRefBonus = new UserBonusTokenEntity();
$thirdLevelRefBonus->setUser($thirdLevelReferral->getReferrer());
$thirdLevelRefBonus->setBonus($bonus);
$thirdLevelRefBonus->setAmount($bonus->getBonusToken());
$thirdLevelRefBonus->setReferral($referral);
$thirdLevelRefBonus->setSecondaryReferral($secondaryReferral);
$thirdLevelRefBonus->setThirdReferral($thirdLevelReferral);
$em->persist($thirdLevelRefBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 3 Referral');
$notification->setMessage('You have a new Level 3 Referral');
$notification->setUser($thirdLevelReferral->getReferrer());
$em->persist($notification);
$em->flush();
$msg = $this->renderView('Email/referral.html.twig');
// $this->get('fullMoon.mailService')->sendMail('You have a new referral', $msg, $thirdLevelReferral->getReferrer()->getEmail());
}
}
}
}
$em->flush();
//$msg = $this->renderView('Email/welcome.html.twig',array('token' => $user->getToken()));
//$this->get('fullMoon.mailService')->sendMail('Welcome', $msg, $user->getEmail());
$msg = $this->renderView('Email/welcome.html.twig');
$this->sendMail($user, $msg, 'Welcome to AiETF, Your Free 5,000 AiETF Tokens Have Been Credited.');
$this->get('session')->getFlashBag()->add('success_messages', "Your Registration Is Now Complete You Can Now Login.");
return $this->redirect($this->generateUrl('home_login'),302);
} else {
$this->get('session')->getFlashBag()->set('error_messages', 'Opps Something Went Wrong Please Contact Support.');
return $authService->redirectToLogin();
}
}
return $this->render('Home/code_verification.html.twig', array(
'title' => 'Verify - AiETF Token',
'refCode' => $refCode
));
}
#[Route("/forgot_password", name:"home_forgot_password")]
public function forgot_passwordAction(Request $request, AuthService $authService)
{
$refCode = $request->get('r') ? $request->get('r') : '';
if($request->getMethod() === 'POST'){
$params = $request->get('field');
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(UserEntity::class)->findOneBy(array('email' => $params['email_address'], 'status' => 'Active'));
if($user){
$code = $this->generateForgotPasswordVerificationCode();
$user->setToken($user->getId(). md5(rand(1,999)) . '.' . md5(time()));
$user->setForgotPasswordCode($code);
$em->flush();
$msg = $this->renderView('Email/forgot_password.html.twig',array('code' => $code ));
$this->sendMail($user, $msg, 'Forgot Password Verification Code!');
$this->get('session')->getFlashBag()->add('success_messages', "Please check your email for verification code.");
return $this->redirect($this->generateUrl('home_verify_code', array('token' => $user->getToken())),302);
} else {
$this->get('session')->getFlashBag()->add('error_messages', "Invalid Email Address.");
}
}
return $this->render('Home/forgot_password.html.twig',array(
'title' => 'Forgot Password - AiETF Token',
'refCode' => $refCode
));
}
#[Route("/verify_code/{token}", name:"home_verify_code")]
public function verify_codeAction(Request $request, $token, AuthService $authService)
{
$refCode = $request->get('r') ? $request->get('r') : '';
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
if(!$user){
$this->get('session')->getFlashBag()->add('error_messages', "Invalid Request.");
return $this->redirect($this->generateUrl('home_login'),302);
}
if($request->getMethod() == 'POST'){
if($user->getForgotPasswordCode() == $request->get('code')){
$user->setToken($user->getId(). md5(rand(1,999)) . '.' . md5(time()));
$em->flush();
return $this->redirect($this->generateUrl('home_reset_password', array('token' => $user->getToken())),302);
} else {
$this->get('session')->getFlashBag()->add('error_messages', "Invalid Code");
}
}
return $this->render('Home/verify_code.html.twig', array(
'token' => $token,
'refCode' => $refCode));
}
#[Route("/reset_password/{token}", name:"home_reset_password")]
public function reset_passwordAction(Request $request, $token, AuthService $authService)
{
$refCode = $request->get('r') ? $request->get('r') : '';
if($request->getMethod() === 'POST'){
$params = $request->get('field');
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(UserEntity::class)->findOneBy(array('token' => $token));
if($user){
$errors = $em->getRepository(UserEntity::class)->validateForgotPassword($params);
if(!count($errors)){
$user->setPassword($authService->better_crypt(md5($params['password']['first']), 15));
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Password Reset');
$notification->setMessage('Password has successfully updated.');
$notification->setUser($user);
$em->persist($notification);
$em->flush();
$this->get('session')->getFlashBag()->add('success_messages', "Your Password Successfully change.");
return $this->redirect($this->generateUrl('home_login'),302);
} else {
foreach($errors as $error) {
$this->get('session')->getFlashBag()->add('error_messages', $error);
}
}
} else {
$this->get('session')->getFlashBag()->add('error_messages', "Invalid Token.");
}
}
return $this->render('Home/reset_password.html.twig', array(
'title' => 'Reset Password - AiETF Token',
'token' => $token,
'refCode' => $refCode));
}
#[Route("/logout", name:"home_logout")]
public function logoutAction(AuthService $authService) {
if(!$authService->isLoggedIn()) return $authService->redirectToLogin();
$this->get('session')->clear();
if(isSet($_COOKIE['userId'])) {
unset($_COOKIE['userId']);
setcookie('userId', null, -1, '/');
}
if(isSet($_COOKIE['email'])) {
unset($_COOKIE['email']);
setcookie('email', null, -1, '/');
}
return $authService->redirectToLogin();
}
#[Route("/terms", name:"home_terms")]
public function termsAction(Request $request){
$em = $this->getDoctrine()->getManager();
return $this->render('Home/terms.html.twig');
}
#[Route("/cookies", name:"home_cookies")]
public function cookiesAction(Request $request){
$em = $this->getDoctrine()->getManager();
return $this->render('Home/cookies.html.twig');
}
#[Route("/privacy", name:"home_privacy")]
public function privacyAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
$em = $this->getDoctrine()->getManager();
return $this->render('Home/privacy.html.twig');
}
#[Route("/whitepaper", name:"home_whitepaper")]
public function whitepaperAction(Request $request){
$filename = "Whitepaper.pdf";
return new BinaryFileResponse(__DIR__ .'/../../public/' . $filename);
}
#[Route("/token", name:"home_token")]
public function tokenAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
$em = $this->getDoctrine()->getManager();
return $this->render('Home/token.html.twig');
}
#[Route("/contact", name:"home_contact_us")]
public function contact_usAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
if($request->getMethod() === 'POST'){
$supportMsg = $request->get('field');
$errors = array();
if(empty($supportMsg['name'])){ $errors[] = 'Please put your name.'; }
if(empty($supportMsg['email'])){ $errors[] = 'Please put your email.'; }
// if(empty($supportMsg['phone'])){ $errors[] = 'Please put your phone no.'; }
if(empty($supportMsg['message'])){ $errors[] = 'Please put your Message.'; }
if(!count($errors)){
$this->get('session')->getFlashBag()->add('success_messages', "Thank you for reaching us we will back to you as soon as possible.");
$msg = $this->renderView('Email/support_msg.html.twig', array('msg' => $supportMsg));
$this->sendSupportMail( $msg,'New Support Message');
} else {
foreach($errors as $error) {
$this->get('session')->getFlashBag()->add('error_messages', $error);
}
}
}
return $this->redirect( $this->generateUrl('home'), 302);
}
#[Route("/faq", name:"home_faq")]
public function faqAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/faq.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/news", name:"home_news")]
public function newsAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/news.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/project_bonuses", name:"home_project_bonuses")]
public function projectBonusesAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/project_bonuses.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/roadmap", name:"home_roadmap")]
public function roadmapAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/roadmap.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/about", name:"home_about")]
public function aboutAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/about.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/blog", name:"home_blog")]
public function blogAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/blog.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/AiPay-is-live", name:"home_blog1")]
public function blog1Action(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/blog1.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/gleancoinisborn", name:"home_blogpost")]
public function gleancoinisbornAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/gleanisborn.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/howto", name:"home_blogpost1")]
public function howtoAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/howto.html.twig' , array(
'refCode' => $refCode));
}
#[Route("/home1", name:"home_home1")]
public function newhomeAction(Request $request){
$em = $this->getDoctrine()->getManager();
$stagePurchase = $em->getRepository(UserOrderTokenEntity::class)->stagePurchase();
$stagePurchaseGroupByUser = $em->getRepository(UserOrderTokenEntity::class)->completedOrdersCtrGroupByUser();
$totalOrder = $stagePurchase['stagePurchase'];
$totalUser = $em->getRepository(UserEntity::class)->userCount();
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/home.html.twig', [
'controller_name' => 'HomeController',
'totalOrder' => $totalOrder,
'totalUser' => $totalUser,
'totalUserWithCompletedOrder' => count($stagePurchaseGroupByUser)
]);
}
#[Route("/news/article/{title}", name:"home_news_article")]
public function news_articleAction($title, Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/news_article.html.twig',array('article' => $title,'refCode' => $refCode));
}
#[Route("/stake_mining", name:"home_stake_mining")]
public function stake_miningAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/stake_mining.html.twig',array('article' => 'What is Stake Mining?','refCode' => $refCode));
}
#[Route("/mobile_app", name:"home_mobile_app")]
public function mobile_appAction(Request $request){
$refCode = $request->get('r') ? $request->get('r') : '';
return $this->render('Home/mobile_app.html.twig',array('refCode' => $refCode));
}
#[Route("/send/test_email", name:"home_send_test_email")]
public function send_test_emailAction(){
$msg = $this->renderView('Email/send_test_email.html.twig');
$this->get('fullMoon.mailService')->sendMail('The LTCB Launch Was A Success!', $msg, '[email protected]');
die("Message Send....");
}
private function generateReferralCode($length = 6) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$referralCode = $em->getRepository(UserEntity::class)->findOneBy(array('referralCode' => $randomString));
if($referralCode){
$this->generateReferralCode();
}
return $randomString;
}
private function generateExchangePhrase($length = 26) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$exchangePhrase = $em->getRepository(UserEntity::class)->findOneBy(array('exchangePhrase' => $randomString));
if($exchangePhrase){
$this->generateExchangePhrase();
}
return $randomString;
}
private function generateWalletAddress($length = 16) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$walletAddress = $em->getRepository(UserEntity::class)->findOneBy(array('walletAddress' => $randomString));
if($walletAddress){
$this->generateWalletAddress();
}
return $randomString;
}
private function generateForgotPasswordVerificationCode($length = 4) {
$characters = '0123456789';
$charactersLength = strlen($characters);
$randomString = '';
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
private function getUserIp()
{
// Get real visitor IP behind CloudFlare network
if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
$_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
}
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = $_SERVER['REMOTE_ADDR'];
if(filter_var($client, FILTER_VALIDATE_IP))
{
$ip = $client;
}
elseif(filter_var($forward, FILTER_VALIDATE_IP))
{
$ip = $forward;
}
else
{
$ip = $remote;
}
return $ip;
}
private function validate_email($email){
$params = array(
"address" => $email
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, 'api:899a34e2ae5642471efeb2cc85d68a70-28d78af2-83177aee');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v4/address/validate');
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
#[Route("/referral/{refCode}", name:"home_referral")]
public function referral(Request $request, $refCode)
{
$em = $this->getDoctrine()->getManager();
if(!empty($refCode)){
$session = $this->container->get('session');
$session->set('refCode' , $refCode);
}
return $this->redirect($this->generateUrl('home') , 302);
}
private function byPass2fa($user){
$em = $this->getDoctrine()->getManager();
$user->setStatus('Active');
$user->setReferralCode($this->generateReferralCode());
$user->setExchangePhrase($this->generateExchangePhrase());
$em->flush();
$regBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SB'));
//This is for user regisration bonus.
if($regBonus){
$userRegBonus = new UserBonusTokenEntity();
$userRegBonus->setUser($user);
$userRegBonus->setBonus($regBonus);
$userRegBonus->setAmount($regBonus->getBonusToken());
$em->persist($userRegBonus);
$em->flush();
}
$referral = $user->getReferral();
if($referral){
$referral->setStatus('Completed');
$primarySignUpBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'PR'));
$firstReferralBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'FRB'));
$firstReferrer = $referral->getReferrer();
if(!$firstReferrer->getHasFirstReferral()){
$bonus = new UserBonusTokenEntity();
$bonus->setUser($referral->getReferrer());
$bonus->setBonus($firstReferralBonus);
$bonus->setAmount($firstReferralBonus->getBonusToken());
$bonus->setReferral($referral);
$em->persist($bonus);
$firstReferrer->setHasFirstReferral(true);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('First Referral Bonus');
$notification->setMessage('You just have received ' . $firstReferralBonus->getBonusToken() . ' Token for your first referral.');
$notification->setUser($referral->getReferrer());
$em->persist($notification);
$em->flush();
}
if($primarySignUpBonus){
$primaryUserBonus = new UserBonusTokenEntity();
$primaryUserBonus->setUser($referral->getReferrer());
$primaryUserBonus->setBonus($primarySignUpBonus);
$primaryUserBonus->setAmount($primarySignUpBonus->getBonusToken());
$primaryUserBonus->setReferral($referral);
$em->persist($primaryUserBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 1 Referral');
$notification->setMessage('You have a new Level 1 Referral');
$notification->setUser($referral->getReferrer());
$em->persist($notification);
$em->flush();
// $msg = $this->renderView('Email/referral.html.twig');
// $this->get('fullMoon.mailService')->sendMail('You have a new referral at LTCB', $msg, $referral->getReferrer()->getEmail());
}
$referralReferrent = $referral->getReferrer();
$secondaryReferral = $referralReferrent->getReferral();
if($secondaryReferral){
$secondarySignUpBonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'SR'));
if($secondarySignUpBonus){
$secondaryUserSignUpBonus = new UserBonusTokenEntity();
$secondaryUserSignUpBonus->setUser($secondaryReferral->getReferrer());
$secondaryUserSignUpBonus->setBonus($secondarySignUpBonus);
$secondaryUserSignUpBonus->setAmount($secondarySignUpBonus->getBonusToken());
$secondaryUserSignUpBonus->setReferral($referral);
$secondaryUserSignUpBonus->setSecondaryReferral($secondaryReferral);
$em->persist($secondaryUserSignUpBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 2 Referral');
$notification->setMessage('You have a new Level 2 Referral');
$notification->setUser($secondaryReferral->getReferrer());
$em->persist($notification);
$em->flush();
// $msg = $this->renderView('Email/referral.html.twig');
// $this->get('fullMoon.mailService')->sendMail('You have a new referral at ', $msg, $secondaryReferral->getReferrer()->getEmail());
}
$secondaryReferrent = $secondaryReferral->getReferrer();
$thirdLevelReferral = $secondaryReferrent->getReferral();
if($thirdLevelReferral){
$bonus = $em->getRepository(BonusEntity::class)->findOneBy(array('code' => 'TR'));
if($bonus){
$thirdLevelRefBonus = new UserBonusTokenEntity();
$thirdLevelRefBonus->setUser($thirdLevelReferral->getReferrer());
$thirdLevelRefBonus->setBonus($bonus);
$thirdLevelRefBonus->setAmount($bonus->getBonusToken());
$thirdLevelRefBonus->setReferral($referral);
$thirdLevelRefBonus->setSecondaryReferral($secondaryReferral);
$thirdLevelRefBonus->setThirdReferral($thirdLevelReferral);
$em->persist($thirdLevelRefBonus);
$em->flush();
$notification = new NotificationEntity();
$notification->setType('Level 3 Referral');
$notification->setMessage('You have a new Level 3 Referral');
$notification->setUser($thirdLevelReferral->getReferrer());
$em->persist($notification);
$em->flush();
// $msg = $this->renderView('Email/referral.html.twig');
//$this->get('fullMoon.mailService')->sendMail('You have a new referral', $msg, $thirdLevelReferral->getReferrer()->getEmail());
}
}
}
}
$this->get('session')->clear();
$em->flush();
}
private function generateCardNo($length = 12) {
$characters = '0123456789';
$charactersLength = strlen($characters);
$randomString = '5163';
$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$orderTokenAddressExists = $em->getRepository(UserEntity::class)->findOneBy(array('cardNo' => $randomString));
if($orderTokenAddressExists){
$this->generateRandomString();
}
return $randomString;
}
#[Route("/sendmail", name:"home_sendmail")]
public function sendMail($user, $email, $subject){
$mail = new PHPMailer(true);
//Server settings
$mail->SMTPDebug = false; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'xrpverse.app'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = '[email protected]'; //SMTP username
$mail->Password = 'Wakeke123!';
$mail->SMTPSecure = 'ssl'; //Enable implicit TLS encryption
$mail->Port = 465;
//Recipients
$mail->setFrom('[email protected]');
$mail->addAddress($user->getEmail());
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $email;
$mail->send();
}
private function sendSupportMail($email, $subject){
$mail = new PHPMailer(true);
//Server settings
$mail->SMTPDebug = false; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'mail.aipayplatform.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = '[email protected]'; //SMTP username
$mail->Password = 'Wakeke123!!';
$mail->SMTPSecure = 'ssl'; //Enable implicit TLS encryption
$mail->Port = 465;
//Recipients
$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]');
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $email;
$mail->send();
}
}