src/Controller/SignUpController.php line 57

  1. <?php
  2. namespace App\Controller;
  3. use App\Classes\ASAuthUtility;
  4. use App\Classes\ASUtility;
  5. use App\Classes\ConfigurationUtility;
  6. use App\Classes\WorkersUtility;
  7. use App\Entity\Configurations;
  8. use App\Entity\WorkerPaymentInformations;
  9. use App\Entity\MobileProviders;
  10. use App\Entity\Workers;
  11. use App\Entity\States;
  12. use App\Entity\Users;
  13. use App\Entity\ConferenceWorkers;
  14. use App\Entity\ConferenceWorkerSchools;
  15. use App\Entity\RegistrationSettings;
  16. use App\Entity\UrlSource;
  17. use App\Repository\WorkersRepository;
  18. use Doctrine\ORM\EntityManagerInterface;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  23. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  24. /**
  25.  * @Route("/signup")
  26.  */
  27. class SignUpController extends AbstractController
  28. {
  29.     private $encoder;
  30.     private $asUtility;
  31.     private $entityManager;
  32.     private $workersUtility;
  33.     private $asAuthUtility;
  34.     public function __construct(
  35.         EntityManagerInterface $entityManager,
  36.         WorkersUtility $workersUtility,
  37.         ASUtility $aSUtility,
  38.         UserPasswordHasherInterface $encoder,
  39.         ASAuthUtility $asAuthUtility
  40.     ) {
  41.         $this->encoder $encoder;
  42.         $this->asUtility $aSUtility;
  43.         $this->entityManager $entityManager;
  44.         $this->workersUtility $workersUtility;
  45.         $this->asAuthUtility $asAuthUtility;
  46.     }
  47.     /**
  48.      * @return Response
  49.      * @param Request $request
  50.      * @Route("/", name="registration_index", methods={"GET"})
  51.      */
  52.     public function registrationIndex()
  53.     {
  54.         $aStates $this->entityManager->getRepository(States::class)->findBy(array(), array('value' => 'ASC'));
  55.         $aMobileProviders $this->entityManager->getRepository(MobileProviders::class)
  56.                                  ->findBy(array(), array('name' => 'ASC'));
  57.         $recaptchaPubKey $this->entityManager->getRepository(Configurations::class)
  58.                                 ->findByCode(Configurations::CONF_GOOGLE_RECAPTCHA_PUBLIC_KEY);
  59.         return $this->render('sign_up/registration_index.html.twig', array(
  60.             'aStates' => $aStates,
  61.             'aMobileProviders' => $aMobileProviders,
  62.             'recaptchaPubKey' => $recaptchaPubKey
  63.         ));
  64.     }
  65.     /**
  66.      * @return Response
  67.      * @param Request $request
  68.      * @Route("/lsa4tuew", name="load_schools_available_4_those_using_ew", methods={"GET"})
  69.      */
  70.     public function loadSchoolsAvailable4ThoseUsingEW(Request $request)
  71.     {
  72.         // Schools available for selection are those using Event Workers.
  73.         $server ConfigurationUtility::getServerName();
  74.         $state $request->query->get('state');
  75.         $schools $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(array(
  76.             "state" => $state,
  77.             "server" => $server
  78.         ));
  79.         $response = [];
  80.         foreach ($schools as $data) {
  81.             $school $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(
  82.                 array(
  83.                     "server" => $server,
  84.                     "conference_id" => $data['conference_id'],
  85.                     'school_info' => $data['school_info']
  86.                 )
  87.             );
  88.             if (array_key_exists('0'$school)) {
  89.                 foreach ($school as $val) {
  90.                     $response[] = [
  91.                         'conference_id' => $val['conference_id'],
  92.                         'conference_name' => $val['conference_name'],
  93.                         'school_info' => $val['school_info'],
  94.                         'school_name' => $val['school_name']
  95.                     ];
  96.                     if (is_array($val['lower_schools']) && count($val['lower_schools']) > 0) {
  97.                         foreach ($val['lower_schools'] as $lower_school) {
  98.                             $response[] = [
  99.                                 'conference_id' => $val['conference_id'],
  100.                                 'conference_name' => $val['conference_name'],
  101.                                 'school_info' => $lower_school['school_info'],
  102.                                 'school_name' => $lower_school['school_name']
  103.                             ];
  104.                         }
  105.                     }
  106.                 }
  107.             }
  108.         }
  109.         return $this->json($response);
  110.     }
  111.     /**
  112.      * @return Response
  113.      * @param Request $request
  114.      * @Route("/lsa4tuews", name="load_schools_available_4_those_using_ew_search", methods={"GET"})
  115.      */
  116.     public function loadSchoolsAvailable4ThoseUsingEWSearch(Request $request)
  117.     {
  118.         $server ConfigurationUtility::getServerName();
  119.         $schoolInfo $request->query->get('school_info');
  120.         $conferenceId $request->query->get('conference_id');
  121.         $response $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(array(
  122.             "school_info" => $schoolInfo,
  123.             "conference_id" => $conferenceId,
  124.             "server" => $server
  125.         ));
  126.         return $this->json($response);
  127.     }
  128.     /**
  129.      * @return Response
  130.      * @param Request $request
  131.      * @Route("/confirmation", name="registration_confirmation", methods={"GET"})
  132.      */
  133.     public function registrationConfirmation()
  134.     {
  135.         return $this->render('sign_up/registration_confirmation.html.twig');
  136.     }
  137.     /**
  138.      * @param Request $request
  139.      * @return Response
  140.      * @Route("/check", name="registration_check", methods={"GET"})
  141.      */
  142.     public function checkIfExist(Request $requestWorkersRepository $workersRepository)
  143.     {
  144.         $email $request->query->get('email');
  145.         $response false;
  146.         $objWorkersRepository $workersRepository->findOneBy(array("email" => $email));
  147.         if ($objWorkersRepository) {
  148.             $response true;
  149.         }
  150.         return $this->json($response);
  151.     }
  152.     /**
  153.      * @Route("/save", name="registration_save", methods={"POST"})
  154.      */
  155.     public function registrationSave(Request $requestWorkersRepository $workersRepository)
  156.     {
  157.         $workerInfo $request->request->all('worker_info');
  158.         $objEntityManager $this->entityManager;
  159.         $objUser = new Users();
  160.         $objUser->setPassword($this->encoder->hashPassword($objUser$workerInfo['password']));
  161.         $objUser->setUsername($workerInfo['email']);
  162.         //saving users login cred....
  163.         $objEntityManager->persist($objUser);
  164.         $objEntityManager->flush();
  165.         $objWorker = new Workers();
  166.         $objWorker->setUserId($objUser->getId());
  167.         $objWorker->setFirstName(trim($workerInfo['first_name']));
  168.         $objWorker->setLastName(trim($workerInfo['last_name']));
  169.         $objWorker->setEmail(trim($workerInfo['email']));
  170.         $objWorker->setMobilePhone(trim($workerInfo['mobile_phone']));
  171.         $objWorker->setMobileProvider(intVal($workerInfo['mobile_provider_phone']));
  172.         $objWorker->setAddress1(trim($workerInfo['address1']));
  173.         $objWorker->setCity(trim($workerInfo['city']));
  174.         $objWorker->setState(trim($workerInfo['state']));
  175.         $objWorker->setZip(trim($workerInfo['zip']));
  176.         $objWorker->setWorkerType(intVal($workerInfo['worker_type']));
  177.         //saving workers info....
  178.         $objEntityManager->persist($objWorker);
  179.         $objEntityManager->flush();
  180.         $workerId $objWorker->getId();
  181.         $workerFirstName $objWorker->getFirstName();
  182.         $workerLastName $objWorker->getLastName();
  183.         $workerEmail $objWorker->getEmail();
  184.         $workerFullName $workerFirstName ' ' $workerLastName;
  185.         if ($workerId 0) {
  186.             $isWorkOtherSchools 1;
  187.             $objConferenceWorker = new ConferenceWorkers();
  188.             $objConferenceWorker->setConferenceId($workerInfo["conference_id"]);
  189.             $objConferenceWorker->setWorkerId($workerId);
  190.             $objConferenceWorker->setIsWorkOtherSchools($isWorkOtherSchools);
  191.             //saving conference workers info....
  192.             $objEntityManager->persist($objConferenceWorker);
  193.             $objEntityManager->flush();
  194.             $conferenceWorkerId $objConferenceWorker->getId();
  195.             if ($conferenceWorkerId 0) {
  196.                 $objConferenceWorkerSchools = new ConferenceWorkerSchools();
  197.                 $objConferenceWorkerSchools = ($objConferenceWorkerSchools) ?
  198.                                                 $objConferenceWorkerSchools : new ConferenceWorkerSchools();
  199.                 $objConferenceWorkerSchools->setConferenceWorkerId($conferenceWorkerId);
  200.                 $objConferenceWorkerSchools->setSchoolId($workerInfo["school_id"]);
  201.                 $objConferenceWorkerSchools->setSchoolName($workerInfo["school_name"]);
  202.                 $objConferenceWorkerSchools->setStatus(Workers::PENDING_STATUS);
  203.                 //saving conference worker schools
  204.                 $objEntityManager->persist($objConferenceWorkerSchools);
  205.                 $objEntityManager->flush();
  206.             }
  207.             $adminContactInfoName '';
  208.             $adminContactInfoEmail '';
  209.             $objRegistrationSettings = new RegistrationSettings();
  210.             $objRegistrationSettings $this->entityManager
  211.                                             ->getRepository(RegistrationSettings::class)->findOneBy(array(
  212.                                                 "conference_id" => $workerInfo["conference_id"],
  213.                                                 "school_id" => $workerInfo["school_id"]
  214.                                             ));
  215.             if ($objRegistrationSettings) {
  216.                 $registrationOptions unserialize($objRegistrationSettings->getOptions());
  217.                 if (
  218.                     isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
  219.                     && trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
  220.                 ) {
  221.                     $adminContactInfoName trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME']);
  222.                 }
  223.                 if (
  224.                     isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
  225.                     && trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
  226.                 ) {
  227.                     $adminContactInfoEmail trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL']);
  228.                 }
  229.             }
  230.             if ($adminContactInfoName && $adminContactInfoEmail) {
  231.                 // send email notification to admin
  232.                 $details = [
  233.                     'email_subject' => 'Event Workers Registration from ' $workerFullName,
  234.                     'email_to' => $adminContactInfoEmail,
  235.                     'worker_name' => $workerFullName,
  236.                     'worker_id' => $workerId,
  237.                     'savable' => true,
  238.                 ];
  239.                 $target_url ConfigurationUtility::getBaseUrl()
  240.                                 . '/workers/edit?id=' $conferenceWorkerId '&viewMode=2';
  241.                 $objUrlSource = new UrlSource();
  242.                 $UrlSourceParams = array(
  243.                     "email" => $adminContactInfoEmail,
  244.                     "conference_id" => $workerInfo["conference_id"],
  245.                     "school_id" => 0,
  246.                     "conference_workerid" => $conferenceWorkerId,
  247.                     "target_url" => $target_url
  248.                 );
  249.                 $objEntityManager $this->entityManager;
  250.                 $objUrlSource->setParameters(serialize($UrlSourceParams));
  251.                 //saving UrlSource....
  252.                 $objEntityManager->persist($objUrlSource);
  253.                 $objEntityManager->flush();
  254.                 $urlsource_id $objUrlSource->getId();
  255.                 $urlsource_link ConfigurationUtility::getBaseUrl() . '/public/usv?id=' $urlsource_id;
  256.                 $body $this->renderView(
  257.                     'sign_up/email/email_registration.html.twig',
  258.                     [
  259.                         'admin' => $adminContactInfoName,
  260.                         'worker_name' => $workerFullName,
  261.                         'worker_id' => $workerId,
  262.                         'url' => $urlsource_link,
  263.                         'from' => 'rEvent Workers Team',
  264.                         'logo' => ConfigurationUtility::getRSchoolLogo()
  265.                     ]
  266.                 );
  267.                 $this->workersUtility->email($details$body);
  268.             }
  269.             //send email to CC
  270.             $adminContactInfoName '';
  271.             $adminContactInfoEmail '';
  272.             $objRegistrationSettings = new RegistrationSettings();
  273.             $objRegistrationSettings $this->entityManager
  274.                                             ->getRepository(RegistrationSettings::class)->findOneBy(array(
  275.                                                 "conference_id" => $workerInfo["conference_id"],
  276.                                                 "school_id" => 0
  277.                                             ));
  278.             if ($objRegistrationSettings) {
  279.                 $registrationOptions unserialize($objRegistrationSettings->getOptions());
  280.                 if (
  281.                     isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
  282.                     && trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
  283.                 ) {
  284.                     $adminContactInfoName trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME']);
  285.                 }
  286.                 if (
  287.                     isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
  288.                     && trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
  289.                 ) {
  290.                     $adminContactInfoEmail trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL']);
  291.                 }
  292.             }
  293.             if ($adminContactInfoName && $adminContactInfoEmail) {
  294.                 $details = [
  295.                     'email_subject' => 'Event Workers Registration from ' $workerFullName,
  296.                     'email_to' => $adminContactInfoEmail,
  297.                     'worker_name' => $workerFullName,
  298.                     'worker_id' => $workerId,
  299.                     'savable' => true,
  300.                 ];
  301.                 $target_url ConfigurationUtility::getBaseUrl()
  302.                                 . '/workers/edit?id=' $conferenceWorkerId '&viewMode=2';
  303.                 $objUrlSource = new UrlSource();
  304.                 $UrlSourceParams = array(
  305.                     "email" => $adminContactInfoEmail,
  306.                     "conference_id" => $workerInfo["conference_id"],
  307.                     "school_id" => 0,
  308.                     "conference_workerid" => $conferenceWorkerId,
  309.                     "target_url" => $target_url
  310.                 );
  311.                 $objEntityManager $this->entityManager;
  312.                 $objUrlSource->setParameters(serialize($UrlSourceParams));
  313.                 //saving UrlSource....
  314.                 $objEntityManager->persist($objUrlSource);
  315.                 $objEntityManager->flush();
  316.                 $urlsource_id $objUrlSource->getId();
  317.                 $urlsource_link ConfigurationUtility::getBaseUrl() . '/public/usv?id=' $urlsource_id;
  318.                 $body $this->renderView(
  319.                     'sign_up/email/email_registration.html.twig',
  320.                     [
  321.                         'admin' => $adminContactInfoName,
  322.                         'worker_name' => $workerFullName,
  323.                         'worker_id' => $workerId,
  324.                         'url' => $urlsource_link,
  325.                         'from' => 'rEvent Workers Team',
  326.                         'logo' => ConfigurationUtility::getRSchoolLogo()
  327.                     ]
  328.                 );
  329.                 $this->workersUtility->email($details$body);
  330.             }
  331.         }
  332.         return $this->redirectToRoute("registration_confirmation");
  333.     }
  334. }