src/Controller/DefaultController.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\UserDetails;
  5. use App\Entity\Survey;
  6. use App\Entity\Contact;
  7. use App\Form\SignupType;
  8. use App\Utils\Utils;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Doctrine\ORM\PersistentCollection;
  12. use Doctrine\DBAL\Connection;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  19. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  20. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  21. use Symfony\Component\Security\Http\Authentication\RememberMe;
  22. use Symfony\Component\Security\Core\User\UserInterface;
  23. use Symfony\Contracts\Translation\TranslatorInterface;
  24. use Swift_Mailer;
  25. class DefaultController extends AbstractController
  26. {
  27.     //private $fromEmail;
  28.     protected $mailer;
  29.     protected $translator;
  30.     protected $passwordHasher;
  31.     public function __construct(TranslatorInterface $translatorSwift_Mailer $mailerUserPasswordHasherInterface $passwordHasher)
  32.     {
  33.         $this->mailer $mailer;
  34.         $this->translator $translator;
  35.         $this->passwordHasher $passwordHasher;
  36.     }
  37.     /**
  38.      * @Route("/", name="homepage")
  39.      */
  40.     public function indexAction(Request $request)
  41.     {
  42.         return $this->render('default/index.html.twig', ['language' => $request->getLocale(),
  43.                     'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR]);
  44.     }
  45.     /**
  46.      * @Route("/faq", name="faq")
  47.      */
  48.     public function faqAction(Request $requestConnection $connUserInterface $user null, \Swift_Mailer $mailer)
  49.     {
  50.         $fromEmail $this->getParameter('mailer_from_user');
  51.         $contactType $request->query->get('type');
  52.         $msg "";
  53.         if (sizeof($request->request) > && $request->request->get('userid') == '' && $request->request->get('password') == '' && $request->request->get('checkme') == "online") {
  54.             $contact = new Contact();
  55.             $contact->init($user$conn);
  56.             $result $contact->addContactUsItem(array('reason' => $contactType,
  57.                 'first_name' => $request->request->get("firstName"),
  58.                 'last_name' => $request->request->get("lastName"),
  59.                 'company' => $request->request->get("organization"),
  60.                 'job_title' => $request->request->get("jobTitle"),
  61.                 'email' => $request->request->get("email"),
  62.                 'phone' => $request->request->get("phone"),
  63.                 'ext' => $request->request->get("ext"),
  64.                 'subject' => $request->request->get("subject"),
  65.                 'message' => $request->request->get("message")));
  66.             $message = (new \Swift_Message($this->translator->trans('gmaw') . " - " $this->translator->trans('nav-contact')))
  67.                     ->setFrom($fromEmail)
  68.                     ->setTo($fromEmail)
  69.                     ->setBody($this->renderView('default/contact-us-email.html.twig', ['form_topic' => $request->request->get('reason'),
  70.                         'form_first_name' => $request->request->get('firstName'),
  71.                         'form_last_name' => $request->request->get('lastName'),
  72.                         'form_organization' => $request->request->get('organization'),
  73.                         'form_job_title' => $request->request->get('jobTitle'),
  74.                         'form_email' => $request->request->get('email'),
  75.                         'form_phone_number' => $request->request->get('phone'),
  76.                         'form_ext' => $request->request->get('ext'),
  77.                         'form_subject' => $request->request->get('subject'),
  78.                         'form_message' => $request->request->get('message')]), 'text/html');
  79.             $this->mailer->send($message);
  80.             $msg "thanks";
  81.         }
  82.         return $this->render('default/faq.html.twig', ['type' => ($contactType $contactType 'choose'),
  83.                     'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  84.                     'msg' => $msg]);
  85.     }
  86.     /**
  87.      * @Route("/login", name="login")
  88.      */
  89.     public function loginAction(Request $requestAuthenticationUtils $authUtilsConnection $conn, \Swift_Mailer $mailerUserInterface $user null)
  90.     {
  91.         if ($conn != null && $user != null) {
  92.             return new RedirectResponse("/dashboard/home");
  93.         }
  94.         $fromEmail $this->getParameter('mailer_from_user');
  95.         $msg "";
  96.         if (sizeof($request->request) > 0) {
  97.             if ($request->request->get("forgot_password") != '') {
  98.                 $user = new User();
  99.                 $userDetails = new UserDetails();
  100.                 $userDetails->init($user$conn);
  101.                 $activation_hash $userDetails->getPasswordHashByEmailAddress($request->request->get("forgot_password"));
  102.                 if ($activation_hash !== false) {
  103.                     $message = (new \Swift_Message($this->translator->trans('reset-pw-email-sub')))
  104.                             ->setFrom($fromEmail)
  105.                             ->setTo($request->request->get("forgot_password"))
  106.                             ->setBody($this->renderView('default/reset-password-email.html.twig', array('activation_hash' => $activation_hash)), 'text/html');
  107.                     $this->mailer->send($message);
  108.                     $msg "passwordReset";
  109.                 } else {
  110.                     $msg "emailNotFound";
  111.                 }
  112.             } else {
  113.                 $msg "loginError";
  114.             }
  115.         }
  116.         return $this->render('default/login.html.twig', [
  117.                 'msg' => $msg,
  118.                 'error' => $authUtils->getLastAuthenticationError()
  119.             ]);
  120.     }
  121.     /**
  122.      * @Route("/forgot-password",  name="forgot_password")
  123.      */
  124.     public function forgotPassword(Request $requestAuthenticationUtils $authUtilsConnection $conn, \Swift_Mailer $mailerUserInterface $user null)
  125.     {
  126.         $locale $request->getLocale();
  127.         if ($locale == 'en') {
  128.             $fromEmail $this->getParameter('mailer_from_user');
  129.         } elseif ($locale == 'fr') {
  130.             $fromEmail $this->getParameter('mailer_from_user_fr');
  131.         } else {
  132.             $fromEmail $this->getParameter('mailer_from_user');
  133.         }
  134.         $msg "";
  135.         if (sizeof($request->request) > 0) {
  136.             if ($request->request->get("forgot_password") != '') {
  137.                 $user = new User();
  138.                 $userDetails = new UserDetails();
  139.                 $userDetails->init($user$conn);
  140.                 $activation_hash $userDetails->getPasswordHashByEmailAddress($request->request->get("forgot_password"));
  141.                 if ($activation_hash !== false) {
  142.                     $message = (new \Swift_Message($this->translator->trans('reset-pw-email-sub')))
  143.                             ->setFrom($fromEmail)
  144.                             ->setTo($request->request->get("forgot_password"))
  145.                             ->setBody($this->renderView('default/reset-password-email.html.twig', array('activation_hash' => $activation_hash)), 'text/html');
  146.                     $this->mailer->send($message);
  147.                     $msg "passwordReset";
  148.                 } else {
  149.                     $msg "emailNotFound";
  150.                 }
  151.             } else {
  152.                 $msg "loginError";
  153.             }
  154.         }
  155.         return $this->render('default/login.html.twig', ['msg' => $msg'error' => '']);
  156.     }
  157.     /**
  158.      * @Route("/login/reset/{activation_hash}", name="reset_password")
  159.      */
  160.     public function resetPassword(Request $requestConnection $conn$activation_hash false)
  161.     {
  162.         $user = new User();
  163.         $userDetails = new UserDetails();
  164.         $userDetails->init($user$conn);
  165.         if ($activation_hash) {
  166.             $user_id $userDetails->getUserIDByResetKey($activation_hash);
  167.             if ($user_id !== false) {
  168.                 if (sizeof($request->request) > 0) {
  169.                     $new_password $this->passwordHasher->hashPassword($user$request->request->get('password'));
  170.                     $userDetails->updatePassword($user_id$new_password);
  171.                     return $this->redirectToRoute('login');
  172.                 }
  173.                 return $this->render('default/reset-password-form.html.twig', ['activation_hash' => $activation_hash]);
  174.             } else {
  175.                 return $this->redirectToRoute('login');
  176.             }
  177.         } else {
  178.             return $this->redirectToRoute('homepage');
  179.         }
  180.     }
  181.     public function changeLanguageAction(Request $request)
  182.     {
  183.         return new RedirectResponse($request->headers->get('referer'));
  184.     }
  185.     /**
  186.      * @Route("/resources", name="resources")
  187.      */
  188.     public function resourcesAction(Request $request)
  189.     {
  190.         if (sizeof($request->request) > 0) {
  191.             $selected_files $request->get('resources');
  192.             $zip = new \ZipArchive();
  193.             $zipName "resources" time() . ".zip";
  194.             $zip->open($zipName, \ZipArchive::CREATE);
  195.             foreach ($selected_files as $file) {
  196.                 $zip->addFromString($filefile_get_contents("../web/assets/pdfs/" . (($request->getLocale() == 'fr') ? 'fre/' '') . $file));
  197.             }
  198.             $zip->close();
  199.             $response = new Response(file_get_contents($zipName));
  200.             $response->headers->set('Content-Type''application/zip');
  201.             $response->headers->set('Content-Disposition''attachment;filename="' $zipName '"');
  202.             $response->headers->set('Content-length'filesize($zipName));
  203.             unlink('../web/' $zipName);
  204.             return $response;
  205.         }
  206.         return $this->render('default/resources.html.twig');
  207.     }
  208.     /**
  209.      * @Route("/terms", name="terms")
  210.      */
  211.     public function termsAction(Request $request)
  212.     {
  213.         return $this->render('default/terms.html.twig');
  214.     }
  215.     /**
  216.      * @Route("/contact-us", name="contact_us")
  217.      */
  218.     public function contactUsAction(Request $requestConnection $conn, \Swift_Mailer $mailer)
  219.     {
  220.         $fromEmail $this->getParameter('mailer_from_user');
  221.         $toEmail $this->getParameter('mailer_contact_us_to');
  222.         $subjectOfEmail "MHCC-Paramedic - Contact Us - " $request->getLocale();
  223.         $msg "";
  224.         $reason "Contact us comment";
  225.         //Userid, password, checkme fields are here to handle spam.
  226.         if (sizeof($request->request) > && $request->request->get('userid') == '' && $request->request->get('password') == '' && $request->request->get('checkme') == "online") {
  227.             $contact = new Contact();
  228.             $contact->init(false$conn);
  229.             $result $contact->addContactUsItem(array('reason' => $reason,
  230.                 'first_name' => $request->request->get("firstName"),
  231.                 'last_name' => $request->request->get("lastName"),
  232.                 'job_title' => $request->request->get("jobTitle"),
  233.                 'email' => $request->request->get("emailContactUs"),
  234.                 'phone' => $request->request->get("phoneContactUs"),
  235.                 'subject' => $request->request->get("subjectContactUs"),
  236.                 'message' => $request->request->get("messageContactUs")));
  237.             $message = (new \Swift_Message($subjectOfEmail))
  238.                     ->setFrom($fromEmail)
  239.                     ->setTo($toEmail//  $fromEmail
  240.                     ->setBody($this->renderView('default/contact-us-email.html.twig', ['form_topic' => $request->request->get('reason'),
  241.                         'form_first_name' => $request->request->get('firstName'),
  242.                         'form_last_name' => $request->request->get('lastName'),
  243.                         'form_job_title' => $request->request->get('jobTitle'),
  244.                         'form_email' => $request->request->get('emailContactUs'),
  245.                         'form_phone_number' => $request->request->get('phoneContactUs'),
  246.                         'form_subject' => $request->request->get('subjectContactUs'),
  247.                         'form_message' => $request->request->get('messageContactUs')]), 'text/html');
  248.             try {
  249.                 $this->mailer->send($message);
  250.             } catch (Exception $ex) {
  251.                 $msg $ex->getMessage();
  252.             }
  253.             $msg "sent";
  254.         }
  255.         return $this->render('default/contact-us.html.twig', ['base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  256.                     'msg' => $msg]);
  257.     }
  258. }