src/Controller/HomeController.php line 44

  1. <?php
  2. namespace App\Controller;
  3. use App\Service\MailerService;
  4. use App\Service\ThemeDataService;
  5. use App\Service\ThemeHelper;
  6. use App\Service\ThemeService;
  7. use Knp\Snappy\Pdf;
  8. use setasign\Fpdi\PdfReader\PdfReaderException;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Tomsgu\PdfMerger\Exception\FileNotFoundException;
  16. use Tomsgu\PdfMerger\Exception\InvalidArgumentException;
  17. class HomeController extends AbstractController
  18. {
  19.     private ThemeHelper $themeHelper;
  20.     public function __construct(ThemeHelper $themeHelper)
  21.     {
  22.         $this->themeHelper $themeHelper;
  23.     }
  24.     /**
  25.      * @return Response
  26.      */
  27.     #[Route('/'name'homepage')]
  28.     public function index(): Response
  29.     {
  30.         return $this->render('home/index.html.twig');
  31.     }
  32.     /**
  33.      * @return Response
  34.      */
  35.     #[Route('/a-propos'name'about')]
  36.     public function about(): Response
  37.     {
  38.         return $this->render('about.html.twig');
  39.     }
  40.     /**
  41.      * @param ThemeDataService $themeDataService
  42.      * @return Response
  43.      */
  44.     #[Route('/comprendre-les-bases-de-la-numerologie'name'numbers')]
  45.     public function numbers(ThemeDataService $themeDataService): Response
  46.     {
  47.         $numbersData $themeDataService::GENERAL_DATA_NUMBERS;
  48.         $expressionNumbersData $themeDataService::EXPRESSION_NUMBERS_DATA;
  49.         $classicNumbersData array_slice($numbersData09true);
  50.         $masterNumbersData array_slice($numbersData93true);
  51.         return $this->render('numbers/index.html.twig', [
  52.             'classicNumbersData' => $classicNumbersData,
  53.             'masterNumbersData' => $masterNumbersData,
  54.             'expressionNumbersData' => $expressionNumbersData
  55.         ]);
  56.     }
  57.     /**
  58.      * @param $number
  59.      * @param ThemeDataService $themeDataService
  60.      * @return Response
  61.      */
  62.     #[Route('/comprendre-les-nombres/le-nombre-{number}'name'number')]
  63.     public function number($numberThemeDataService $themeDataService): Response
  64.     {
  65.         if (!in_array($numberThemeService::NUMBERS) && !in_array($numberThemeService::MASTER_NUMBERS)) {
  66.             return $this->redirectToRoute('numbers');
  67.         }
  68.         $numberData $themeDataService::GENERAL_DATA_NUMBERS[$number];
  69.         $numbersData $themeDataService::GENERAL_DATA_NUMBERS;
  70.         $expressionNumbersData $themeDataService::EXPRESSION_NUMBERS_DATA;
  71.         return $this->render('numbers/detail.html.twig', [
  72.             'number' => $number,
  73.             'numbersData' => $numbersData,
  74.             'numberData' => $numberData,
  75.             'expressionNumbersData' => $expressionNumbersData
  76.         ]);
  77.     }
  78.     /**
  79.      * @return Response
  80.      */
  81.     #[Route('/calculer-mon-theme-numerologique'name'test')]
  82.     public function test(): Response
  83.     {
  84.         return $this->render('test/index.html.twig');
  85.     }
  86.     /**
  87.      * @param Request $request
  88.      * @param MailerService $mailerService
  89.      * @return Response
  90.      */
  91.     #[Route('/contactez-nous'name'contact')]
  92.     public function contact(Request $requestMailerService $mailerService): Response
  93.     {
  94.         if ($request->request->get('email') && $request->request->get('subject') && $request->request->get('message')) {
  95.             $email $request->request->get('email');
  96.             $subject $request->request->get('subject');
  97.             $message $request->request->get('message');
  98.             $mailerService->sendContactMail($request$email$subject$message);
  99.         }
  100.         return $this->render('contact.html.twig');
  101.     }
  102.     /**
  103.      * @return Response
  104.      */
  105.     #[Route('/mentions-legales'name'legales')]
  106.     public function legales(): Response
  107.     {
  108.         return $this->render('legales.html.twig');
  109.     }
  110.     /**
  111.      * @return Response
  112.      */
  113.     #[Route('/politique-de-confidentialite'name'confidentiality')]
  114.     public function confidentiality(): Response
  115.     {
  116.         return $this->render('confidentiality.html.twig');
  117.     }
  118.     /**
  119.      * @return Response
  120.      */
  121.     #[Route('/conditions-générales-de-vente'name'cgv')]
  122.     public function cgv(): Response
  123.     {
  124.         return $this->render('cgv.html.twig');
  125.     }
  126.     /**
  127.      * @param Request $request
  128.      * @param ThemeService $themeService
  129.      * @param ThemeDataService $themeDataService
  130.      * @param Pdf $snappyPdf
  131.      * @return Response
  132.      */
  133.     #[Route('/mon-theme-numerologique'name'testResults')]
  134.     public function testResults(Request $requestThemeService $themeServiceThemeDataService $themeDataServiceMailerService $mailerServiceMailerInterface $mailer): Response
  135.     {
  136.         $firstnames trim($request->request->get('firstnames'));
  137.         $names trim($request->request->get('names'));
  138.         $birthdate trim($request->request->get('birthdate'));
  139.         if ($firstnames == null || $firstnames == '' || $names == null || $names == '' || $birthdate == null) {
  140.             $this->addFlash('warning'"Remplissez tous les champs correctement");
  141.             return $this->redirectToRoute('test');
  142.         }
  143.         $session $request->getSession();
  144.         $session->set("firstnames"$firstnames);
  145.         $session->set("names"$names);
  146.         $session->set("birthdate"$birthdate);
  147.         $theme $this->themeHelper->getTheme($themeService$request->request->get('firstnames'), $request->request->get('names'), $request->request->get('birthdate'));
  148.         $dataForTheme $this->themeHelper->provideDataFromThemeDataService($themeDataService);
  149.         $pairing $themeService->getPairing($theme['lifePathNumber']['result_number'], $theme['expressionNumber']['result_number']);
  150.         $numbersToLetters $themeService::NUMBERS_TO_LETTERS;
  151.         $userData = [
  152.             "firstnames" => $request->getSession()->get("firstnames"),
  153.             "names" => $request->getSession()->get("names"),
  154.             "birthdate" => $request->getSession()->get("birthdate")
  155.         ];
  156.         $mailerService->notifyAdminThemeGenerated($mailer$userDatafalse);
  157.         return $this->render('test/results.html.twig', [
  158.             'userData' => $userData,
  159.             'pairing' => $pairing,
  160.             'theme' => $theme,
  161.             'numbersToLetters' => $numbersToLetters,
  162.             'numbersData' => $dataForTheme["numbersData"],
  163.             'lifePathData' => $dataForTheme["lifePathData"],
  164.             'karmicDebts' => $dataForTheme["karmicDebts"],
  165.             'expressionData' => $dataForTheme["expressionData"],
  166.             'activeNumberData' => $dataForTheme["activeNumberData"],
  167.             'hereditaryNumberData' => $dataForTheme["hereditaryNumberData"],
  168.             'keyNumberData' => $dataForTheme["keyNumberData"],
  169.             'lifeDynamicNumberData' => $dataForTheme["lifeDynamicNumberData"],
  170.             'intimateNumberData' => $dataForTheme["intimateNumberData"],
  171.             'birthdayNumberData' => $dataForTheme["birthdayNumberData"],
  172.             'personalYearNumberData' => $dataForTheme["personalYearNumberData"],
  173.             'strengthsWeaknessesNumberData' => $dataForTheme["strengthsWeaknessesNumberData"],
  174.             'cosmicNumberData' => $dataForTheme["cosmicNumberData"],
  175.             'eccentricityNumberData' => $dataForTheme["eccentricityNumberData"],
  176.             'realisationNumberData' => $dataForTheme["realisationNumberData"],
  177.             'lifeTableData' => $dataForTheme["lifeTableData"],
  178.         ]);
  179.     }
  180.     /**
  181.      * @param Request $request
  182.      * @param Pdf $snappyPdf
  183.      * @param ThemeService $themeService
  184.      * @param ThemeDataService $themeDataService
  185.      * @return BinaryFileResponse
  186.      * @throws FileNotFoundException
  187.      * @throws InvalidArgumentException
  188.      * @throws PdfReaderException
  189.      */
  190.     #[Route('/download/theme'name'download_theme')]
  191.     public function downloadTheme(Request $request,Pdf $snappyPdfThemeService $themeServiceThemeDataService $themeDataService): BinaryFileResponse
  192.     {
  193.         $id crypt($request->getSession()->get("firstnames") . $request->getSession()->get("names") . $request->getSession()->get("birthdate"), "Blowfish");
  194.         $theme $this->themeHelper->getTheme($themeService$request->getSession()->get("firstnames"), $request->getSession()->get("names"), $request->getSession()->get("birthdate"));
  195.         $dataForTheme $this->themeHelper->provideDataFromThemeDataService($themeDataService);
  196.         $pairing $themeService->getPairing($theme['lifePathNumber']['result_number'], $theme['expressionNumber']['result_number']);
  197.         $userData = [
  198.             "firstnames" => $request->getSession()->get("firstnames"),
  199.             "names" => $request->getSession()->get("names"),
  200.             "birthdate" => $request->getSession()->get("birthdate")
  201.         ];
  202.         $numbersToLetters $themeService::NUMBERS_TO_LETTERS;
  203.         return $this->themeHelper->generateThemePDF($snappyPdf$userData$numbersToLetters$pairing$dataForTheme$theme$idfalse'Thème Numérologique.pdf');
  204. //        $this->themeHelper->mergePdfWithCover($id, false);
  205. //        $file = $this->themeHelper->getThemeFile($id, false);
  206.         return $this->themeHelper->prepareResponseWithThemeFileAsAttachment($pdfFilefalse);
  207.     }
  208.     /**
  209.      * @param Request $request
  210.      * @param Pdf $snappyPdf
  211.      * @param ThemeService $themeService
  212.      * @param ThemeDataService $themeDataService
  213.      * @return BinaryFileResponse
  214.      */
  215.     #[Route('/download/theme_premium'name'download_theme_premium')]
  216.     public function downloadThemePremium(Request $requestPdf $snappyPdfThemeService $themeServiceThemeDataService $themeDataService): mixed
  217.     {
  218.         //trying to retrieve session object for security check
  219.         $checkSession $this->themeHelper->retrieveStripeSession($request->getSession()->get("stripe_session"));
  220.         if ($checkSession["status_code"] !== 200 || $checkSession['data'] === null || $checkSession['data']['payment_status'] !== 'paid') {
  221. //           throw new NotFoundHttpException($checkSession['message']);
  222.             $this->addFlash('warning'"Vous n'êtes pas autorisé à accéder à cette page.");
  223.             return $this->redirectToRoute('homepage');
  224.         }
  225.         $id crypt($request->getSession()->get("firstnames") . $request->getSession()->get("names") . $request->getSession()->get("birthdate"), "Blowfish");
  226.         $file $this->themeHelper->getThemeFile($idtrue);
  227.         return $this->themeHelper->prepareResponseWithThemeFileAsAttachment($filetrue);
  228.     }
  229.     #[Route('/testtemplate'name'testtemplate')]
  230.     public function testtemplate(Request $requestPdf $snappyPdfThemeService $themeServiceThemeDataService $themeDataService): Response
  231.     {
  232.         $id crypt($request->getSession()->get("firstnames") . $request->getSession()->get("names") . $request->getSession()->get("birthdate"), "Blowfish");
  233.         $file $this->getParameter('kernel.project_dir') . '/public/themes_pdf/' $id '.pdf';
  234.         $theme $themeService->generateTheme($request->getSession()->get("firstnames"), $request->getSession()->get("names"), $request->getSession()->get("birthdate"));
  235.         $numbersData $themeDataService::GENERAL_DATA_NUMBERS;
  236.         $karmicDebts $themeDataService::KARMIC_DEBT_DATA;
  237.         $lifePathData $themeDataService::LIFE_PATH_DATA_NUMBERS;
  238.         $expressionData $themeDataService::EXPRESSION_NUMBERS_DATA;
  239.         $activeNumberData $themeDataService::ACTIVE_NUMBERS_DATA;
  240.         $hereditaryNumberData $themeDataService::HEREDITARY_NUMBERS_DATA;
  241.         $keyNumberData $themeDataService::KEY_NUMBERS_DATA;
  242.         $lifeDynamicNumberData $themeDataService::LIFE_DYNAMIC_NUMBERS_DATA;
  243.         $intimateNumberData $themeDataService::INTIMATE_NUMBERS_DATA;
  244.         $personalYearNumberData $themeDataService::PERSONAL_YEAR_NUMBERS_DATA;
  245.         $birthdayNumberData $themeDataService::BIRTHDAY_NUMBERS_DATA;
  246.         $strengthsWeaknessesNumberData $themeDataService::STRENGTHS_WEAKNESSES_NUMBERS_DATA;
  247.         $cosmicNumberData $themeDataService::COSMIC_NUMBERS_DATA;
  248.         $eccentricityNumberData $themeDataService::ECCENTRICITY_NUMBERS_DATA;
  249.         $realisationNumberData $themeDataService::REALISATION_NUMBERS_DATA;
  250.         $lifeTableData $themeDataService::LIFE_TABLE_NUMBERS_DATA;
  251.         return $this->render(
  252.             'theme_generation/theme_template.html.twig',
  253.             array(
  254.                 'userData' => [
  255.                     'firstNames' => $request->getSession()->get("firstnames"),
  256.                     'lastNames' => $request->getSession()->get("names"),
  257.                     'birthDate' => $request->getSession()->get("birthdate")],
  258.                 'pairing' => $themeService->getPairing($theme['lifePathNumber']['result_number'], $theme['expressionNumber']['result_number']),
  259.                 'theme' => $theme,
  260.                 'numbersToLetters' => $themeService::NUMBERS_TO_LETTERS,
  261.                 'numbersData' => $numbersData,
  262.                 'lifePathData' => $lifePathData,
  263.                 'karmicDebts' => $karmicDebts,
  264.                 'expressionData' => $expressionData,
  265.                 'activeNumberData' => $activeNumberData,
  266.                 'hereditaryNumberData' => $hereditaryNumberData,
  267.                 'keyNumberData' => $keyNumberData,
  268.                 'lifeDynamicNumberData' => $lifeDynamicNumberData,
  269.                 'intimateNumberData' => $intimateNumberData,
  270.                 'birthdayNumberData' => $birthdayNumberData,
  271.                 'personalYearNumberData' => $personalYearNumberData,
  272.                 'strengthsWeaknessesNumberData' => $strengthsWeaknessesNumberData,
  273.                 'cosmicNumberData' => $cosmicNumberData,
  274.                 'eccentricityNumberData' => $eccentricityNumberData,
  275.                 'realisationNumberData' => $realisationNumberData,
  276.                 'lifeTableData' => $lifeTableData
  277.             )
  278.         );
  279.     }
  280. }