src/Controller/IndexController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Manager\FacebookManager;
  4. use App\Repository\CityRepository;
  5. use App\Repository\CustomerRepository;
  6. use App\Repository\PrayerRepository;
  7. use App\Repository\PrayingRepository;
  8. use App\Repository\PageRepository;
  9. use App\Service\StatutService;
  10. use Exception;
  11. use Facebook\Exceptions\FacebookSDKException;
  12. use Knp\Component\Pager\PaginatorInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Serializer\Exception\ExceptionInterface;
  19. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  20. use Symfony\Component\Serializer\SerializerInterface;
  21. class IndexController extends AbstractController
  22. {
  23.     /**
  24.      * @Route("/", name="index")
  25.      */
  26.     public function index(
  27.         PrayerRepository    $prayerRepository,
  28.         CustomerRepository  $customerRepository,
  29.         CityRepository      $cityRepository,
  30.         PrayingRepository   $prayingRepository,
  31.         NormalizerInterface $normalizer,
  32.         FacebookManager     $facebookManager
  33.     ): Response
  34.     {
  35.         $stat = [
  36.             'cities' => $normalizer->normalize($cityRepository->findAll(), 'json'),
  37.             'prayingCities' => $customerRepository->getCity(true),
  38.             'prayers' => $prayerRepository->findBy(['status' => StatutService::PUBLISHED_VALUE]),
  39.             'religious' => $prayingRepository->findBy([]),
  40.         ];
  41.         try {
  42.             $postsFb $facebookManager->getPosts()->getDecodedBody();
  43.         } catch (FacebookSDKException $e) {
  44.             $postsFb null;
  45.         }
  46.         return $this->render('public/index.html.twig', [
  47.             'lastPrayers' => $prayerRepository->getLastPrayer(),
  48.             'stat' => $stat,
  49.             'postsFb' => $postsFb
  50.         ]);
  51.     }
  52.     /**
  53.      * @Route("/prayer", name="prayer")
  54.      */
  55.     public function prayer(CustomerRepository $customerRepositoryRequest $requestPaginatorInterface $paginatorPrayerRepository $prayerRepository): Response
  56.     {
  57.         $prayerId $request->query->get('id'null);
  58.         $prayer null;
  59.         if ($prayerId) {
  60.             $prayer $prayerRepository->findOneBy(['id' => $prayerId]);
  61.         }
  62.         $validatedAtQuery $request->query->get('validatedat');
  63.         /** @var array<int|string,mixed> $searchQueries */
  64.         $searchQueries $request->query->get('prayer') ?: [];
  65.         $searchQueries array_merge(['subject' => '''city' => ''], $searchQueries, ['validatedAt' => $validatedAtQuery]);
  66.         $prayers $paginator->paginate(
  67.             $prayerRepository->findBySearchQueries($searchQueries),
  68.             $request->query->getInt('page'1),
  69.             6
  70.         );
  71.         return $this->render('public/prayer.html.twig', [
  72.             'prayers' => $prayers,
  73.             'searchQueries' => $searchQueries,
  74.             'cities' => $customerRepository->getCity(),
  75.             'prayer' => $prayer
  76.         ]);
  77.     }
  78.     /**
  79.      * @Route("/city", name="city")
  80.      */
  81.     public function list(CityRepository $cityRepositoryPaginatorInterface $paginatorRequest $requestNormalizerInterface $normalizer): Response
  82.     {
  83.         $cities $normalizer->normalize($cityRepository->findAll(), 'json');
  84.         $cityPaginate $paginator->paginate(
  85.             $cities,
  86.             $request->query->getInt('page'1),
  87.             6
  88.         );
  89.         return $this->render('public/city.html.twig', [
  90.             'cities' => $cityPaginate
  91.         ]);
  92.     }
  93.     /**
  94.      * @Route("/praying-users", name="praying_users")
  95.      */
  96.     public function prayingUsers(Request $requestCustomerRepository $customerRepositorySerializerInterface $serializer): JsonResponse
  97.     {
  98.         $customers $serializer->serialize($customerRepository->getPrayings(), 'json', ['groups' => 'customer:read']);
  99.         return new JsonResponse($customersResponse::HTTP_OK, [], true);
  100.     }
  101.     /**
  102.      * @Route("/search-form", name="search_form")
  103.      */
  104.     public function searchForm(Request $request): Response
  105.     {
  106.         /** @var array<mixed,mixed> $searchQueries */
  107.         $searchQueries $request->query->get('prayer') ?: [];
  108.         $searchQueries array_merge(['subject' => '''city' => ''], $searchQueries);
  109.         return $this->render('public/component/_search_form.html.twig', [
  110.             'searchQueries' => $searchQueries,
  111.         ]);
  112.     }
  113.     /**
  114.      * @Route("/who-are-we", name="who_are_we")
  115.      */
  116.     public function whoAreWe(PageRepository $repository): Response
  117.     {
  118.         $type "who-are-we" ;
  119.         $page $repository->findOneBy(['type' => $type]);
  120.         if (!$page){
  121.             throw $this->createNotFoundException('Page not found');
  122.         }
  123.         
  124.         return $this->render('public/qui_sommes_nous.html.twig',[
  125.             'page' => $page
  126.         ]);
  127.     }
  128.     /**
  129.      * @Route("/condition-general", name="condition-gle")
  130.      */
  131.     public function conditionGle(): Response
  132.     {
  133.         return $this->render('public/condition_gle.html.twig');
  134.     }
  135. // recuperation des publications dans un page facebook vers cette plateforme
  136. //    public function facebookPostList(FacebookManager $facebookManager): array
  137. //    {
  138. //        return $facebookManager->getPosts()->getDecodedBody();
  139. //    }
  140. }