src/Controller/SignUpController.php line 57
<?php
namespace App\Controller;
use App\Classes\ASAuthUtility;
use App\Classes\ASUtility;
use App\Classes\ConfigurationUtility;
use App\Classes\WorkersUtility;
use App\Entity\Configurations;
use App\Entity\WorkerPaymentInformations;
use App\Entity\MobileProviders;
use App\Entity\Workers;
use App\Entity\States;
use App\Entity\Users;
use App\Entity\ConferenceWorkers;
use App\Entity\ConferenceWorkerSchools;
use App\Entity\RegistrationSettings;
use App\Entity\UrlSource;
use App\Repository\WorkersRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
/**
* @Route("/signup")
*/
class SignUpController extends AbstractController
{
private $encoder;
private $asUtility;
private $entityManager;
private $workersUtility;
private $asAuthUtility;
public function __construct(
EntityManagerInterface $entityManager,
WorkersUtility $workersUtility,
ASUtility $aSUtility,
UserPasswordHasherInterface $encoder,
ASAuthUtility $asAuthUtility
) {
$this->encoder = $encoder;
$this->asUtility = $aSUtility;
$this->entityManager = $entityManager;
$this->workersUtility = $workersUtility;
$this->asAuthUtility = $asAuthUtility;
}
/**
* @return Response
* @param Request $request
* @Route("/", name="registration_index", methods={"GET"})
*/
public function registrationIndex()
{
$aStates = $this->entityManager->getRepository(States::class)->findBy(array(), array('value' => 'ASC'));
$aMobileProviders = $this->entityManager->getRepository(MobileProviders::class)
->findBy(array(), array('name' => 'ASC'));
$recaptchaPubKey = $this->entityManager->getRepository(Configurations::class)
->findByCode(Configurations::CONF_GOOGLE_RECAPTCHA_PUBLIC_KEY);
return $this->render('sign_up/registration_index.html.twig', array(
'aStates' => $aStates,
'aMobileProviders' => $aMobileProviders,
'recaptchaPubKey' => $recaptchaPubKey
));
}
/**
* @return Response
* @param Request $request
* @Route("/lsa4tuew", name="load_schools_available_4_those_using_ew", methods={"GET"})
*/
public function loadSchoolsAvailable4ThoseUsingEW(Request $request)
{
// Schools available for selection are those using Event Workers.
$server = ConfigurationUtility::getServerName();
$state = $request->query->get('state');
$schools = $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(array(
"state" => $state,
"server" => $server
));
$response = [];
foreach ($schools as $data) {
$school = $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(
array(
"server" => $server,
"conference_id" => $data['conference_id'],
'school_info' => $data['school_info']
)
);
if (array_key_exists('0', $school)) {
foreach ($school as $val) {
$response[] = [
'conference_id' => $val['conference_id'],
'conference_name' => $val['conference_name'],
'school_info' => $val['school_info'],
'school_name' => $val['school_name']
];
if (is_array($val['lower_schools']) && count($val['lower_schools']) > 0) {
foreach ($val['lower_schools'] as $lower_school) {
$response[] = [
'conference_id' => $val['conference_id'],
'conference_name' => $val['conference_name'],
'school_info' => $lower_school['school_info'],
'school_name' => $lower_school['school_name']
];
}
}
}
}
}
return $this->json($response);
}
/**
* @return Response
* @param Request $request
* @Route("/lsa4tuews", name="load_schools_available_4_those_using_ew_search", methods={"GET"})
*/
public function loadSchoolsAvailable4ThoseUsingEWSearch(Request $request)
{
$server = ConfigurationUtility::getServerName();
$schoolInfo = $request->query->get('school_info');
$conferenceId = $request->query->get('conference_id');
$response = $this->asUtility->fetchSchoolsAvailable4ThoseUsingEW(array(
"school_info" => $schoolInfo,
"conference_id" => $conferenceId,
"server" => $server
));
return $this->json($response);
}
/**
* @return Response
* @param Request $request
* @Route("/confirmation", name="registration_confirmation", methods={"GET"})
*/
public function registrationConfirmation()
{
return $this->render('sign_up/registration_confirmation.html.twig');
}
/**
* @param Request $request
* @return Response
* @Route("/check", name="registration_check", methods={"GET"})
*/
public function checkIfExist(Request $request, WorkersRepository $workersRepository)
{
$email = $request->query->get('email');
$response = false;
$objWorkersRepository = $workersRepository->findOneBy(array("email" => $email));
if ($objWorkersRepository) {
$response = true;
}
return $this->json($response);
}
/**
* @Route("/save", name="registration_save", methods={"POST"})
*/
public function registrationSave(Request $request, WorkersRepository $workersRepository)
{
$workerInfo = $request->request->all('worker_info');
$objEntityManager = $this->entityManager;
$objUser = new Users();
$objUser->setPassword($this->encoder->hashPassword($objUser, $workerInfo['password']));
$objUser->setUsername($workerInfo['email']);
//saving users login cred....
$objEntityManager->persist($objUser);
$objEntityManager->flush();
$objWorker = new Workers();
$objWorker->setUserId($objUser->getId());
$objWorker->setFirstName(trim($workerInfo['first_name']));
$objWorker->setLastName(trim($workerInfo['last_name']));
$objWorker->setEmail(trim($workerInfo['email']));
$objWorker->setMobilePhone(trim($workerInfo['mobile_phone']));
$objWorker->setMobileProvider(intVal($workerInfo['mobile_provider_phone']));
$objWorker->setAddress1(trim($workerInfo['address1']));
$objWorker->setCity(trim($workerInfo['city']));
$objWorker->setState(trim($workerInfo['state']));
$objWorker->setZip(trim($workerInfo['zip']));
$objWorker->setWorkerType(intVal($workerInfo['worker_type']));
//saving workers info....
$objEntityManager->persist($objWorker);
$objEntityManager->flush();
$workerId = $objWorker->getId();
$workerFirstName = $objWorker->getFirstName();
$workerLastName = $objWorker->getLastName();
$workerEmail = $objWorker->getEmail();
$workerFullName = $workerFirstName . ' ' . $workerLastName;
if ($workerId > 0) {
$isWorkOtherSchools = 1;
$objConferenceWorker = new ConferenceWorkers();
$objConferenceWorker->setConferenceId($workerInfo["conference_id"]);
$objConferenceWorker->setWorkerId($workerId);
$objConferenceWorker->setIsWorkOtherSchools($isWorkOtherSchools);
//saving conference workers info....
$objEntityManager->persist($objConferenceWorker);
$objEntityManager->flush();
$conferenceWorkerId = $objConferenceWorker->getId();
if ($conferenceWorkerId > 0) {
$objConferenceWorkerSchools = new ConferenceWorkerSchools();
$objConferenceWorkerSchools = ($objConferenceWorkerSchools) ?
$objConferenceWorkerSchools : new ConferenceWorkerSchools();
$objConferenceWorkerSchools->setConferenceWorkerId($conferenceWorkerId);
$objConferenceWorkerSchools->setSchoolId($workerInfo["school_id"]);
$objConferenceWorkerSchools->setSchoolName($workerInfo["school_name"]);
$objConferenceWorkerSchools->setStatus(Workers::PENDING_STATUS);
//saving conference worker schools
$objEntityManager->persist($objConferenceWorkerSchools);
$objEntityManager->flush();
}
$adminContactInfoName = '';
$adminContactInfoEmail = '';
$objRegistrationSettings = new RegistrationSettings();
$objRegistrationSettings = $this->entityManager
->getRepository(RegistrationSettings::class)->findOneBy(array(
"conference_id" => $workerInfo["conference_id"],
"school_id" => $workerInfo["school_id"]
));
if ($objRegistrationSettings) {
$registrationOptions = unserialize($objRegistrationSettings->getOptions());
if (
isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
&& trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
) {
$adminContactInfoName = trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME']);
}
if (
isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
&& trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
) {
$adminContactInfoEmail = trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL']);
}
}
if ($adminContactInfoName && $adminContactInfoEmail) {
// send email notification to admin
$details = [
'email_subject' => 'Event Workers Registration from ' . $workerFullName,
'email_to' => $adminContactInfoEmail,
'worker_name' => $workerFullName,
'worker_id' => $workerId,
'savable' => true,
];
$target_url = ConfigurationUtility::getBaseUrl()
. '/workers/edit?id=' . $conferenceWorkerId . '&viewMode=2';
$objUrlSource = new UrlSource();
$UrlSourceParams = array(
"email" => $adminContactInfoEmail,
"conference_id" => $workerInfo["conference_id"],
"school_id" => 0,
"conference_workerid" => $conferenceWorkerId,
"target_url" => $target_url
);
$objEntityManager = $this->entityManager;
$objUrlSource->setParameters(serialize($UrlSourceParams));
//saving UrlSource....
$objEntityManager->persist($objUrlSource);
$objEntityManager->flush();
$urlsource_id = $objUrlSource->getId();
$urlsource_link = ConfigurationUtility::getBaseUrl() . '/public/usv?id=' . $urlsource_id;
$body = $this->renderView(
'sign_up/email/email_registration.html.twig',
[
'admin' => $adminContactInfoName,
'worker_name' => $workerFullName,
'worker_id' => $workerId,
'url' => $urlsource_link,
'from' => 'rEvent Workers Team',
'logo' => ConfigurationUtility::getRSchoolLogo()
]
);
$this->workersUtility->email($details, $body);
}
//send email to CC
$adminContactInfoName = '';
$adminContactInfoEmail = '';
$objRegistrationSettings = new RegistrationSettings();
$objRegistrationSettings = $this->entityManager
->getRepository(RegistrationSettings::class)->findOneBy(array(
"conference_id" => $workerInfo["conference_id"],
"school_id" => 0
));
if ($objRegistrationSettings) {
$registrationOptions = unserialize($objRegistrationSettings->getOptions());
if (
isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
&& trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME'])
) {
$adminContactInfoName = trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_NAME']);
}
if (
isset($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
&& trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL'])
) {
$adminContactInfoEmail = trim($registrationOptions['CONF_ADMIN_CONTACT_INFO_EMAIL']);
}
}
if ($adminContactInfoName && $adminContactInfoEmail) {
$details = [
'email_subject' => 'Event Workers Registration from ' . $workerFullName,
'email_to' => $adminContactInfoEmail,
'worker_name' => $workerFullName,
'worker_id' => $workerId,
'savable' => true,
];
$target_url = ConfigurationUtility::getBaseUrl()
. '/workers/edit?id=' . $conferenceWorkerId . '&viewMode=2';
$objUrlSource = new UrlSource();
$UrlSourceParams = array(
"email" => $adminContactInfoEmail,
"conference_id" => $workerInfo["conference_id"],
"school_id" => 0,
"conference_workerid" => $conferenceWorkerId,
"target_url" => $target_url
);
$objEntityManager = $this->entityManager;
$objUrlSource->setParameters(serialize($UrlSourceParams));
//saving UrlSource....
$objEntityManager->persist($objUrlSource);
$objEntityManager->flush();
$urlsource_id = $objUrlSource->getId();
$urlsource_link = ConfigurationUtility::getBaseUrl() . '/public/usv?id=' . $urlsource_id;
$body = $this->renderView(
'sign_up/email/email_registration.html.twig',
[
'admin' => $adminContactInfoName,
'worker_name' => $workerFullName,
'worker_id' => $workerId,
'url' => $urlsource_link,
'from' => 'rEvent Workers Team',
'logo' => ConfigurationUtility::getRSchoolLogo()
]
);
$this->workersUtility->email($details, $body);
}
}
return $this->redirectToRoute("registration_confirmation");
}
}