src/Controller/ContattiController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Helper\MailHelper;
  4. use App\Library\SvcSenderClient\Mail\Attachment;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\File\UploadedFile;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class ContattiController extends AbstractController
  11. {
  12.     // METODO costruttore
  13.     public function __construct(private readonly MailHelper $mailHelper) {}
  14.     /**/
  15.     #[Route('/contatti'name'contatti'methods: ['GET''HEAD'])]
  16.     public function contatti()
  17.     {
  18.         return new Response(
  19.             $this->renderView('pages/contatti/contatti.html.twig'),
  20.             200
  21.         );
  22.     }
  23.     #[Route('/lavora-con-noi'name'lavora-con-noi'methods: ['GET''HEAD'])]
  24.     public function lavoraConNoi()
  25.     {
  26.         return new Response(
  27.             $this->renderView('pages/contatti/lavora_con_noi.html.twig'),
  28.             200
  29.         );
  30.     }
  31.     #[Route('/contatti/invia-candidatura'methods: ['POST''HEAD'])]
  32.     public function inviaCandidatura(Request $request) {
  33.         // RD MailForm in ajax ammette solo codici di esito come risposta alla richiesta (es.: MF100)
  34.         $sede             substr($request->request->get('sede') ?? ""064);
  35.         $nome             substr($request->request->get('nome') ?? ""064);
  36.         $cognome          substr($request->request->get('cognome') ?? ""064);
  37.         $qualifica        substr($request->request->get('qualifica') ?? ""064);
  38.         $telefono         substr($request->request->get('telefono') ?? ""032);
  39.         $email            substr($request->request->get('email') ?? ""0128);
  40.         $candidatura      substr($request->request->get('candidatura') ?? ""064);
  41.         $messaggio        substr($request->request->get('messaggio') ?? ""01024);
  42.         $curriculum_vitae $request->files->get('curriculum_vitae');
  43.         $csrfToken        $request->request->get('token') ?? null;
  44.         if (empty($sede) || empty($nome) || empty($cognome) || empty($qualifica) ||
  45.             empty($telefono) || empty($email) || empty($candidatura) || empty($messaggio) ||
  46.             ! $curriculum_vitae instanceof UploadedFile)
  47.         {
  48.             die('MF100');   // Uno o più campi non sono stati compilati correttamente.
  49.         }
  50.         if ( ! $this->isCsrfTokenValid('lavora-con-noi'$csrfToken)) {
  51.             die('MF101');   // Non hai l'autorizzazione a inviare il messaggio.
  52.         }
  53.         if ( ! filter_var($emailFILTER_VALIDATE_EMAIL)) {
  54.             die('MF003');   // Indirizzo email non valido.
  55.         }
  56.         // allegato
  57.         $content  file_get_contents($curriculum_vitae->getPathname());
  58.         $filename $curriculum_vitae->getClientOriginalName();
  59.         $mimetype $curriculum_vitae->getMimeType();
  60.         if ( ! in_array($mimetype, ["application/pdf""application/x-pdf"])) {
  61.             die('MF102');   // Uno o più campi non sono stati compilati correttamente.
  62.         }
  63.         $to = match($sede) {
  64.             'POTENZA' => "ufficioorientamento@unisab.it",
  65.             'BISCEGLIE',
  66.             'FOGGIA'  => "lavoraconnoi@donuva.it",
  67.             default   => null
  68.         };
  69.         if ($to === null) {
  70.             die('MF102');   // Uno o più campi non sono stati compilati correttamente (la select aveva option non ammesse).
  71.         }
  72.         // impagino la mail
  73.         $titolo    "Sito Don Uva - Nuova candidatura dal modulo di Lavora con noi - da $nome $cognome";
  74.         $contenuto $this->renderView('emails/nuova_candidatura.html.twig', [
  75.             'sede'        => $sede,
  76.             'nome'        => $nome,
  77.             'cognome'     => $cognome,
  78.             'qualifica'   => $qualifica,
  79.             'telefono'    => $telefono,
  80.             'email_msg'   => $email,
  81.             'candidatura' => $candidatura,
  82.             'messaggio'   => $messaggio
  83.         ]);
  84.         $allegato = new Attachment($filename$mimetype'pdf'strlen($content), $content);
  85.         $res $this->mailHelper->send($titolo$contenuto, [ $to ], [], [], [$allegato]);
  86.         if ( ! $res) {
  87.             die('MF255');   // Si è verificato un errore imprevisto, riprova più tardi.
  88.         }
  89.         die('MF000');
  90.     }
  91.     #[Route('/contatti/invia-messaggio'methods: ['POST''HEAD'])]
  92.     public function inviaMessaggio(Request $request) {
  93.         // RD MailForm in ajax ammette solo codici di esito come risposta alla richiesta (es.: MF100)
  94.         $nome      substr($request->request->get('nome') ?? ""064);
  95.         $cognome   substr($request->request->get('cognome') ?? ""064);
  96.         $telefono  substr($request->request->get('telefono') ?? ""032);
  97.         $email     substr($request->request->get('email') ?? ""0128);
  98.         $messaggio substr($request->request->get('messaggio') ?? ""01024);
  99.         $csrfToken $request->request->get('token') ?? null;
  100.         if (empty($nome) || empty($cognome) || empty($telefono) || empty($email) || empty($messaggio)) {
  101.             die('MF100');   // Uno o più campi non sono stati compilati correttamente.
  102.         }
  103.         if ( ! $this->isCsrfTokenValid('contatti'$csrfToken)) {
  104.             die('MF101');   // Non hai l'autorizzazione a inviare il messaggio.
  105.         }
  106.         if ( ! filter_var($emailFILTER_VALIDATE_EMAIL)) {
  107.             die('MF003');   // Indirizzo email non valido.
  108.         }
  109.         $titolo    "Sito Don Uva - Nuovo messaggio dal modulo di contatto - da $nome $cognome";
  110.         $contenuto $this->renderView('emails/nuovo_messaggio.html.twig', [
  111.             'nome'      => $nome,
  112.             'cognome'   => $cognome,
  113.             'telefono'  => $telefono,
  114.             'email_msg' => $email,
  115.             'messaggio' => $messaggio
  116.         ]);
  117.         $res $this->mailHelper->send($titolo$contenuto, [ "info@donuva.it" ]);
  118.         if ( ! $res) {
  119.             die('MF255');   // Si è verificato un errore imprevisto, riprova più tardi.
  120.         }
  121.         die('MF000');
  122.     }
  123. }