Skip to content

Commit

Permalink
Activation and questionnaire mail sending separated
Browse files Browse the repository at this point in the history
  • Loading branch information
joekurta committed Sep 1, 2015
1 parent 91c2103 commit 6c7a450
Show file tree
Hide file tree
Showing 4 changed files with 159 additions and 55 deletions.
79 changes: 61 additions & 18 deletions Command/ActivationEmailsCommand.php
Expand Up @@ -13,32 +13,75 @@ class ActivationEmailsCommand extends ContainerAwareCommand
protected function configure()
{
$this
->setName('activation:send')
->setName('email:send')
->setDescription('Send activation emails to all users')
->addOption(
'activation',
null,
InputOption::VALUE_NONE,
'activation'
)
->addOption(
'questions',
null,
InputOption::VALUE_NONE,
'Questionnaire'
)
;
}

protected function execute(InputInterface $input, OutputInterface $output)
{
$users = $this->getContainer()->get('doctrine')->getRepository('LiveVotingBundle:User')->findAll();
$num = 0;
foreach ($users as $user) {
$user_email = $user->getEmail();
$emailHash = md5($this->getContainer()->getParameter('email_hash_prefix') . $user_email);
$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->getContainer()->get('templating')->render(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
$this->getContainer()->get('mailer')->send($message);
$num++;
if ($input->getOption('activation'))
{
foreach ($users as $user) {
$user_email = $user->getEmail();
$emailHash = md5($this->getContainer()->getParameter('email_hash_prefix') . $user_email);

$message = \Swift_Message::newInstance()
->setSubject('Say hello to Summer Camp 2015!')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->getContainer()->get('templating')->render(
'LiveVotingBundle:Email:login.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
$this->getContainer()->get('mailer')->send($message);
$num++;
}
$output->writeln('Activation mails have been sent to '.$num.' users');
}
else if ($input->getOption('questions'))
{
foreach ($users as $user) {
$user_email = $user->getEmail();
$emailHash = md5($this->getContainer()->getParameter('email_hash_prefix') . $user_email);

$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->getContainer()->get('templating')->render(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
$this->getContainer()->get('mailer')->send($message);
$num++;
}
$output->writeln('Questionnaire mails have been sent to '.$num.' users');
}
$output->writeln('Activation mail has been sent to '.$num.' users');
else
{
$output->writeln('Must choose one optional argument: --activation or --questions');
}

}
}
118 changes: 87 additions & 31 deletions Controller/UserAdminController.php
Expand Up @@ -258,32 +258,59 @@ public function processImportCsvAction(Request $request)
);
}

public function loginEmailAction(Request $request)
public function loginEmailAction(Request $request, $typeOf)
{
$users = $this->getDoctrine()->getRepository('LiveVotingBundle:User')->findAll();
foreach ($users as $user) {
$user_email = $user->getEmail();
$emailHash = md5($this->container->getParameter('email_hash_prefix') . $user_email);
$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
if ($typeOf === '0')
{
$message = \Swift_Message::newInstance()
->setSubject('Say hello to Summer Camp 2015!')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:login.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
}
else if ($typeOf === '1')
{
$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
}

$this->get('mailer')->send($message);
}
$request->getSession()->getFlashBag()->add(
'message', 'Emails have been sent to all users.'
);
if ($typeOf === '0')
{
$request->getSession()->getFlashBag()->add(
'message', 'Activations have been sent to all users.'
);
}
else if ($typeOf === '1')
{
$request->getSession()->getFlashBag()->add(
'message', 'Questionnaires have been sent to all users.'
);
}
return $this->redirect($this->generateUrl('admin_user'));
}

public function oneUserLoginEmailAction(Request $request, $id)
public function oneUserLoginEmailAction(Request $request, $id, $typeOf)
{
$em = $this->getDoctrine()->getManager();

Expand All @@ -292,24 +319,53 @@ public function oneUserLoginEmailAction(Request $request, $id)
if (!$user) {
throw $this->createNotFoundException('Unable to find User entity.');
}

$user_email = $user->getEmail();
$emailHash = md5($this->container->getParameter('email_hash_prefix') . $user_email);
$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
if ($typeOf === '0')
{
$message = \Swift_Message::newInstance()
->setSubject('Say hello to Summer Camp 2015!')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:login.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
}
else if ($typeOf === '1')
{
$message = \Swift_Message::newInstance()
->setSubject('PHP & eZ Publish Summer Camp 2015 - Questionnaire')
->setFrom('info@netgen.hr')
->setTo($user_email)
->setBody(
$this->renderView(
'LiveVotingBundle:Email:questions.html.twig',
array('emailHash' => $emailHash)
),
'text/html'
);
}


$this->get('mailer')->send($message);
$request->getSession()->getFlashBag()->add(
'message', 'Email has been sent to '.$user_email
);
if ($typeOf === '0')
{
$request->getSession()->getFlashBag()->add(
'message', 'Activation has been sent to '.$user_email
);
}
else if ($typeOf === '1')
{
$request->getSession()->getFlashBag()->add(
'message', 'Questionnaire has been sent to '.$user_email
);
}


return $this->redirect($this->generateUrl('admin_user'));
}
}
8 changes: 4 additions & 4 deletions Resources/config/routing.yml
Expand Up @@ -194,9 +194,9 @@ email_login:
path: /login/

send_email_login:
path: /admin/user/send_email_login
defaults: {_controller: LiveVotingBundle:UserAdmin:loginEmail}
path: /admin/user/send_email_login/{typeOf}
defaults: {_controller: LiveVotingBundle:UserAdmin:loginEmail, typeOf: null}

send_one_email_login:
path: /admin/user/send_one_email_login/{id}
defaults: {_controller: LiveVotingBundle:UserAdmin:oneUserLoginEmail, id: null }
path: /admin/user/send_one_email_login/{typeOf}/{id}
defaults: {_controller: LiveVotingBundle:UserAdmin:oneUserLoginEmail, id: null, typeOf: null }
9 changes: 7 additions & 2 deletions Resources/views/User/index.html.twig
Expand Up @@ -20,6 +20,7 @@
<th class="text-center">Enabled</th>
<th>Edit</th>
<th>Activation Email</th>
<th>Questionnaire Email</th>
</tr>
</thead>
<tbody>
Expand All @@ -31,7 +32,10 @@
<a href="{{ path('admin_user_edit', { 'id': entity.id }) }}"><button type="button" class="btn">Edit</button></a>
</td>
<td>
<a href="{{ path('send_one_email_login', { 'id': entity.id }) }}"><button type="button" class="btn">Send Activation Email</button></a>
<a href="{{ path('send_one_email_login', { 'id': entity.id, 'typeOf': 0}) }}"><button type="button" class="btn">Send Activation Email</button></a>
</td>
<td>
<a href="{{ path('send_one_email_login', { 'id': entity.id, 'typeOf': 1}) }}"><button type="button" class="btn">Send Questionnaire Email</button></a>
</td>
</tr>
{% endfor %}
Expand All @@ -45,7 +49,8 @@
<a href="{{ path('admin_user_new') }}"><button type="button" class="btn"><i class="fa fa-plus"></i> Add user</button></a>
<a href="{{ path('csv_export') }}"><button type="button" class="btn"><i class="fa fa-sign-out"></i> Export CSV</button></a>
<a href="{{ path('user_csv_import') }}"><button type="button" class="btn"><i class="fa fa-sign-in"></i> Import CSV</button></a>
<a href="{{ path('send_email_login') }}"><button type="button" class="btn"><i class="fa fa-mail-forward"></i> Send activation email to all users</button></a>
<a href="{{ path('send_email_login',{'typeOf': 0}) }}"><button type="button" class="btn"><i class="fa fa-mail-forward"></i> Send activation email to all users</button></a>
<a href="{{ path('send_email_login',{'typeOf': 1}) }}"><button type="button" class="btn"><i class="fa fa-mail-forward"></i> Send questionnaire email to all users</button></a>
</div>
</div>
{% endblock %}

0 comments on commit 6c7a450

Please sign in to comment.