<?php
namespace App\Controller\Frontend;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use Detection\MobileDetect;
use App\Entity\GameInfo;
use App\Entity\Video;
#[Route('/{language}/game', requirements: ['language' => 'zh_MO'])]
class DefaultController extends AbstractController
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
#[Route('/termscondition', name: 'game_pre_activity_rule')]
public function termsConditionAction(Request $request): Response
{
$gameInfo = $this->em->getRepository(GameInfo::class)->findOneBy([
'name' => $this->getParameter('info_name')
]);
$tandc = null;
$language = $request->getLocale();
if ($gameInfo) {
$tandc = ($language == 'zh_CN') ? $gameInfo->getTandcCN() : $gameInfo->getTandc();
}
return $this->render('frontend/default/rule.html.twig', [
"tandc" => $tandc,
'language' => $language
]);
}
#[Route('/', name: 'game_pre_checkAgent')]
public function checkAgentAction(Request $request)
{
$language = $request->getLocale();
$detect = new MobileDetect;
if (!$detect->isMobile() && !$detect->isTablet()) {
return $this->render('frontend/iframe/index.html.twig', [
'language' => $language
]);
}
return $this->redirectToRoute('game_pre_index', ['language' => $language]);
}
#[Route('/index', name: 'game_pre_index')]
public function indexAction(Request $request)
{
$userAgent = $_SERVER['HTTP_USER_AGENT'];
//Block IE AGENT
if (preg_match('/MSIE/i', $userAgent) || preg_match("/Trident\/7.0;(.*)rv:11.0/", $userAgent) || preg_match('/Edge/i', $userAgent)) {
} else {
$gameInfo = $this->em->getRepository(GameInfo::class)->findOneBy([
'name' => $this->getParameter('info_name')
]);
if ($gameInfo) {
$current = new \DateTime(date('Y-m-d H:i:s'));
$startDate = $gameInfo->getStartDate();
$endDate = $gameInfo->getEndDate();
$prizeEndDate = $gameInfo->getPrizeRedeemEndDate();
$language = $request->getLocale();
$video_link = $this->em->getRepository(Video::class)->findOneBy(['name'=> 'myTV_video']);
if ($current < $startDate)
{
return $this->render('frontend/error/blankpage2.html.twig', [
"message" => ($language == 'zh_MO') ? $gameInfo->getNotStarted() : $gameInfo->getNotStartedCN(),
"language" => $language
]);
}
else if ($current > $endDate && $current > $prizeEndDate)
{
return $this->render('frontend/error/blankpage2.html.twig', [
"message" => ($language == 'zh_MO') ? $gameInfo->getPrizeRedeemEnd() : $gameInfo->getPrizeRedeemEndCN(),
"language" => $language
]);
}
else if ($current > $endDate)
{
return $this->render('frontend/default/message_to_myprize.html.twig', [
"message" => ($language == 'zh_MO') ? $gameInfo->getGameEnd() : $gameInfo->getGameEndCN(),
"language" => $language
]);
}
else
{
return $this->render('frontend/default/index.html.twig', [
"language" => $language,
"applicationPage" => $gameInfo->getStartGameLink(),
"video_link" => $video_link->getFiles(),
"video_time" => $video_link->getTime()
]);
}
} else {
$language = $request->getLocale();
return $this->render('frontend/error/blankpage.html.twig', [
"message" => "System Error",
"language" => $language
]);
}
}
}
#[Route('/download', name: 'game_download')]
public function downloadAction(Request $request): Response
{
$gameInfo = $this->em->getRepository(GameInfo::class)->findOneBy([
'name' => $this->getParameter('info_name')
]);
$tandc = null;
$language = $request->getLocale();
if ($gameInfo) {
$tandc = ($language == 'zh_CN') ? $gameInfo->getTandcCN() : $gameInfo->getTandc();
}
return $this->render('frontend/default/download.html.twig', [
"tandc" => $tandc,
'language' => $language
]);
}
}