src/Controller/Frontend/DefaultController.php line 69

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\Config\FileLocator;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Detection\MobileDetect;
  10. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  11. use App\Entity\GameInfo;
  12. use App\Entity\Video;
  13. use App\Entity\InGameBanner;
  14. use App\Entity\InGamePrize;
  15. use App\Entity\Soccer;
  16. #[Route('/{language}/game', requirements: ['language' => 'zh_MO'], defaults: ['language' => 'zh_MO'])]
  17. class DefaultController extends AbstractController
  18. {
  19. private $em;
  20. private $params;
  21. public function __construct(ManagerRegistry $doctrine, ParameterBagInterface $params)
  22. {
  23. $this->em = $doctrine->getManager();
  24. $this->params = $params;
  25. }
  26. #[Route('/termscondition', name: 'game_activity_rule')]
  27. public function termsConditionAction(Request $request): Response
  28. {
  29. $gameInfo = $this->em->getRepository(GameInfo::class)->findOneBy([
  30. 'name' => $this->getParameter('info_name')
  31. ]);
  32. $tandc = null;
  33. $language = $request->getLocale();
  34. if ($gameInfo) {
  35. $tandc = ($language == 'zh_CN') ? $gameInfo->getTandcCN() : $gameInfo->getTandc();
  36. }
  37. return $this->render('frontend/default/rule.html.twig', [
  38. "tandc" => $tandc,
  39. 'language' => $language
  40. ]);
  41. }
  42. #[Route('/', name: 'game_pre_checkAgent')]
  43. public function checkAgentAction(Request $request)
  44. {
  45. $language = $request->getLocale();
  46. $detect = new MobileDetect;
  47. if (!$detect->isMobile() && !$detect->isTablet()) {
  48. return $this->render('frontend/iframe/index.html.twig', [
  49. 'language' => $language
  50. ]);
  51. }
  52. return $this->redirectToRoute('game_pre_index', ['language' => $language]);
  53. }
  54. #[Route('/index', name: 'game_pre_index')]
  55. public function indexAction(Request $request)
  56. {
  57. $userAgent = $_SERVER['HTTP_USER_AGENT'];
  58. //Block IE AGENT
  59. if (preg_match('/MSIE/i', $userAgent) || preg_match("/Trident\/7.0;(.*)rv:11.0/", $userAgent) || preg_match('/Edge/i', $userAgent)) {
  60. } else {
  61. $gameInfo = $this->em->getRepository(GameInfo::class)->findOneBy([
  62. 'name' => $this->getParameter('info_name')
  63. ]);
  64. if ($gameInfo) {
  65. $current = new \DateTime(date('Y-m-d H:i:s'));
  66. $startDate = $gameInfo->getStartDate();
  67. $endDate = $gameInfo->getEndDate();
  68. $prizeEndDate = $gameInfo->getPrizeRedeemEndDate();
  69. $language = $request->getLocale();
  70. if ($current < $startDate) {
  71. return $this->render('frontend/error/blankpage.html.twig', [
  72. "message" => ($language == 'zh_MO') ? $gameInfo->getNotStarted() : $gameInfo->getNotStartedCN(),
  73. "language" => $language
  74. ]);
  75. } else if ($current > $endDate && $current > $prizeEndDate) {
  76. return $this->render('frontend/error/blankpage.html.twig', [
  77. "message" => ($language == 'zh_MO') ? $gameInfo->getPrizeRedeemEnd() : $gameInfo->getPrizeRedeemEndCN(),
  78. "language" => $language
  79. ]);
  80. } else if ($current > $endDate) {
  81. return $this->render('frontend/error/blankpage.twig', [
  82. "message" => ($language == 'zh_MO') ? $gameInfo->getGameEnd() : $gameInfo->getGameEndCN(),
  83. "language" => $language,
  84. ]);
  85. } else {
  86. //get video
  87. $video0 = $this->em->getRepository(Video::class)->findBy(array('pool' => 0, 'enable' => true));
  88. shuffle($video0);
  89. $file = $video0[0]->getFiles();
  90. // video 1
  91. $video1 = $this->em->getRepository(Video::class)->findBy(array('pool' => 1, 'enable' => true));
  92. shuffle($video1);
  93. $file1 = $video1[0]->getFiles();
  94. // video 2
  95. $video2 = $this->em->getRepository(Video::class)->findBy([
  96. 'pool' => 2,
  97. 'enable' => true
  98. ]);
  99. shuffle($video2);
  100. $file2 = $video2[0]->getFiles();
  101. $today = new \DateTime('today');
  102. $now = new \DateTime(date('Y-m-d H:i:s'));
  103. $random = hash("sha256", $now->getTimestamp());
  104. // get 3 prizes for showcase
  105. $now = new \DateTime();
  106. $prizes = $this->em->getRepository(InGamePrize::class)->findBy([
  107. 'enable' => true
  108. ]);
  109. shuffle($prizes);
  110. $prizes = array_slice($prizes, 0, 3);
  111. // get 2 football match for showcase
  112. $repo = $this->em->getRepository(Soccer::class);
  113. $soccer = $repo->createQueryBuilder('s')
  114. ->select('s')
  115. ->andWhere('s.enable = :isEnable')
  116. ->setParameter('isEnable', true)
  117. ->orderBy('s.date', 'asc')
  118. ->setMaxResults(2)
  119. ->getQuery()
  120. ->getResult();
  121. // link
  122. $ai = $gameInfo->getStartGameLink();
  123. $intro = $gameInfo->getReserveLink();
  124. // banner
  125. $banners = $this->em->getRepository(InGameBanner::class)->findAll();
  126. shuffle($banners);
  127. return $this->render('frontend/default/index.html.twig', [
  128. "language" => $language,
  129. // video
  130. 'video_random' => $random,
  131. 'video_id' => $video0[0]->getId(),
  132. 'video_time' => $video0[0]->getTime(),
  133. 'video_link' => $file,
  134. 'video1_id' => $video1[0]->getId(),
  135. 'video1_time' => $video1[0]->getTime(),
  136. 'video1_link' => $file1,
  137. 'video2_id' => $video2[0]->getId(),
  138. 'video2_time' => $video2[0]->getTime(),
  139. 'video2_link' => $file2,
  140. // prize
  141. "prizes" => $prizes,
  142. // soccer
  143. "soccer" => $soccer,
  144. // link
  145. "ai" => $ai,
  146. "intro" => $intro,
  147. // banner
  148. "banners" => $banners,
  149. ]);
  150. }
  151. } else {
  152. $language = $request->getLocale();
  153. return $this->render('frontend/error/blankpage.html.twig', [
  154. "message" => "System Error",
  155. "language" => $language
  156. ]);
  157. }
  158. }
  159. }
  160. }