src/Controller/AboutController.php line 67

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Entity\UserDetails;
  5. use App\Utils\Utils;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Doctrine\DBAL\Connection;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Doctrine\ORM\PersistentCollection;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  17. use App\Utils\ResultGenerator;
  18. use Symfony\Component\HttpFoundation\Session\Session;
  19. use Symfony\Component\Translation\Translator;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. use Swift_Mailer;
  22. /**
  23.  * About controller.
  24.  *
  25.  * @Route("about")
  26.  */
  27. class AboutController extends AbstractController
  28. {
  29.     //private $fromEmail    = "inquiries@guardingmindsatwork.ca";
  30.     //private $mailHost     = "localhost";
  31.     //private $mailUser     = "test@guardingmindsatwork.ca";
  32.     //private $mailPassword = "qg3bvia8";
  33.     protected $translator;
  34.     protected $mailer;
  35.     protected $passwordHasher;
  36.     public function __construct(TranslatorInterface $translatorSwift_Mailer $mailerUserPasswordHasherInterface $passwordHasher)
  37.     {
  38.         $this->translator $translator;
  39.         $this->mailer $mailer;
  40.         $this->passwordHasher $passwordHasher;
  41.     }
  42.     /**
  43.      * @Route("/about", name="about")
  44.      */
  45.     public function aboutAction(Request $request)
  46.     {
  47.         return $this->render('about/about.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  48.                                                         'language' => $request->getLocale() ]);
  49.     }
  50.     /**
  51.      * @Route("/about-safety", name="about_safety")
  52.      */
  53.     public function whatsafetyAction(Request $request)
  54.     {
  55.         return $this->render('about/safety-what.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  56.                                                               'language' => $request->getLocale() ]);
  57.     }
  58.     /**
  59.      * @Route("/about-psychosocial-factors", name="about_factors")
  60.      */
  61.     public function aboutFactorsAction(Request $request)
  62.     {
  63.         return $this->render('about/1-psychosocial-factors.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR ]);
  64.     }
  65.     /**
  66.      * @Route("/about-needs", name="about_needs")
  67.      */
  68.     public function aboutNeedsAction(Request $request)
  69.     {
  70.         return $this->render('about/2-identify-needs.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  71.                                                                    'language' => $request->getLocale() ]);
  72.     }
  73.     /**
  74.      * @Route("/about-resources", name="about_resources")
  75.      */
  76.     public function aboutResourcesAction(Request $request)
  77.     {
  78.         return $this->render('about/3-determine-resources.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  79.                                                                         'language' => $request->getLocale() ]);
  80.     }
  81.     /**
  82.      * @Route("/about-participants", name="about_participants")
  83.      */
  84.     public function aboutParticipantsAction(Request $request)
  85.     {
  86.         return $this->render('about/4-identify-participants.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  87.                                                                           'language' => $request->getLocale() ]);
  88.     }
  89.     /**
  90.      * @Route("/about-plan", name="about_plan")
  91.      */
  92.     public function aboutPlanAction(Request $request)
  93.     {
  94.         return $this->render('about/5-create-plan.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  95.                                                                 'language' => $request->getLocale() ]);
  96.     }
  97.     /**
  98.      * @Route("/about-signup", name="about_signup")
  99.      * @param Request $request
  100.      * @return \Symfony\Component\HttpFoundation\Response
  101.      */
  102.     public function signupAction(Request $requestConnection $connSessionInterface $session)
  103.     {
  104.         $user = new User();
  105.         $userDetails = new UserDetails();
  106.         $userDetails->init($user$conn);
  107.         $utils = new Utils();
  108.         $utils->init($user$conn);
  109.         $msg "";
  110.         if (sizeof($request->request) > 0) {
  111.             if ($request->request->get('emailAddress') != '' && $userDetails->getActivcationIDByEmailAddress($request->request->get('emailAddress')) === false) {
  112.                 // encode the user password
  113.                 $password $this->passwordHasher->hashPassword($user$request->request->get('password'));
  114.                 $user->setPassword($password);
  115.                 $user->setUserName($request->request->get('emailAddress'));
  116.                 $user->setRole("ROLE_USER");
  117.                 $activation_id uniqid(rand());
  118.                 $user->setActivationId($activation_id);
  119.                 $user->setLanguageId($userDetails->getLanguageId($request->getLocale()));
  120.                 // save the user
  121.                 $em $this->getDoctrine()->getManager();
  122.                 $em->persist($user);
  123.                 $em->flush();
  124.                 $userInfoArr = array( 'user_id'         => $user->getUserId(),
  125.                                       'first_name'      => $request->request->get('firstName'),
  126.                                       'last_name'       => $request->request->get('lastName'),
  127.                                       'personal_title'  => $request->request->get('personalTitle'),
  128.                                       'job_title'       => $request->request->get('jobTitle'),
  129.                                       'department'      => $request->request->get('department'),
  130.                                       'phone_number'    => $request->request->get('phoneNumber'),
  131.                                       'street_address'  => $request->request->get('address'),
  132.                                       'city_name'       => $request->request->get('city'),
  133.                                       'province'        => $request->request->get('province'),
  134.                                       'postal_code'     => $request->request->get('postalCode'),
  135.                                       'iso_country'     => $request->request->get('country'),
  136.                                       'allow_share_data' => $request->request->get('termsAccepted') ? 0);
  137.                 $companyInfoArr = array( 'user_id'             => $user->getUserId(),
  138.                                          'company_name'        => $request->request->get('organization'),
  139.                                          'employees_in_org'    => $request->request->get('employeesInOrg'),
  140.                                          'org_type'            => $request->request->get('orgType'),
  141.                                          'sector'              => $request->request->get('sector'),
  142.                                          'union_status'        => $request->request->get('unionStatus'),
  143.                                          'company_category_id' => $request->request->get('companyCategoryId') );
  144.                 $userDetails->addUserDetails($userInfoArr$companyInfoArr);
  145.                 $session = new Session();
  146.                 $session->set('signup_email_address'$request->request->get('emailAddress'));
  147.                 return $this->redirectToRoute('about_signup_thankyou');
  148.             } else {
  149.                 $msg "emailAlreadyExists";
  150.             }
  151.         }
  152.         $countries $userDetails->getCountryData($userDetails->getLanguageId($request->getLocale()));
  153.         $provinces $userDetails->getProvinceData($userDetails->getLanguageId($request->getLocale()));
  154.         $companyCategory $userDetails->getCompanyCategory($userDetails->getLanguageId($request->getLocale()));
  155.         return $this->render('about/6-signup.html.twig', [ 'countries'    => $countries,
  156.                                                            'provinces'    => $provinces,
  157.                                                            'company_cat'  => $companyCategory,
  158.                                                            'base_dir'     => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  159.                                                            'msg'          => $msg ]);
  160.     }
  161.     /**
  162.      * @Route("/about-signup-thankyou", name="about_signup_thankyou")
  163.      * @param Request $request
  164.      * @return \Symfony\Component\HttpFoundation\Response
  165.      */
  166.     public function aboutSignUpThankYou(Request $requestSessionInterface $sessionConnection $conn, \Swift_Mailer $mailer)
  167.     {
  168.         $session = new Session();
  169.         $signup_email_address $session->get('signup_email_address');
  170.         if ($signup_email_address != '') {
  171.             $session->set('signup_email_address''');
  172.             $user = new User();
  173.             $userDetails = new UserDetails();
  174.             $userDetails->init($user$conn);
  175.             $activation_code $userDetails->getActivcationIDByEmailAddress($signup_email_address);
  176.             // MAYBE USED FOR GETTING CONTAINER INFO?
  177.             //$transport = $this->container()->get('swiftmailer.transport.real');
  178.             $fromEmail $this->getParameter('mailer_from_user');
  179.             $message = (new \Swift_Message($this->translator->trans('email-confirm-email-address')))
  180.                         ->setFrom($fromEmail)
  181.                         ->setTo($signup_email_address)
  182.                         ->setBody(
  183.                             $this->renderView(
  184.                                 'about/10-activation-email.html.twig',
  185.                                 array( 'activation_code' => $activation_code)
  186.                             ),
  187.                             'text/html'
  188.                         );
  189.             $this->mailer->send($message);
  190.             return $this->render('about/9-about-signup-thankyou.html.twig', [ 'signup_email_address' => $signup_email_address ]);
  191.         } else {
  192.             return $this->redirectToRoute('about_signup');
  193.         }
  194.     }
  195.     /**
  196.      * @Route("/about-signup-activation/{activation_code}", name="about_signup_activation")
  197.      * @param Request $request
  198.      * @return \Symfony\Component\HttpFoundation\Response
  199.      */
  200.     public function aboutSignUpActivation($activation_codeConnection $conn, \Swift_Mailer $mailer)
  201.     {
  202.         $user = new User();
  203.         $userDetails = new UserDetails();
  204.         $userDetails->init($user$conn);
  205.         if ($activation_code != '') {
  206.             $activated_email $userDetails->activateUser($activation_code);
  207.             if ($activated_email != "") {
  208.                 $fromEmail $this->getParameter('mailer_from_user');
  209.                 $message = (new \Swift_Message($this->translator->trans('email-welcome-chw')) )
  210.                             ->setFrom($fromEmail)
  211.                             ->setTo($activated_email)
  212.                             ->setBody(
  213.                                 $this->renderView(
  214.                                     'about/11-activation-confirmed-email.html.twig',
  215.                                     array( 'email' => $activated_email)
  216.                                 ),
  217.                                 'text/html'
  218.                             );
  219.                 $this->mailer->send($message);
  220.             } else {
  221.                 return $this->redirectToRoute('login');
  222.             }
  223.         }
  224.         return $this->render('default/login.html.twig', [ 'msg' => 'accountActivated' ]);
  225.     }
  226.     /**
  227.      * @Route("/about-results", name="about_results")
  228.      */
  229.     public function aboutResultsAction(Request $request)
  230.     {
  231.         return $this->render('about/7-track-results.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  232.                                                                   'language' => $request->getLocale() ]);
  233.     }
  234.     /**
  235.      * @Route("/about-evaluate", name="about_evaluate")
  236.      */
  237.     public function aboutEvaluateAction(Request $request)
  238.     {
  239.         return $this->render('about/8-evaluate.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  240.                                                              'language' => $request->getLocale() ]);
  241.     }
  242.       /**
  243.      * @Route("/about-review", name="about_review")
  244.      */
  245.     public function aboutReview(Request $request)
  246.     {
  247.         return $this->render('about/review.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  248.                                                              'language' => $request->getLocale() ]);
  249.     }
  250.       /**
  251.      * @Route("/about-steps", name="about_steps")
  252.      */
  253.     public function aboutSteps(Request $request)
  254.     {
  255.         return $this->render('about/about-steps.html.twig', [ 'base_dir' => realpath($this->getParameter('kernel.project_dir')) . DIRECTORY_SEPARATOR,
  256.                                                              'language' => $request->getLocale() ]);
  257.     }
  258. }