src/Controller/Controller_Frontoffice/Base/BaseController.php line 165

  1. <?php
  2. namespace App\Controller\Controller_Frontoffice\Base;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Entity\Commande;
  7. use App\Entity\Membres;
  8. use App\Entity\Newsletter;
  9. use App\Entity\Panier;
  10. use App\Entity\Token;
  11. use App\Entity\Articles;
  12. use App\Entity\CodePromo;
  13. use App\Entity\HistoriquePrixArticle;
  14. use App\Entity\Images;
  15. use App\Entity\Slider;
  16. use App\Entity\SousCategories;
  17. use App\Entity\Entreprise;
  18. use App\Entity\Categories;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  22. use Symfony\Component\HttpFoundation\Session\Session;
  23. use Symfony\Component\Serializer\Serializer;
  24. use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
  25. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  26. use Knp\Component\Pager\PaginatorInterface;
  27. use Symfony\Component\Serializer\SerializerInterface;
  28. use Symfony\Component\HttpFoundation\JsonResponse;
  29. class BaseController extends AbstractController
  30. {
  31.   
  32.     #[Route('/'name'index')]
  33.     public function indexAction(EntityManagerInterface $entityManager,Request $request): Response
  34.     {
  35.         $session = new Session();
  36.         $panier = array();
  37.         if($session->get("panier")){
  38.             $panier $session->get("panier");
  39.         }
  40.         $n count($panier);
  41.         $typeCompte "PARTICULIER";
  42.         $requestSql "a.prixPromo > 0 and a.prixPromo < a.prixTTC and a.etat = 1";
  43.         if($session->get("connectU") == "OK" && $session->get("userU") != null){
  44.             if($session->get("userU")->getCodeType() == 2){
  45.                 $typeCompte "PRO";
  46.                 $requestSql "a.prixPromo > 0 and a.prixPromo < a.prixProTTC and a.etat = 1";
  47.             }
  48.         }
  49.         // $result = $entityManager->createQuery("SELECT a.id FROM SousCategories a where a.idCategorie = 1 or a.idCategorie = 2")->getScalarResult();
  50.         $result $entityManager->createQueryBuilder()
  51.             ->select('a.id')
  52.             ->from('App\Entity\SousCategories''a')
  53.             ->where('a.idCategorie = :cat1 OR a.idCategorie = :cat2')
  54.             ->setParameter('cat1'1)
  55.             ->setParameter('cat2'2)
  56.             ->getQuery()
  57.             ->getScalarResult();
  58.         
  59.         $ids array_map('current'$result);
  60.         $repository $entityManager->getRepository(Articles::class);
  61.         $lf$repository->findBy(array("idSousCategorie"=>$ids,"etat"=>1),array(),8);
  62.         
  63.         /************Article promos***********/
  64.             $repository $entityManager->getRepository(Categories::class);
  65.             $cats $repository->findAll();
  66.             $categories = array();
  67.             for($i=0;$i<count($cats);$i++){
  68.                 $categories[$i]["categorie"] = $cats[$i];
  69.                 $repository $entityManager->getRepository(SousCategories::class);
  70.                 $sousCats $repository->findByIdCategorie($cats[$i]->getId());
  71.                 $categories[$i]["sousCategorie"] = $sousCats;
  72.             }
  73.             $repo $entityManager->getRepository(Articles::class);
  74.             $qb $repo->createQueryBuilder('a');
  75.             $qb->select('a');
  76.             $qb->where($requestSql);
  77.             $qb->orderBy('a.dateAjout''DESC');
  78.             $qb->setMaxResults(1);
  79.             $ArticlePromo $qb->getQuery()->getResult();
  80.             $query $entityManager->createQuery(
  81.                 'SELECT a, c.titre AS titreCat
  82.                 FROM App\Entity\Articles a
  83.                 INNER JOIN App\Entity\SousCategories c
  84.                 WITH a.idSousCategorie = c.id
  85.                 where '.$requestSql
  86.             );
  87.             $query->setMaxResults(20);
  88.             
  89.             $ArticlesPromotions =  $query->getResult();
  90.         /**************************** */
  91.         $legumesFruits = array();
  92.         $listArticle = array();
  93.         $query $entityManager->createQuery(
  94.             'SELECT p
  95.             FROM App\Entity\SousCategories p
  96.             WHERE p.id in (SELECT a.idSousCategorie
  97.             FROM App\Entity\Articles a)'
  98.         );
  99.         $categorie $query->getResult();
  100.         
  101.         $query $entityManager->createQuery(
  102.             'SELECT a, c.titre AS titreCat
  103.             FROM App\Entity\Articles a
  104.             INNER JOIN App\Entity\SousCategories c
  105.             WITH a.idSousCategorie = c.id'
  106.         );
  107.         
  108.         $articles =  $query->getResult();
  109.         
  110.         for($i=0;$i<count($lf);$i++){
  111.             $legumesFruits[$i]["article"] = $lf[$i];
  112.             $repository $entityManager->getRepository(SousCategories::class);
  113.             $sCat $repository->findOneById($lf[$i]->getIdSousCategorie());
  114.             $legumesFruits[$i]["categorie"] = "--";
  115.             $legumesFruits[$i]["title"] = "--";
  116.             if($sCat){
  117.                 $legumesFruits[$i]["categorie"] = $sCat->getTitre();
  118.                 if($sCat->getIdCategorie() == 1){
  119.                     $legumesFruits[$i]["title"] = "Légumes";
  120.                 }
  121.                 elseif($sCat->getIdCategorie() == 2){
  122.                     $legumesFruits[$i]["title"] = "Fruits";
  123.                 }
  124.             }
  125.             $listArticle[$lf[$i]->getId()] = $lf[$i];
  126.         }
  127.         $repository $entityManager->getRepository(SousCategories::class);
  128.         $scRes $repository->findByIdCategorie(4);
  129.         $restauration = array();
  130.         for($i=0;$i<count($scRes);$i++){
  131.             $restauration[$i]["categorie"] = $scRes[$i];
  132.             $repository $entityManager->getRepository(Articles::class);
  133.             $rest$repository->findBy(array("idSousCategorie"=>$scRes[$i]->getId(),"etat"=>1),array(),4);
  134.             $restauration[$i]["article"] = $rest;
  135.             for($j=0;$j<count($rest);$j++){
  136.                 $listArticle[$rest[$j]->getId()] = $rest[$j];
  137.             }
  138.         }
  139.         //$result = $entityManager->createQuery("SELECT a.id FROM SousCategories a where a.idCategorie = 3")->getScalarResult();
  140.         $result $entityManager->createQueryBuilder()
  141.             ->select('a.id')
  142.             ->from('App\Entity\SousCategories''a')
  143.             ->where('a.idCategorie = :cat1')
  144.             ->setParameter('cat1'3)
  145.             ->getQuery()
  146.             ->getScalarResult();
  147.         $ids array_map('current'$result);
  148.         $repository $entityManager->getRepository(Articles::class);
  149.         $poisson $repository->findBy(array("idSousCategorie"=>$ids,"etat"=>1),array(),6);
  150.         $listPoissons = array();
  151.         for($i=0;$i<count($poisson);$i++){
  152.             $listPoissons[$i]["article"] = $poisson[$i];
  153.             $repository $entityManager->getRepository(SousCategories::class);
  154.             $sCat $repository->findOneById($poisson[$i]->getIdSousCategorie());
  155.             $listPoissons[$i]["categorie"] = "--";
  156.             if($sCat){
  157.                 $listPoissons[$i]["categorie"] = $sCat->getTitre();
  158.             }
  159.             $listArticle[$poisson[$i]->getId()] = $poisson[$i];
  160.         }
  161.         $repository $entityManager->getRepository(Slider::class);
  162.         $sliders $repository->findAll();
  163.         $serializer = new Serializer(array(new GetSetMethodNormalizer()), array('json' => new
  164.         JsonEncoder()));
  165.         $jsonArticle $serializer->serialize($listArticle'json');
  166.         return $this->render('frontoffice_bundle/base/index.html.twig'
  167.         array("ArticlePromo"=>$ArticlePromo,"ArticlesPromotions"=>$ArticlesPromotions,"legumesFruits"=>$legumesFruits,"npanier"=>$n,"articles"=>$articles ,"typeCompte"=>$typeCompte,"restauration"=>$restauration,"poissons"=>$listPoissons,"sliders"=>$sliders,"articlesJson"=>$jsonArticle,"categories"=>$categorie,'controller_name' => 'BaseController'));
  168.     }
  169.       
  170.     #[Route('/getData')]
  171.     public function getCategorie(EntityManagerInterface $entityManagerRequest $request): JsonResponse
  172.     {
  173.         $session = new Session();
  174.         $listCat $entityManager->getRepository(SousCategories::class)->findAll();
  175.         $serializer = new Serializer([new GetSetMethodNormalizer()], ['json' => new JsonEncoder()]);
  176.         $data =  [
  177.             "categorie"=>$listCat ,
  178.             "panier"=> count($session->get("panier"))
  179.         ];
  180.         $jsonArticle $serializer->serialize($data'json');
  181.     
  182.         return new JsonResponse($jsonArticleJsonResponse::HTTP_OK, [], true);
  183.     }
  184.     #[Route('/reset/{tokenString}/'name'reset')]
  185.     public function resetPasswordAction($tokenString "NONE" EntityManagerInterface $entityManager,Request $request): Response
  186.     {
  187.         $session = new Session();
  188.         if($session->get("connectU") == "OK" && $session->get("userU") != null){
  189.             return $this->redirect("/monProfil/");
  190.         }
  191.         if($tokenString == "NONE"){
  192.             return $this->Redirect('/account/');
  193.         }
  194.         $response "";
  195.         
  196.         $id $request->get("id");
  197.         
  198.         $repository $entityManager->getRepository(Token::class);
  199.         $token $repository->findOneByIdMembre($id);
  200.         if(!$token) {
  201.             return $this->Redirect('/account/');
  202.         }
  203.         else{
  204.             if ($token->getToken() != $tokenString) {
  205.                 return $this->Redirect('/account/');
  206.             }
  207.         }
  208.         $repository $entityManager->getRepository(Membres::class);
  209.         $u $repository->findOneById($id);
  210.         if(!$u){
  211.             return $this->Redirect('/account/');
  212.         }
  213.         if($request->getMethod() == "POST"){
  214.             $pass $request->get("password1");
  215.             $pass2 $request->get("password2");
  216.             if(strlen($pass) < 8){
  217.                 $response "Le mot de passe doit comprendre minimum 8 caractères";
  218.             }
  219.             else{
  220.                 if($pass != $pass2){
  221.                     $response "Les deux mots de passe ne sont pas identiques";
  222.                 }
  223.                 else{
  224.                     $u->setPassword(md5($pass));
  225.                     $entityManager->flush();
  226.                     $entityManager->remove($token);
  227.                     $entityManager->flush();
  228.                     $response "OK";
  229.                 }
  230.             }
  231.         }
  232.         return $this->render('frontoffice_bundle/Base/resetPassword.html.twig', array("response"=>$response));
  233.     }
  234.     #[Route('/addNewsletter'name'addNewsletter')]
  235.     public function addNewsletterAction(EntityManagerInterface $entityManager,Request $request): Response
  236.     {
  237.         $response "Une erreur s'est produite !";
  238.         
  239.         if($request->getMethod() == "POST"){
  240.             $email $request->get("email");
  241.             if (!filter_var($emailFILTER_VALIDATE_EMAIL)){
  242.                 $response "Adresse email invalide";
  243.             }
  244.             else{
  245.                 
  246.                 $repository $entityManager->getRepository(Newsletter::class);
  247.                 $newsl $repository->findOneByEmail($email);
  248.                 if($newsl){
  249.                     $response "Vous avez dèja été enregistré";
  250.                 }
  251.                 else{
  252.                     $newsl = new Newsletter();
  253.                     $newsl->setDate(new \DateTime());
  254.                     $newsl->setEmail($email);
  255.                     $entityManager->persist($newsl);
  256.                     $entityManager->flush();
  257.                     $response "OK";
  258.                 }
  259.             }
  260.         }
  261.         return new Response($response);
  262.     }
  263.     #[Route('/propos'name'propos')]
  264.     public function ProposAction(Request $request): Response
  265.     {
  266.         $session = new Session();
  267.         $panier = array();
  268.         if($session->get("panier")){
  269.             $panier $session->get("panier");
  270.         }
  271.         $n count($panier);
  272.     
  273.         return $this->render('frontoffice_bundle/propos/propos.html.twig', array("npanier"=>$n));
  274.     }
  275. }