src/Controller/Front/HomeController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Entity\Annonce;
  4. use App\Entity\Product;
  5. use App\Form\AnnonceType;
  6. use App\Repository\AvisRepository;
  7. use App\Repository\PackRepository;
  8. use App\Repository\UserRepository;
  9. use App\Repository\SliderRepository;
  10. use App\Repository\AnnonceRepository;
  11. use App\Repository\ArticleRepository;
  12. use App\Repository\CommandRepository;
  13. use App\Repository\ProductRepository;
  14. use App\Repository\CategoryRepository;
  15. use App\Repository\PageHomeRepository;
  16. use App\Repository\DepartmentRepository;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use App\Repository\SubCategoryRepository;
  19. use App\Repository\AnnonceCompanyRepository;
  20. use App\Services\Filter;
  21. use FontLib\Table\Type\name;
  22. use Symfony\Component\HttpFoundation\Request;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  26. class HomeController extends AbstractController
  27. {
  28.     /**
  29.      * @Route("/", name="front_home")
  30.      */
  31.     public function home(
  32.         AvisRepository $avisRepository,
  33.         ProductRepository $productRepository,
  34.         CommandRepository $commandRepository,
  35.         ArticleRepository $articleRepository,
  36.         AnnonceRepository $annonceRepository,
  37.         DepartmentRepository $departmentRepository,
  38.         EntityManagerInterface $em,
  39.         PageHomeRepository $pageHomeRepository,
  40.         PackRepository $packRepository,
  41.         CategoryRepository $categoryRepository,
  42.         SliderRepository $sliderRepository,
  43.         SubCategoryRepository $subCategoryRepository,
  44.         UserRepository $userRepository,
  45.         AnnonceCompanyRepository $annnonceCompanyRepo,
  46.         Request $request,
  47.         Filter $filter
  48.     ) {
  49.         // $filter->retour_caution();
  50.         $annoncestous $annonceRepository->findAll();
  51.         $annonces $annonceRepository->findAllAnnonceaccuil();
  52.         $annonceprest $annnonceCompanyRepo->findAllPrestAnnonceaccuil();
  53.         $annoncepresttous $annnonceCompanyRepo->findAll();
  54.         $products $productRepository->findAllProducts();
  55.         $arrayDepartments 0;
  56.         $usercon null;
  57.         $annonce = new Annonce();
  58.         // $productss = $em->getRepository(Product::class)->findAll();
  59.         $productss $productRepository->findBy([], ['id' => 'DESC'], 6);
  60.         if ($this->getUser()) {
  61.             $connUser $this->getUser()->getEmail();
  62.             $usercon $userRepository->findOneBy(['email' => $connUser]);
  63.         }
  64.         foreach ($products as $product) {
  65.             $arrayDepartments $arrayDepartments count($product->getDepartments());
  66.         }
  67.         $lastAvis $avisRepository->getLastAvis();
  68.         $slider $sliderRepository->find(1);
  69.         $imagesSlider = [];
  70.         if ($slider) {
  71.             if ($slider->getImage1()) {
  72.                 $imagesSlider[] = $slider->getImage1();
  73.             }
  74.             if ($slider->getImage2()) {
  75.                 $imagesSlider[] = $slider->getImage2();
  76.             }
  77.             if ($slider->getImage3()) {
  78.                 $imagesSlider[] = $slider->getImage3();
  79.             }
  80.         }
  81.         $categories $categoryRepository->findBy([], ['id' => 'DESC']);
  82.         $categoriesData = [];
  83.         foreach ($categories as $category) {
  84.             $categoryData = [
  85.                 'categories' => $category,
  86.                 'subCategoriesData' => [],
  87.             ];
  88.             $subCategories $category->getSubCategories();
  89.             foreach ($subCategories as $subCategory) {
  90.                 $productsCount $subCategory->getProducts()->filter(function($product) {
  91.                     return !$product->getIsDesactivatedByAdmin();
  92.                 })->count();
  93.                 $categoryData['subCategoriesData'][] = [
  94.                     'subCategories' => $subCategory,
  95.                     'productsCount' => $productsCount,
  96.                 ];
  97.             }
  98.             $categoriesData[] = $categoryData;
  99.         }
  100.         $form $this->createForm(AnnonceType::class, $annonce);
  101.         $form->handleRequest($request);
  102.         if ($form->isSubmitted() && $form->isValid()) {
  103.             $annonce->setTitre($annonce->getTitre());
  104.             $annonce->setCategorys($annonce->getCategorys());
  105.             $annonce->setDescription($annonce->getDescription());
  106.             $annonce->setUsers($usercon);
  107.             $annonce->setCreatedAt(new \DateTime());
  108.             $em->persist($annonce);
  109.             $em->flush();
  110.         }
  111.         $subCategories $subCategoryRepository->findAll();
  112.         return $this->render('front/index.html.twig', [
  113.             'productsCount' => count($products),
  114.             'commandsCount' => $commandRepository->count([]),
  115.             'departmentsCount' => $arrayDepartments,
  116.             'products' => $products,
  117.             'articles' => $articleRepository->getLastArticles(),
  118.             'departments' => $departmentRepository->getDepartmentsIfProduct(),
  119.             'lastAvis' => $lastAvis,
  120.             'pagesHome' => $pageHomeRepository->findAll(),
  121.             'packsFormule' => $packRepository->findBy(['isActivate' => true'category' => 'Formule'], ['id' => 'DESC']),
  122.             'packsLuneMiel' => $packRepository->findBy(['isActivate' => true'category' => 'Lune de miel'], ['id' => 'DESC']),
  123.             'categoriesData' => $categoriesData,
  124.             'categories' => $categoryRepository->findBy([], ['id' => 'DESC']),
  125.             'subCategories' => $subCategories,
  126.             'sliders' => $imagesSlider,
  127.             'connectedUser' => $usercon,
  128.             'formAnnonce' => $form->createView(),
  129.             'annonces' => $annonces,
  130.             'annonce_prests' => $annonceprest,
  131.             'clients' => $annoncestous,
  132.             'prestataires' => $annoncepresttous,
  133.             'productss' => $productss
  134.         ]);
  135.     }
  136.     /**
  137.      * @Route("/change-search-category", name="front_search_category")
  138.      */
  139.     public function changeCategory(Request $requestSubCategoryRepository $subCategoryRepositoryCategoryRepository $categoryRepository)
  140.     {
  141.         if ($request->get('data')) {
  142.             $data json_decode($request->get('data'));
  143.             $category $categoryRepository->find($data->idCategory);
  144.             if ($category) {
  145.                 $subCategories $subCategoryRepository->findByCategory($category);
  146.             } else {
  147.                 $subCategories $subCategoryRepository->findAll();
  148.             }
  149.             return $this->json([
  150.                 'response' => 'ok',
  151.                 'categories' => $this->render('front/html/selectSearch.html.twig', ['categories' => $subCategories])
  152.             ]);
  153.         }
  154.     }
  155. }