src/Controller/HoroscopeController.php line 37

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Doctrine\Persistence\ManagerRegistry;
  8. use Psr\Log\LoggerInterface;
  9. use App\Entity\AppHoroscope\Quotidien;
  10. use App\Entity\AppHoroscope\Hebdomadaire;
  11. use App\Entity\AppHoroscope\Mensuel;
  12. use App\Services\ControlParams;
  13. class HoroscopeController extends AbstractController
  14. {
  15.     
  16.     private $control;
  17.     private $doctrine;
  18.     private $logger;
  19.     public function __construct(ManagerRegistry $doctrineLoggerInterface $loggerstring $appEnv)
  20.     {
  21.         $this->doctrine $doctrine;
  22.         $this->logger $logger;
  23.         $this->control = new ControlParams($doctrine$logger$appEnv);
  24.     }
  25.     /**
  26.      * @Route("/horoscope/horoscopeMensuel", name="horoscope_Menusel" , methods={"POST"})
  27.      */
  28.     public function horoscopeMensuel(Request $request): Response
  29.     {
  30.         $data = array();
  31.         $tableViePrive = array();
  32.         $tableTravail = array();
  33.         $tableForme = array();
  34.         // === +++ Controle +++ ===
  35.         $params $this->control->getParams($request);
  36.         $resApiKey $this->control->apiKey();
  37.         if ($resApiKey['responseCode']!=200) return $this->json($resApiKey$resApiKey['responseCode']);
  38.          // === +++ +++ ===
  39.         $now date("n"); // Mois
  40.         $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
  41.         $de = array("","de ","de ","de ","d'","de ","de ","de ","d'","de ","d'","de ","de ");
  42.         $num date("n");
  43.         $datefr $de[$num]. strtolower($mois[$num])." ".date("Y");
  44.         $data["date"] = "Mois " $datefr;
  45.         
  46.         // verfier l'origine du site et lecture table config
  47.         $cle 0;
  48.         // "host": "www.horoscope-site.com",
  49.         // "referringpage": "doux-presages.cabinet-voyance.fr"
  50.       
  51.         $repos $this->doctrine->getManager('horoscope')->getRepository(Mensuel::class);
  52.         $listArray $repos->findBy([], ['id' => 'ASC']);
  53.         foreach ($listArray as $val) {
  54.             $tableViePrive[] = $val->getViePrive();
  55.             $tableTravail[] = $val->getTravail();
  56.             $tableForme[] = $val->getForme();
  57.         }
  58.            
  59.         $tabLen    count($tableViePrive);
  60.         if ($tabLen>0) {
  61.             // recupere les n derniers éléments du tableaux (en fonction du décalage $cle)
  62.             $tabEnd1 array_slice ($tableViePrive$tabLen-$cle$cle);
  63.             $tabEnd2 array_slice ($tableTravail$tabLen-$cle$cle);
  64.             $tabEnd3 array_slice ($tableForme$tabLen-$cle$cle);
  65.             
  66.             // récupère les M-n premiers éléments du tableau
  67.             $tabDeb1    array_slice ($tableViePrive0$tabLen-$cle);
  68.             $tabDeb2    array_slice ($tableTravail0$tabLen-$cle);
  69.             $tabDeb3    array_slice ($tableForme0$tabLen-$cle);
  70.             
  71.             $tableViePrive    array_merge($tabEnd1,$tabDeb1);
  72.             $tableTravail    array_merge($tabEnd2,$tabDeb2);
  73.             $tableForme    array_merge($tabEnd3,$tabDeb3);
  74.             
  75.             // position dans l'annonce, jour modulo nb annonces en fonction du zodiac
  76.             $bloc $tabLen /12;
  77.             $pos $now $bloc;
  78.             $decalage = (int)($now $bloc);
  79.             if ($pos<=0$pos = ($tabLen /12);
  80.             $deb = ($pos-1) * 12 $decalage;
  81.             $fin $deb 12;
  82.             $depassement 0;
  83.             if ($fin>$tabLen) {
  84.                 $depassement $fin $tabLen;
  85.                 $fin $tabLen;
  86.             }
  87.             for ($k=$deb$k<$fin$k++) {
  88.                 $data["vie_prive"][] = $tableViePrive[$k];
  89.                 $data["travail"][] = $tableTravail[$k];
  90.                 $data["forme"][] = $tableForme[$k];
  91.             }
  92.             if ($depassement) {
  93.                 for ($k=0$k<$depassement$k++) {
  94.                     $data["vie_prive"][] = $tableViePrive[$k];
  95.                     $data["travail"][] = $tableTravail[$k];
  96.                     $data["forme"][] = $tableForme[$k];
  97.                 }
  98.             }
  99.         }
  100.         return $this->json($data);
  101.     
  102.     }
  103.     /**
  104.      * @Route("/horoscope/horoscopeHebdomadaire", name="horoscope_Hebdo" , methods={"POST"})
  105.      */
  106.     public function horoscopeHebdomadaire(Request $request): Response
  107.     {
  108.         $data = array();
  109.         $tableViePrive = array();
  110.         $tableTravail = array();
  111.         $tableForme = array();
  112.          // === +++ Controle +++ ===
  113.         $params $this->control->getParams($request);
  114.         $resApiKey $this->control->apiKey();
  115.         if ($resApiKey['responseCode']!=200) return $this->json($resApiKey$resApiKey['responseCode']);
  116.  
  117.          // === +++ +++ ===
  118.         $now date("W"); // Numéro de semaine
  119.         $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
  120.         $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
  121.        
  122.         $num_day      date('w');
  123.         $premier_jour mktime(0,0,0date("n"),date("d")-(!$num_day?7:$num_day)+1,date("Y"));
  124.         $datefr $jour[date("w",$premier_jour)]." ".date("d"$premier_jour)." ".$mois[date("n"$premier_jour)]." ".date("Y"$premier_jour);
  125.         $datefr strtolower($datefr);
  126.         $data["date"] = "Semaine du " $datefr;
  127.          
  128.         // verfier l'origine du site et lecture table config
  129.         $cle 0;
  130.         $repos $this->doctrine->getManager('horoscope')->getRepository(Hebdomadaire::class);
  131.         $listArray $repos->findBy([], ['id' => 'ASC']);
  132.         foreach ($listArray as $val) {
  133.             $tableViePrive[] = $val->getViePrive();
  134.             $tableTravail[] = $val->getTravail();
  135.             $tableForme[] = $val->getForme();
  136.         }
  137.            
  138.         $tabLen    count($tableViePrive);
  139.         if ($tabLen>0) {
  140.             // recupere les n derniers éléments du tableaux (en fonction du décalage $cle)
  141.             $tabEnd1 array_slice ($tableViePrive$tabLen-$cle$cle);
  142.             $tabEnd2 array_slice ($tableTravail$tabLen-$cle$cle);
  143.             $tabEnd3 array_slice ($tableForme$tabLen-$cle$cle);
  144.             
  145.             // récupère les M-n premiers éléments du tableau
  146.             $tabDeb1    array_slice ($tableViePrive0$tabLen-$cle);
  147.             $tabDeb2    array_slice ($tableTravail0$tabLen-$cle);
  148.             $tabDeb3    array_slice ($tableForme0$tabLen-$cle);
  149.             
  150.             $tableViePrive    array_merge($tabEnd1,$tabDeb1);
  151.             $tableTravail    array_merge($tabEnd2,$tabDeb2);
  152.             $tableForme    array_merge($tabEnd3,$tabDeb3);
  153.             
  154.             // position dans l'annonce, jour modulo nb annonces en fonction du zodiac
  155.             $bloc $tabLen /12;
  156.             $pos $now $bloc;
  157.             $decalage = (int)($now $bloc);
  158.             if ($pos<=0$pos = ($tabLen /12);
  159.             $deb = ($pos-1) * 12 $decalage;
  160.             $fin $deb 12;
  161.             $depassement 0;
  162.             if ($fin>$tabLen) {
  163.                 $depassement $fin $tabLen;
  164.                 $fin $tabLen;
  165.             }
  166.             for ($k=$deb$k<$fin$k++) {
  167.                 $data["vie_prive"][] = $tableViePrive[$k];
  168.                 $data["travail"][] = $tableTravail[$k];
  169.                 $data["forme"][] = $tableForme[$k];
  170.             }
  171.             if ($depassement) {
  172.                 for ($k=0$k<$depassement$k++) {
  173.                     $data["vie_prive"][] = $tableViePrive[$k];
  174.                     $data["travail"][] = $tableTravail[$k];
  175.                     $data["forme"][] = $tableForme[$k];
  176.                 }
  177.             }
  178.             
  179.         }
  180.         return $this->json($data);
  181.     
  182.     }
  183.     
  184.     /**
  185.      * @Route("/horoscope/horoscopeJour", name="horoscope_jour" , methods={"POST"})
  186.      */
  187.     public function horoscopeJour(Request $request): Response
  188.     {
  189.         $data = array();
  190.         $tableViePrive = array();
  191.          // === +++ Controle +++ ===
  192.         $params $this->control->getParams($request);
  193.         $resApiKey $this->control->apiKey();
  194.         if ($resApiKey['responseCode']!=200) return $this->json($resApiKey$resApiKey['responseCode']);
  195.  
  196.          // === +++ +++ ===
  197.         $now date("z"); // Jour de l'année
  198.         $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
  199.         $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
  200.         $data["date"] = $jour[date("w")]." ".date("d")." "strtolower($mois[date("n")]) ." ".date("Y");
  201.      
  202.         // verfier l'origine du site et lecture table config
  203.         $cle 0;
  204.         $repos $this->doctrine->getManager('horoscope')->getRepository(Quotidien::class);
  205.         $listArray $repos->findBy([], ['id' => 'ASC']);
  206.         foreach ($listArray as $val) {
  207.             $tableViePrive[] = $val->getViePrive();
  208.         }
  209.            
  210.         $tabLen    count($tableViePrive);
  211.         if ($tabLen>0) {
  212.             // recupere les n derniers éléments du tableaux (en fonction du décalage $cle)
  213.             $tabEnd array_slice ($tableViePrive$tabLen-$cle$cle);
  214.             
  215.             // récupère les M-n premiers éléments du tableau
  216.             $tabDeb    array_slice ($tableViePrive0$tabLen-$cle);
  217.             
  218.             $tableViePrive    array_merge($tabEnd,$tabDeb);
  219.             
  220.             // position dans l'annonce, jour modulo nb annonces en fonction du zodiac
  221.             $bloc $tabLen /12;
  222.             $pos $now $bloc;
  223.             $decalage = (int)($now $bloc);
  224.             if ($pos<=0$pos = ($tabLen /12);
  225.             $deb = ($pos-1) * 12 $decalage;
  226.             $fin $deb 12;
  227.             $depassement 0;
  228.             if ($fin>$tabLen) {
  229.                 $depassement $fin $tabLen;
  230.                 $fin $tabLen;
  231.             }
  232.             for ($k=$deb$k<$fin$k++) {
  233.                 $data["vie_prive"][] = $tableViePrive[$k];
  234.             }
  235.             if ($depassement) {
  236.                 for ($k=0$k<$depassement$k++) {
  237.                     $data["vie_prive"][] = $tableViePrive[$k];
  238.                 }
  239.             }
  240.         }
  241.         return $this->json($data);
  242.     
  243.     }
  244. }