<?php
namespace App\Controller\Cronjobs;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use App\Entity\Users;
use App\Entity\UserVerificationTokens;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Annotation\Route;
use App\Message\SendMessage;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* @Route("/cronjobs/mail", name="cronjobs_mail_")
*/
class MailController extends AbstractController
{
protected $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
/**
* @Route("/aKGWgFhj5o9v8HNTkbU1/version_update", name="version_update_mail", methods={"GET"})
*/
public function versionUpdate(
EntityManagerInterface $em,
MessageBusInterface $bus
){
return $this->json([], 410); // GONE
$users = $em->getRepository(Users::class)
->getUsersWithoutUpdateFlag(500);
foreach ($users as $user){
try{
$lang = $user->getLang();
$bus->dispatch(
(new SendMessage())
->setBaseApiUrl($this->getParameter("application_api_url"))
->setFrom($this->getParameter('mailer_from_address'))
->setUser($user)
->setSubject($this->translator->trans('Version update', [], 'messages', $lang))
->setView('emails/updateVersionStage2' . ucfirst($lang) . '.html.twig')
);
$user->setUpdateEmailSent(true);
$em->persist($user);
$em->flush();
} catch (\Exception $exception){
// do nothing, failed emails will be attempted again later
}
}
return $this->json(['status' => 'ok'], 200);
}
/**
* @Route("/delete_validation_tokens", name="delete_validation_tokens", methods={"GET"})
*/
public function deleteValidationTokens(EntityManagerInterface $em) {
$em->getRepository(UserVerificationTokens::class)->deleteExpiredTokens(
$this->getParameter('validation_tokens_expire_days')
);
return $this->json(['status' => 'ok'], 200);
}
}
?>