src/Controller/Cronjobs/MailController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Cronjobs;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use App\Entity\Users;
  5. use App\Entity\UserVerificationTokens;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use App\Message\SendMessage;
  9. use Symfony\Component\Messenger\MessageBusInterface;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. /**
  12.  * @Route("/cronjobs/mail", name="cronjobs_mail_")
  13.  */
  14. class MailController extends AbstractController
  15. {
  16.         protected $translator;
  17.         public function __construct(TranslatorInterface $translator)
  18.         {
  19.                 $this->translator $translator;
  20.         }
  21.         /**
  22.          * @Route("/aKGWgFhj5o9v8HNTkbU1/version_update", name="version_update_mail", methods={"GET"})
  23.          */
  24.         public function versionUpdate(
  25.                 EntityManagerInterface $em,
  26.                 MessageBusInterface $bus
  27.     ){
  28.         return $this->json([], 410);     // GONE
  29.                 $users $em->getRepository(Users::class)
  30.                 ->getUsersWithoutUpdateFlag(500);
  31.                 foreach ($users as $user){
  32.             try{
  33.                 $lang $user->getLang();
  34.                                 $bus->dispatch(
  35.                                         (new SendMessage())
  36.                                         ->setBaseApiUrl($this->getParameter("application_api_url"))
  37.                                         ->setFrom($this->getParameter('mailer_from_address'))
  38.                                         ->setUser($user)
  39.                                         ->setSubject($this->translator->trans('Version update', [], 'messages'$lang))
  40.                                         ->setView('emails/updateVersionStage2' ucfirst($lang) . '.html.twig')
  41.                                 );
  42.                                 $user->setUpdateEmailSent(true);
  43.                                 $em->persist($user);
  44.                                 $em->flush();
  45.                         } catch (\Exception $exception){
  46.                                 // do nothing, failed emails will be attempted again later
  47.                         }
  48.                 }
  49.                 return $this->json(['status' => 'ok'], 200);
  50.         }
  51.         /**
  52.          * @Route("/delete_validation_tokens", name="delete_validation_tokens", methods={"GET"})
  53.          */
  54.         public function deleteValidationTokens(EntityManagerInterface $em) {
  55.                 $em->getRepository(UserVerificationTokens::class)->deleteExpiredTokens(
  56.                         $this->getParameter('validation_tokens_expire_days')
  57.                 );
  58.                 return $this->json(['status' => 'ok'], 200);
  59.         }
  60. }
  61. ?>