src/Controller/MainController.php line 75

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Game\Blocks;
  4. use App\Entity\Game\Campaign;
  5. use App\Entity\Game\LogUser;
  6. use App\Entity\Game\MemoryCard;
  7. use App\Entity\Game\Project;
  8. use App\Entity\Game\Rewards;
  9. use App\Entity\Game\User;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  16. class MainController extends AbstractController
  17. {
  18.     private $session;
  19.     private $dates
  20.     public function __construct(SessionInterface $session)
  21.     {
  22.         $this->session $session;
  23.         $this->dates = array(
  24.             "2024-04-15" => "lacoste",
  25.             "2024-04-16" => "lacoste",
  26.             "2024-04-17" => "lacoste",
  27.             "2024-04-18" => "lacoste",
  28.             "2024-04-19" => "lacoste",
  29.             "2024-04-20" => "lacoste",
  30.             "2024-04-21" => "lacoste",
  31.             "2024-04-22" => "lacoste",
  32.             "2024-04-23" => "lacoste",
  33.             "2024-04-24" => "lacoste",
  34.             "2024-04-25" => "lacoste",
  35.             "2024-04-26" => "lacoste",
  36.             "2024-04-27" => "lacoste",
  37.             "2024-04-28" => "lacoste",
  38.             "2024-04-29" => "lacoste",
  39.             "2024-04-30" => "lacoste",
  40.             "2024-05-01" => "lacoste",
  41.             "2024-05-02" => "lacoste",
  42.             "2024-05-03" => "lacoste",
  43.             "2024-05-04" => "lacoste",
  44.             "2024-05-05" => "lacoste",
  45.             // "2024-05-14" => "lacoste",
  46.         );
  47.         //Habilitem 2025
  48.         $startDate = new \DateTime("2025-03-25");  // Fecha de inicio: 25/03/2025
  49.         $endDate = new \DateTime("2025-05-04");    // Fecha de fin: 04/05/2025
  50.         // Reopened
  51.         $endDate = new \DateTime("2025-07-26");    // Fecha de fin: 04/05/2025
  52.         // Bucle para recorrer las fechas
  53.         while ($startDate <= $endDate) {
  54.             $this->dates$startDate->format('Y-m-d') ] = "lacoste";
  55.             
  56.             // Incrementar un día
  57.             $startDate->modify('+1 day');
  58.         }
  59.     }
  60.     /**
  61.      * @Route("/", name="main_page", methods={"GET"})
  62.      * 
  63.      */
  64.     public function mainPage(Request $request): Response
  65.     {
  66.         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  67.         // [inici]S'HA DE BORRAR
  68.         // if($request->get("date")){
  69.         //     $date = $request->get("date");
  70.         //     $now = new \DateTime($date);
  71.         // }
  72.         // $block_name = $request->get("block");
  73.         // if( substr($block_name, 0, 4) == '2022' ) {
  74.         //     $explode_block_name = explode('@',$block_name);
  75.         //     $date = $explode_block_name[0];
  76.         //     $block_name = $explode_block_name[1];
  77.         //     $now = new \DateTime($date);
  78.         // }
  79.         // [fi]S'HA DE BORRAR
  80.         $now $now->format("Y-m-d");
  81.         $hash $request->get("hash");
  82.         if ( !empty($hash) ) {
  83.             if(isset($this->dates[$now])){
  84.         // dd("entra2");
  85.                 $project $this->dates[$now];
  86.                 switch ($project) {
  87.                     case "lacoste":
  88.                         return $this->game($request);
  89.                         break;
  90.                 }
  91.             }
  92.         }
  93.         return $this->render('main/mainTemplate.html.twig');
  94.     }
  95.     /**
  96.      * @Route("/game", name="get_game", methods={"GET"})
  97.      * 
  98.      */
  99.     public function game(Request $request): Response
  100.     {
  101.         $this->session->clear();
  102.         $this->session->remove('playerHash');
  103.         $this->session->remove('quizHash');
  104.         $this->session->remove('campaignHash');
  105.         $this->session->set('gameUser'false);
  106.         $em $this->getDoctrine()->getManager();
  107.         $mail $request->get("mail");
  108.         $hash $request->get("hash");
  109.         
  110.         $block_name $request->get("block");
  111.         $ProjectRepository $em->getRepository(Project::class);
  112.         $campaignRepository $em->getRepository(Campaign::class);
  113.         $memoryCardRepository $em->getRepository(MemoryCard::class);
  114.         $LogUserRepository $em->getRepository(LogUser::class);
  115.         $BlocksRepository $em->getRepository(Blocks::class);
  116.         $UsersRepository $em->getRepository(User::class);
  117.         $project $ProjectRepository->findAll()[0];
  118.         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  119.         // dd($project);
  120.         $status $project->getStatus();
  121.         if($project && $status != && $project->getDate() <= $now){
  122.             $user $UsersRepository->findOneBy(array("email" => $mail));
  123.             $formSubmited false;
  124.             // if($user){
  125.             //     $formSubmited = true;
  126.             // } else{
  127.             //     $logUser = $LogUserRepository->findBy(array("hash" => $hash));
  128.             //     foreach($logUser as $lu){
  129.             //         if($lu->getUser()){
  130.             //             $formSubmited = true;
  131.             //             $user = $lu->getUser();
  132.             //         } 
  133.             //     }
  134.             // }
  135.             
  136.             // if($user && (date_format($user->getDateRewardCollected(), "Y-m-d") != date_format($now, "Y-m-d"))){
  137.             //     $formSubmited = false;
  138.             // }
  139.             if($hash && $block_name){
  140.                 $url "https://smart-adest.adestexperience.com/nfc/validate/hash?hash=".$hash;
  141.                 
  142.                 $curl curl_init();
  143.                 curl_setopt_array($curl, array(
  144.                     CURLOPT_URL => $url//(*)
  145.                     CURLOPT_RETURNTRANSFER => true,
  146.                     CURLOPT_ENCODING => '',
  147.                     CURLOPT_MAXREDIRS => 10,
  148.                     CURLOPT_TIMEOUT => 0,
  149.                     CURLOPT_FOLLOWLOCATION => true,
  150.                     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  151.                     CURLOPT_CUSTOMREQUEST => 'GET'
  152.                 ));
  153.                 
  154.                 $response curl_exec($curl);
  155.                 curl_close($curl);
  156.                 $response json_decode($response);
  157.                 if($response == 1){
  158.                     $this->session->set('gameHash'$hash);
  159.                     $block $BlocksRepository->findOneBy(array("name" => $block_name));
  160.                     try{
  161.                         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  162.                         $logUser = new LogUser();
  163.                         $logUser->setHash($hash);
  164.                         $logUser->setBlock($block);
  165.                         if($user$logUser->setUser($user);
  166.                         $logUser->setDateCreated($now);
  167.                         $em->persist($logUser);
  168.                         $em->flush();
  169.                     } catch(\Exception $e){
  170.                         if ( $_SERVER['APP_DEBUG'] ) {
  171.                             $return['message_explain'] = $e->getMessage();
  172.                             dd($return);
  173.                         }
  174.                     }
  175.                 }
  176.             }
  177.             $campaigns $campaignRepository->findAll();
  178.             // $activeCampaign = $campaignRepository->find(1);
  179.             $activeCampaign null;
  180.             foreach($campaigns as $campaign){
  181.             // dd($now, new \DateTime(date_format($campaign->getStartDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid')));
  182.                 if($now >= new \DateTime(date_format($campaign->getStartDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid')) && $now <= new \DateTime(date_format($campaign->getEndDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid'))){
  183.                     $activeCampaign $campaign;
  184.                     break;
  185.                 }
  186.             }
  187.             if($activeCampaign){
  188.                 $this->session->set('campaignHash'$activeCampaign->getHash());
  189.                 
  190.                 $memoryCardsRes = [];
  191.     
  192.                 $memoryCardsRes[0] = [
  193.                     "img" => $activeCampaign->getMemoryGame()->getBackCardImg()
  194.                 ];
  195.     
  196.                 $memoryCards $memoryCardRepository->findBy(["memory_game" => $activeCampaign->getMemoryGame()]);
  197.     
  198.                 foreach ($memoryCards as $key => $card) {
  199.                     array_push($memoryCardsRes, [
  200.                         "id" => $card->getId(),
  201.                         "name" => $card->getName(),
  202.                         "img" => $card->getImg()
  203.                     ]);
  204.                 }
  205.                 return $this->render('game/index.html.twig', [
  206.                     'activeCampaign' => $activeCampaign,
  207.                     'memoryCards' => $memoryCardsRes,
  208.                     'mail' => $mail,
  209.                     'status' => $status,
  210.                     'formSubmited' => $formSubmited
  211.                 ]);
  212.             }else{
  213.                 $status = -1;
  214.                 if($now < new \DateTime(date_format($campaign->getStartDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid')) ){
  215.                     $status 0;
  216.                 }
  217.                 // $rewardRepo = $em->getRepository(Rewards::class);
  218.                 // try{
  219.                 //     $rewards = $rewardRepo->updateNextDayReward();
  220.                 //     // dd($rewards);
  221.                 //     $columns = array_column($rewards, "id");
  222.                 //     // dd($columns);
  223.                 //     $allRewards = $rewardRepo->findAll();
  224.                 //     foreach($rewards as $reward){
  225.                 //         in_array($columns,[1, 2, 3]);
  226.                 //         // $reward["id"];
  227.                 //         $r = $rewardRepo->findOneBy(["id" => $reward["id"]]);
  228.                 //         $r->setMax($r->getHash() - $reward["cantity"]);
  229.             
  230.                 //         $em->persist($r);
  231.                 //     }
  232.                 //     foreach($allRewards as $rew){
  233.                 //         if(!in_array($rew->getId(), $columns)){
  234.                 //             $r = $rewardRepo->findOneBy(["id" => $rew->getId()]);
  235.                 //             $r->setMax($r->getHash());
  236.                 //             $em->persist($r);
  237.                 //         }
  238.                 //     }
  239.                 //     $em->flush();
  240.         
  241.                 //     $return = [
  242.                 //         "status" => "success",
  243.                 //         "message" => "Cantidad repartida"
  244.                 //     ];
  245.                 // }catch(\Exception $e){
  246.                 //     $return = [
  247.                 //         "status" => "error",
  248.                 //         "message" => "incorrect data"
  249.                 //     ];
  250.                 // }
  251.             }
  252.         }
  253.         return $this->render('game/index.html.twig', [
  254.             'status' => $status,
  255.         ]);
  256.     }
  257. }