src/Controller/MainController.php line 58

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.     }
  48.     /**
  49.      * @Route("/", name="main_page", methods={"GET"})
  50.      * 
  51.      */
  52.     public function mainPage(Request $request): Response
  53.     {
  54.         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  55.         // [inici]S'HA DE BORRAR
  56.         // if($request->get("date")){
  57.         //     $date = $request->get("date");
  58.         //     $now = new \DateTime($date);
  59.         // }
  60.         // $block_name = $request->get("block");
  61.         // if( substr($block_name, 0, 4) == '2022' ) {
  62.         //     $explode_block_name = explode('@',$block_name);
  63.         //     $date = $explode_block_name[0];
  64.         //     $block_name = $explode_block_name[1];
  65.         //     $now = new \DateTime($date);
  66.         // }
  67.         // [fi]S'HA DE BORRAR
  68.         $now $now->format("Y-m-d");
  69.         $hash $request->get("hash");
  70.         if ( !empty($hash) ) {
  71.             if(isset($this->dates[$now])){
  72.         // dd("entra2");
  73.                 $project $this->dates[$now];
  74.                 switch ($project) {
  75.                     case "lacoste":
  76.                         return $this->game($request);
  77.                         break;
  78.                 }
  79.             }
  80.         }
  81.         return $this->render('main/mainTemplate.html.twig');
  82.     }
  83.     /**
  84.      * @Route("/game", name="get_game", methods={"GET"})
  85.      * 
  86.      */
  87.     public function game(Request $request): Response
  88.     {
  89.         $this->session->clear();
  90.         $this->session->remove('playerHash');
  91.         $this->session->remove('quizHash');
  92.         $this->session->remove('campaignHash');
  93.         $this->session->set('gameUser'false);
  94.         $em $this->getDoctrine()->getManager();
  95.         $mail $request->get("mail");
  96.         $hash $request->get("hash");
  97.         
  98.         $block_name $request->get("block");
  99.         $ProjectRepository $em->getRepository(Project::class);
  100.         $campaignRepository $em->getRepository(Campaign::class);
  101.         $memoryCardRepository $em->getRepository(MemoryCard::class);
  102.         $LogUserRepository $em->getRepository(LogUser::class);
  103.         $BlocksRepository $em->getRepository(Blocks::class);
  104.         $UsersRepository $em->getRepository(User::class);
  105.         $project $ProjectRepository->findAll()[0];
  106.         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  107.         // dd($project);
  108.         $status $project->getStatus();
  109.         if($project && $status != && $project->getDate() <= $now){
  110.             $user $UsersRepository->findOneBy(array("email" => $mail));
  111.             $formSubmited false;
  112.             // if($user){
  113.             //     $formSubmited = true;
  114.             // } else{
  115.             //     $logUser = $LogUserRepository->findBy(array("hash" => $hash));
  116.             //     foreach($logUser as $lu){
  117.             //         if($lu->getUser()){
  118.             //             $formSubmited = true;
  119.             //             $user = $lu->getUser();
  120.             //         } 
  121.             //     }
  122.             // }
  123.             
  124.             // if($user && (date_format($user->getDateRewardCollected(), "Y-m-d") != date_format($now, "Y-m-d"))){
  125.             //     $formSubmited = false;
  126.             // }
  127.             if($hash && $block_name){
  128.                 $url "https://smart-adest.adestexperience.com/nfc/validate/hash?hash=".$hash;
  129.                 
  130.                 $curl curl_init();
  131.                 curl_setopt_array($curl, array(
  132.                     CURLOPT_URL => $url//(*)
  133.                     CURLOPT_RETURNTRANSFER => true,
  134.                     CURLOPT_ENCODING => '',
  135.                     CURLOPT_MAXREDIRS => 10,
  136.                     CURLOPT_TIMEOUT => 0,
  137.                     CURLOPT_FOLLOWLOCATION => true,
  138.                     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  139.                     CURLOPT_CUSTOMREQUEST => 'GET'
  140.                 ));
  141.                 
  142.                 $response curl_exec($curl);
  143.                 curl_close($curl);
  144.                 $response json_decode($response);
  145.                 if($response == 1){
  146.                     $this->session->set('gameHash'$hash);
  147.                     $block $BlocksRepository->findOneBy(array("name" => $block_name));
  148.                     try{
  149.                         $now = new \DateTime('now', new \DateTimeZone('Europe/Madrid'));
  150.                         $logUser = new LogUser();
  151.                         $logUser->setHash($hash);
  152.                         $logUser->setBlock($block);
  153.                         if($user$logUser->setUser($user);
  154.                         $logUser->setDateCreated($now);
  155.                         $em->persist($logUser);
  156.                         $em->flush();
  157.                     } catch(\Exception $e){
  158.                         if ( $_SERVER['APP_DEBUG'] ) {
  159.                             $return['message_explain'] = $e->getMessage();
  160.                             dd($return);
  161.                         }
  162.                     }
  163.                 }
  164.             }
  165.             $campaigns $campaignRepository->findAll();
  166.             // $activeCampaign = $campaignRepository->find(1);
  167.             $activeCampaign null;
  168.             foreach($campaigns as $campaign){
  169.             // dd($now, new \DateTime(date_format($campaign->getStartDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid')));
  170.                 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'))){
  171.                     $activeCampaign $campaign;
  172.                     break;
  173.                 }
  174.             }
  175.             if($activeCampaign){
  176.                 $this->session->set('campaignHash'$activeCampaign->getHash());
  177.                 
  178.                 $memoryCardsRes = [];
  179.     
  180.                 $memoryCardsRes[0] = [
  181.                     "img" => $activeCampaign->getMemoryGame()->getBackCardImg()
  182.                 ];
  183.     
  184.                 $memoryCards $memoryCardRepository->findBy(["memory_game" => $activeCampaign->getMemoryGame()]);
  185.     
  186.                 foreach ($memoryCards as $key => $card) {
  187.                     array_push($memoryCardsRes, [
  188.                         "id" => $card->getId(),
  189.                         "name" => $card->getName(),
  190.                         "img" => $card->getImg()
  191.                     ]);
  192.                 }
  193.                 return $this->render('game/index.html.twig', [
  194.                     'activeCampaign' => $activeCampaign,
  195.                     'memoryCards' => $memoryCardsRes,
  196.                     'mail' => $mail,
  197.                     'status' => $status,
  198.                     'formSubmited' => $formSubmited
  199.                 ]);
  200.             }else{
  201.                 $status = -1;
  202.                 if($now < new \DateTime(date_format($campaign->getStartDate(), "Y-m-d H:i:s"), new \DateTimeZone('Europe/Madrid')) ){
  203.                     $status 0;
  204.                 }
  205.                 // $rewardRepo = $em->getRepository(Rewards::class);
  206.                 // try{
  207.                 //     $rewards = $rewardRepo->updateNextDayReward();
  208.                 //     // dd($rewards);
  209.                 //     $columns = array_column($rewards, "id");
  210.                 //     // dd($columns);
  211.                 //     $allRewards = $rewardRepo->findAll();
  212.                 //     foreach($rewards as $reward){
  213.                 //         in_array($columns,[1, 2, 3]);
  214.                 //         // $reward["id"];
  215.                 //         $r = $rewardRepo->findOneBy(["id" => $reward["id"]]);
  216.                 //         $r->setMax($r->getHash() - $reward["cantity"]);
  217.             
  218.                 //         $em->persist($r);
  219.                 //     }
  220.                 //     foreach($allRewards as $rew){
  221.                 //         if(!in_array($rew->getId(), $columns)){
  222.                 //             $r = $rewardRepo->findOneBy(["id" => $rew->getId()]);
  223.                 //             $r->setMax($r->getHash());
  224.                 //             $em->persist($r);
  225.                 //         }
  226.                 //     }
  227.                 //     $em->flush();
  228.         
  229.                 //     $return = [
  230.                 //         "status" => "success",
  231.                 //         "message" => "Cantidad repartida"
  232.                 //     ];
  233.                 // }catch(\Exception $e){
  234.                 //     $return = [
  235.                 //         "status" => "error",
  236.                 //         "message" => "incorrect data"
  237.                 //     ];
  238.                 // }
  239.             }
  240.         }
  241.         return $this->render('game/index.html.twig', [
  242.             'status' => $status,
  243.         ]);
  244.     }
  245. }