src/Controller/App/AppController.php line 86

  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\Article;
  4. use App\Entity\Follower;
  5. use App\Entity\Prechild;
  6. use App\Form\FollowerType;
  7. use App\Service\BlogService;
  8. use App\Service\MailSender;
  9. use App\Security\EmailVerifier;
  10. use Symfony\Component\Mime\Address;
  11. use App\Repository\ArticleRepository;
  12. use App\Repository\CompanyRepository;
  13. use App\Repository\ProductRepository;
  14. use App\Repository\FollowerRepository;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. class AppController extends AbstractController
  23. {
  24.     public function __construct(private TranslatorInterface $translator, private EntityManagerInterface $em, private CompanyRepository $repo, private ProductRepository $prodRepo)
  25.     {
  26.     }
  27.     #[Route('/'name'app')]
  28.     public function index(Request $requestFollowerRepository $followerRepositoryBlogService $blog): Response
  29.     {
  30.         $follower = new Follower();
  31.         $form $this->createForm(FollowerType::class, $follower);
  32.         $form->handleRequest($request);
  33.         if ($form->isSubmitted() && $form->isValid()) {
  34.             $name explode("@"$follower->getEmail());
  35.             $follower->setFirstName($name[0])->setLastName($name[0]);
  36.             $followerRepository->add($followertrue);
  37.             $this->addFlash('success'$this->translator->trans('Merci de vous être abonné à notre newsletter !'));
  38.             return $this->redirectToRoute('app', [], Response::HTTP_SEE_OTHER);
  39.         }
  40.         return $this->render('front/home.html.twig', [
  41.             'controller_name' => 'AppController',
  42.             'products' => $this->prodRepo->findBy([], ['price' => 'ASC']),
  43.             'form' => $form->createView(),
  44.             'posts' => $blog->getPosts()
  45.         ]);
  46.     }
  47.     // #[Route('/blog', name: 'blog')]
  48.     // public function blog(ArticleRepository $articleRepository): Response
  49.     // {
  50.     //     $articles = $articleRepository->findAll();
  51.     //     return $this->render('front/blog.html.twig', [
  52.     //         'controller_name' => 'AppController',
  53.     //         'articles' => $articles
  54.     //     ]);
  55.     // }
  56.     // #[Route('/blog/{id}/read', name: 'app_article_read', methods: ['GET'])]
  57.     // public function read(Article $article, ArticleRepository $articleRepository): Response
  58.     // {
  59.     //     $article->setViews($article->getViews() + 1);
  60.     //     $articleRepository->add($article, true);
  61.     //     return $this->render('front/article.html.twig', [
  62.     //         'article' => $article,
  63.     //     ]);
  64.     // }
  65.     #[Route('/conditions'name'conditions')]
  66.     public function conditions()
  67.     {
  68.         return $this->render('front/conditions.html.twig', [
  69.             'controller_name' => 'FrontController',
  70.         ]);
  71.     }
  72.     #[Route('/faq'name'faq')]
  73.     public function faq()
  74.     {
  75.         return $this->render('front/faq.html.twig', [
  76.             'controller_name' => 'FrontController',
  77.         ]);
  78.     }
  79.     #[Route('/contact'name'contact')]
  80.     public function contact(Request $requestMailSender $mailSenderFollowerRepository $followerRepository)
  81.     {
  82.         $data = [
  83.             'name' => $request->request->get('name'),
  84.             'email' => $request->request->get('email'),
  85.             'subject' => $request->request->get('subject'),
  86.             'comments' => $request->request->get('comments'),
  87.         ];
  88.         $follower = new Follower();
  89.         $name explode(" "$request->request->get('name'));
  90.         $follower->setEmail($request->request->get('email'))->setFirstName($name[0])->setLastName($name[1]);
  91.         $followerRepository->add($followertrue);
  92.         // generate a signed url and email it to the user
  93.         $mailSender->sendFrontContactMessage($data);
  94.         $this->addFlash('success'$this->translator->trans('Votre message a été envoyé!!'));
  95.         return $this->redirectToRoute('app', [], Response::HTTP_SEE_OTHER);
  96.     }
  97.     #[Route('/online/registration/pdf/{id}'name'app_online_registration_show_pdf'methods: ['GET'])]
  98.     public function show_pdf(Request $requestPrechild $prechild): Response
  99.     {
  100.         $url $request->getSchemeAndHttpHost() . $this->generateUrl('app_online_registration_show_pdf', ['id' => $prechild->getId()]);
  101.         try {
  102.             $path_photo 'uploads/children/' $prechild->getPhoto();
  103.             $type pathinfo($path_photoPATHINFO_EXTENSION);
  104.             $data file_get_contents($path_photo);
  105.             $photo 'data:image/' $type ';base64,' base64_encode($data);
  106.         } catch (\Throwable $th) {
  107.             $photo 'data:image/png;base64,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';
  108.         }
  109.         try {
  110.             $path_logo 'uploads/companies/' $prechild->getOwner()->getLogo();
  111.             $type pathinfo($path_logoPATHINFO_EXTENSION);
  112.             $data file_get_contents($path_logo);
  113.             $logo 'data:image/' $type ';base64,' base64_encode($data);
  114.         } catch (\Throwable $th) {
  115.             $logo 'data:image/png;base64,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';
  116.         }
  117.         return $this->render('app/prechild/pdf.html.twig', [
  118.             'prechild' => $prechild,
  119.             'qrcode' => $url,
  120.             'photo' => $photo,
  121.             'logo' => $logo
  122.         ]);
  123.     }
  124.     #[Route('/app/about'name'app_about')]
  125.     public function about(): Response
  126.     {
  127.         return $this->render('app/about.html.twig', [
  128.             'controller_name' => 'Main page'
  129.         ]);
  130.     }
  131. }