src/Controller/DefaultController.php line 281

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 $passwordEncoder;
  31.     public function __construct(TranslatorInterface $translatorSwift_Mailer $mailerUserPasswordHasherInterface $passwordEncoder)
  32.     {
  33.         $this->mailer $mailer;
  34.         $this->translator $translator;
  35.         $this->passwordEncoder $passwordEncoder;
  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.         $locale $request->getLocale();
  51.         if ($locale == 'en') {
  52.             $fromEmail $this->getParameter('locale');
  53.         } elseif ($locale == 'fr') {
  54.             $fromEmail $this->getParameter('mailer_from_user_fr');
  55.         } else {
  56.             $fromEmail $this->getParameter('mailer_from_user');
  57.         }
  58.         $contactType $request->query->get('type');
  59.         $msg "";
  60.         if (sizeof($request->request) > && $request->request->get('userid') == '' && $request->request->get('password') == '' && $request->request->get('checkme') == "online") {
  61.             $contact = new Contact();
  62.             $contact->init($user$conn);
  63.             $result $contact->addContactUsItem(array('reason' => $contactType,
  64.                 'first_name' => $request->request->get("firstName"),
  65.                 'last_name' => $request->request->get("lastName"),
  66.                 'company' => $request->request->get("organization"),
  67.                 'job_title' => $request->request->get("jobTitle"),
  68.                 'email' => $request->request->get("email"),
  69.                 'phone' => $request->request->get("phone"),
  70.                 'ext' => $request->request->get("ext"),
  71.                 'subject' => $request->request->get("subject"),
  72.                 'message' => $request->request->get("message")));
  73.             $message = (new \Swift_Message($this->translator->trans('gmaw') . " - " $this->translator->trans('nav-contact')))
  74.                     ->setFrom($fromEmail)
  75.                     ->setTo($fromEmail)
  76.                     ->setBody($this->renderView('default/contact-us-email.html.twig', ['form_topic' => $request->request->get('reason'),
  77.                         'form_first_name' => $request->request->get('firstName'),
  78.                         'form_last_name' => $request->request->get('lastName'),
  79.                         'form_organization' => $request->request->get('organization'),
  80.                         'form_job_title' => $request->request->get('jobTitle'),
  81.                         'form_email' => $request->request->get('email'),
  82.                         'form_phone_number' => $request->request->get('phone'),
  83.                         'form_ext' => $request->request->get('ext'),
  84.                         'form_subject' => $request->request->get('subject'),
  85.                         'form_message' => $request->request->get('message')]), 'text/html');
  86.             $this->mailer->send($message);
  87.             $msg "thanks";
  88.         }
  89.         return $this->render('default/faq.html.twig', ['type' => ($contactType $contactType 'choose'),
  90.                     'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  91.                     'msg' => $msg]);
  92.     }
  93.     /**
  94.      * @Route("/login", name="login")
  95.      */
  96.     public function loginAction(Request $requestAuthenticationUtils $authUtilsConnection $conn, \Swift_Mailer $mailerUserInterface $user null)
  97.     {
  98.         if ($conn != null && $user != null) {
  99.             return new RedirectResponse("/dashboard/home");
  100.         }
  101.         $locale $request->getLocale();
  102.         if ($locale == 'en') {
  103.             $fromEmail $this->getParameter('mailer_from_user');
  104.         } elseif ($locale == 'fr') {
  105.             $fromEmail $this->getParameter('mailer_from_user_fr');
  106.         } else {
  107.             $fromEmail $this->getParameter('mailer_from_user');
  108.         }
  109.         $msg "";
  110.         if (sizeof($request->request) > 0) {
  111.             if ($request->request->get("forgot_password") != '') {
  112.                 $user = new User();
  113.                 $userDetails = new UserDetails();
  114.                 $userDetails->init($user$conn);
  115.                 $activation_hash $userDetails->getPasswordHashByEmailAddress($request->request->get("forgot_password"));
  116.                 if ($activation_hash !== false) {
  117.                     $message = (new \Swift_Message($this->translator->trans('reset-pw-email-sub')))
  118.                             ->setFrom($fromEmail)
  119.                             ->setTo($request->request->get("forgot_password"))
  120.                             ->setBody($this->renderView('default/reset-password-email.html.twig', array('activation_hash' => $activation_hash)), 'text/html');
  121.                     $this->mailer->send($message);
  122.                     $msg "passwordReset";
  123.                 } else {
  124.                     $msg "emailNotFound";
  125.                 }
  126.             } else {
  127.                 $msg "loginError";
  128.             }
  129.         }
  130.         return $this->render('default/login.html.twig', [
  131.                             'msg' => $msg,
  132.                             'error' => $authUtils->getLastAuthenticationError()
  133.                         ]);
  134.     }
  135.     /**
  136.      * @Route("/logout")
  137.      */
  138.     public function logout()
  139.     {
  140.         throw new \Exception('logout() should never be reached');
  141.     }
  142.     /**
  143.      * @Route("/forgot-password",  name="forgot_password")
  144.      */
  145.     public function forgotPassword(Request $requestAuthenticationUtils $authUtilsConnection $conn, \Swift_Mailer $mailerUserInterface $user null)
  146.     {
  147.         $locale $request->getLocale();
  148.         if ($locale == 'en') {
  149.             $fromEmail $this->getParameter('mailer_from_user');
  150.         } elseif ($locale == 'fr') {
  151.             $fromEmail $this->getParameter('mailer_from_user_fr');
  152.         } else {
  153.             $fromEmail $this->getParameter('mailer_from_user');
  154.         }
  155.         $msg "";
  156.         if (sizeof($request->request) > 0) {
  157.             if ($request->request->get("forgot_password") != '') {
  158.                 $user = new User();
  159.                 $userDetails = new UserDetails();
  160.                 $userDetails->init($user$conn);
  161.                 $activation_hash $userDetails->getPasswordHashByEmailAddress($request->request->get("forgot_password"));
  162.                 if ($activation_hash !== false) {
  163.                     $message = (new \Swift_Message($this->translator->trans('reset-pw-email-sub')))
  164.                             ->setFrom($fromEmail)
  165.                             ->setTo($request->request->get("forgot_password"))
  166.                             ->setBody($this->renderView('default/reset-password-email.html.twig', array('activation_hash' => $activation_hash)), 'text/html');
  167.                     $this->mailer->send($message);
  168.                     $msg "passwordReset";
  169.                 } else {
  170.                     $msg "emailNotFound";
  171.                 }
  172.             } else {
  173.                 $msg "loginError";
  174.             }
  175.         }
  176.         return $this->render('default/login.html.twig', ['msg' => $msg'error' => '']);
  177.     }
  178.     /**
  179.      * @Route("/login/reset/{activation_hash}", name="reset_password")
  180.      */
  181.     public function resetPassword(Request $requestConnection $conn$activation_hash false)
  182.     {
  183.         $user = new User();
  184.         $userDetails = new UserDetails();
  185.         $userDetails->init($user$conn);
  186.         if ($activation_hash) {
  187.             $user_id $userDetails->getUserIDByResetKey($activation_hash);
  188.             if ($user_id !== false) {
  189.                 if (sizeof($request->request) > 0) {
  190.                     $new_password $this->passwordEncoder->hashPassword($user$request->request->get('password'));
  191.                     $userDetails->updatePassword($user_id$new_password);
  192.                     return $this->redirectToRoute('login');
  193.                 }
  194.                 return $this->render('default/reset-password-form.html.twig', ['activation_hash' => $activation_hash]);
  195.             } else {
  196.                 return $this->redirectToRoute('login');
  197.             }
  198.         } else {
  199.             return $this->redirectToRoute('homepage');
  200.         }
  201.     }
  202.     public function changeLanguageAction(Request $request)
  203.     {
  204.         return new RedirectResponse($request->headers->get('referer'));
  205.     }
  206.     /**
  207.      * @Route("/resources", name="resources")
  208.      */
  209.     public function resourcesAction(Request $request)
  210.     {
  211.         if (sizeof($request->request) > 0) {
  212.             $selected_files $request->get('resources');
  213.             $zip = new \ZipArchive();
  214.             $zipName "resources" time() . ".zip";
  215.             $zip->open($zipName, \ZipArchive::CREATE);
  216.             foreach ($selected_files as $file) {
  217.                 $zip->addFromString($filefile_get_contents("../web/assets/pdfs/" . (($request->getLocale() == 'fr') ? 'fre/' '') . $file));
  218.             }
  219.             $zip->close();
  220.             $response = new Response(file_get_contents($zipName));
  221.             $response->headers->set('Content-Type''application/zip');
  222.             $response->headers->set('Content-Disposition''attachment;filename="' $zipName '"');
  223.             $response->headers->set('Content-length'filesize($zipName));
  224.             unlink('../web/' $zipName);
  225.             return $response;
  226.         }
  227.         return $this->render('default/resources.html.twig');
  228.     }
  229.     /**
  230.      * @Route("/terms", name="terms")
  231.      */
  232.     public function termsAction(Request $request)
  233.     {
  234.         return $this->render('default/terms.html.twig');
  235.     }
  236.     /**
  237.      * @Route("/contact-us", name="contact_us")
  238.      */
  239.     public function contactUsAction(Request $requestConnection $conn, \Swift_Mailer $mailer)
  240.     {
  241.         $locale $request->getLocale();
  242.         if ($locale == 'en') {
  243.             $fromEmail $this->getParameter('mailer_from_user');
  244.         } elseif ($locale == 'fr') {
  245.             $fromEmail $this->getParameter('mailer_from_user_fr');
  246.         } else {
  247.             $fromEmail $this->getParameter('mailer_from_user');
  248.         }
  249.         $toEmail $this->getParameter('mailer_contact_us_to');
  250.         $subjectOfEmail "MHCC-healthcare - Contact Us - " $request->getLocale();
  251.         $msg "";
  252.         $reason "Contact us comment";
  253.         if (sizeof($request->request) > 0) {
  254.             /**Spam Filter checking starts*/
  255.             if ($request->request->get('userid') == '' && $request->request->get('password') == '' && $request->request->get('checkme') == "online") {
  256.                 //This not a spam
  257.             } else {
  258.                 //This is a spam
  259.                 //Die here no further execution for spam
  260.                 die();
  261.             }
  262.             /**Spam Filter Checking ends */
  263.             $contact = new Contact();
  264.             $contact->init(false$conn);
  265.             $result $contact->addContactUsItem(array('reason' => $reason,
  266.                 'first_name' => $request->request->get("firstName"),
  267.                 'last_name' => $request->request->get("lastName"),
  268.                 'job_title' => $request->request->get("jobTitle"),
  269.                 'email' => $request->request->get("emailContactUs"),
  270.                 'phone' => $request->request->get("phoneContactUs"),
  271.                 'subject' => $request->request->get("subjectContactUs"),
  272.                 'message' => $request->request->get("messageContactUs")));
  273.             $message = (new \Swift_Message($subjectOfEmail))
  274.                     ->setFrom($fromEmail)
  275.                     ->setTo($toEmail//  $fromEmail
  276.                     ->setBody($this->renderView('default/contact-us-email.html.twig', ['form_topic' => $request->request->get('reason'),
  277.                         'form_first_name' => $request->request->get('firstName'),
  278.                         'form_last_name' => $request->request->get('lastName'),
  279.                         'form_job_title' => $request->request->get('jobTitle'),
  280.                         'form_organization' => 'N/A',
  281.                         'form_ext' => 'N/A',
  282.                         'form_email' => $request->request->get('emailContactUs'),
  283.                         'form_phone_number' => $request->request->get('phoneContactUs'),
  284.                         'form_subject' => $request->request->get('subjectContactUs'),
  285.                         'form_message' => $request->request->get('messageContactUs')]), 'text/html');
  286.             try {
  287.                 $this->mailer->send($message);
  288.             } catch (Exception $ex) {
  289.                 $msg $ex->getMessage();
  290.             }
  291.             $msg "sent";
  292.         }
  293.         return $this->render('default/contact-us.html.twig', ['base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  294.                     'msg' => $msg]);
  295.     }
  296. }