<?php
namespace App\Controller;
use App\Helper\MailHelper;
use App\Library\SvcSenderClient\Mail\Attachment;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ContattiController extends AbstractController
{
// METODO costruttore
public function __construct(private readonly MailHelper $mailHelper) {}
/**/
#[Route('/contatti', name: 'contatti', methods: ['GET', 'HEAD'])]
public function contatti()
{
return new Response(
$this->renderView('pages/contatti/contatti.html.twig'),
200
);
}
#[Route('/lavora-con-noi', name: 'lavora-con-noi', methods: ['GET', 'HEAD'])]
public function lavoraConNoi()
{
return new Response(
$this->renderView('pages/contatti/lavora_con_noi.html.twig'),
200
);
}
#[Route('/contatti/invia-candidatura', methods: ['POST', 'HEAD'])]
public function inviaCandidatura(Request $request) {
// RD MailForm in ajax ammette solo codici di esito come risposta alla richiesta (es.: MF100)
$sede = substr($request->request->get('sede') ?? "", 0, 64);
$nome = substr($request->request->get('nome') ?? "", 0, 64);
$cognome = substr($request->request->get('cognome') ?? "", 0, 64);
$qualifica = substr($request->request->get('qualifica') ?? "", 0, 64);
$telefono = substr($request->request->get('telefono') ?? "", 0, 32);
$email = substr($request->request->get('email') ?? "", 0, 128);
$candidatura = substr($request->request->get('candidatura') ?? "", 0, 64);
$messaggio = substr($request->request->get('messaggio') ?? "", 0, 1024);
$curriculum_vitae = $request->files->get('curriculum_vitae');
$csrfToken = $request->request->get('token') ?? null;
if (empty($sede) || empty($nome) || empty($cognome) || empty($qualifica) ||
empty($telefono) || empty($email) || empty($candidatura) || empty($messaggio) ||
! $curriculum_vitae instanceof UploadedFile)
{
die('MF100'); // Uno o più campi non sono stati compilati correttamente.
}
if ( ! $this->isCsrfTokenValid('lavora-con-noi', $csrfToken)) {
die('MF101'); // Non hai l'autorizzazione a inviare il messaggio.
}
if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
die('MF003'); // Indirizzo email non valido.
}
// allegato
$content = file_get_contents($curriculum_vitae->getPathname());
$filename = $curriculum_vitae->getClientOriginalName();
$mimetype = $curriculum_vitae->getMimeType();
if ( ! in_array($mimetype, ["application/pdf", "application/x-pdf"])) {
die('MF102'); // Uno o più campi non sono stati compilati correttamente.
}
$to = match($sede) {
'POTENZA' => "ufficioorientamento@unisab.it",
'BISCEGLIE',
'FOGGIA' => "lavoraconnoi@donuva.it",
default => null
};
if ($to === null) {
die('MF102'); // Uno o più campi non sono stati compilati correttamente (la select aveva option non ammesse).
}
// impagino la mail
$titolo = "Sito Don Uva - Nuova candidatura dal modulo di Lavora con noi - da $nome $cognome";
$contenuto = $this->renderView('emails/nuova_candidatura.html.twig', [
'sede' => $sede,
'nome' => $nome,
'cognome' => $cognome,
'qualifica' => $qualifica,
'telefono' => $telefono,
'email_msg' => $email,
'candidatura' => $candidatura,
'messaggio' => $messaggio
]);
$allegato = new Attachment($filename, $mimetype, 'pdf', strlen($content), $content);
$res = $this->mailHelper->send($titolo, $contenuto, [ $to ], [], [], [$allegato]);
if ( ! $res) {
die('MF255'); // Si è verificato un errore imprevisto, riprova più tardi.
}
die('MF000');
}
#[Route('/contatti/invia-messaggio', methods: ['POST', 'HEAD'])]
public function inviaMessaggio(Request $request) {
// RD MailForm in ajax ammette solo codici di esito come risposta alla richiesta (es.: MF100)
$nome = substr($request->request->get('nome') ?? "", 0, 64);
$cognome = substr($request->request->get('cognome') ?? "", 0, 64);
$telefono = substr($request->request->get('telefono') ?? "", 0, 32);
$email = substr($request->request->get('email') ?? "", 0, 128);
$messaggio = substr($request->request->get('messaggio') ?? "", 0, 1024);
$csrfToken = $request->request->get('token') ?? null;
if (empty($nome) || empty($cognome) || empty($telefono) || empty($email) || empty($messaggio)) {
die('MF100'); // Uno o più campi non sono stati compilati correttamente.
}
if ( ! $this->isCsrfTokenValid('contatti', $csrfToken)) {
die('MF101'); // Non hai l'autorizzazione a inviare il messaggio.
}
if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
die('MF003'); // Indirizzo email non valido.
}
$titolo = "Sito Don Uva - Nuovo messaggio dal modulo di contatto - da $nome $cognome";
$contenuto = $this->renderView('emails/nuovo_messaggio.html.twig', [
'nome' => $nome,
'cognome' => $cognome,
'telefono' => $telefono,
'email_msg' => $email,
'messaggio' => $messaggio
]);
$res = $this->mailHelper->send($titolo, $contenuto, [ "info@donuva.it" ]);
if ( ! $res) {
die('MF255'); // Si è verificato un errore imprevisto, riprova più tardi.
}
die('MF000');
}
}