<?php
namespace App\Controller;
use App\Form\CustomerSupportcontactType;
use App\Form\SupportcontactType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mime\Address;
/**
* Le support controller gère les pages supports.
*/
class SupportController extends AbstractController {
/**
* page accueil Support
* @return Response la page html
* @param Request $request les paramètres GET OU POST
* @param MailerInterface $mailer gestionnaire d'envoi de mails
*/
#[Route(path: 'support', name: 'support_client')]
public function supportClient(Request $request, MailerInterface $mailer): Response {
$form = $this->createForm(CustomerSupportContactType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$params = [];
//on passe les données du formulaire dans un tableau de paramètre
$params['phone'] = $form->get('telephoneContact')->getData();
$params['emailContact'] = $form->get('mailContact')->getData();
$params['motif'] = $form->get('motifDeLaDemande')->getData();
$params['firstName'] = $form->get('firstName')->getData();
$params['lastName'] = $form->get('lastName')->getData();
if ($this->getUser() !== null) {
$params['enterprise'] = $this->getUser()->getEnterprise();
}
$actionsList = $this->getParameter('email_template');
$templateInfo = $actionsList['support']['request'];
//TODO: changer l'adresse mail
$recipient = 'iwip-collect@elementaire.in';
$email = (new TemplatedEmail())
->from(new Address($this->getParameter('emailSender')['address'], $this->getParameter('emailSender')['adressName']))
->to(new Address($recipient))
->subject($templateInfo['subject'])
->htmlTemplate('email/fr/' . $templateInfo['template'] . '.html.twig')
->context($params);
$mailer->send($email);
return $this->redirectToRoute('thank', ['type' => 'contact']);
}
return $this->render('front/supportClient.html.twig', ['form' => $form->createView()]);
}
#[Route(path: 'modificationCompte', name: 'modification_compte')]
public function modificationCompte(Request $request, MailerInterface $mailer): Response {
$form = $this->createForm(SupportContactType::class);
$form->get('identifiant')->setData($this->getUser()->getContact()->getLastName());
$form->get('mailContact')->setData($this->getUser()->getEmail());
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$params = [];
$params['phone'] = $form->get('telephoneContact')->getData();
$params['emailContact'] = $form->get('mailContact')->getData();
$params['motif'] = $form->get('motifDeLaDemande')->getData();
$params['firstName'] = $form->get('identifiant')->getData();
if ($this->getUser() !== null) {
$params['enterprise'] = $this->getUser()->getEnterprise();
}
$actionsList = $this->getParameter('email_template');
$templateInfo = $actionsList['support']['modificationInfos'];
$recipient = 'iwip-collect@elementaire.in';
$email = (new TemplatedEmail())
->from('iwip-collect@elementaire.in')
->to(new Address($recipient))
->subject($templateInfo['subject'])
->htmlTemplate('email/fr/' . $templateInfo['template'] . '.html.twig')
->context($params);
$mailer->send($email);
$this->addFlash('success', 'Message bien envoyé');
switch ($this->getUser()->getRoles()[0]) {
case 'ROLE_ADMIN':
return $this->redirectToRoute('admin');
case 'ROLE_CUSTOMER':
return $this->redirectToRoute('customer');
case 'ROLE_PROVIDER':
return $this->redirectToRoute('provider');
case 'ROLE_BUSINESSLINEMANAGER':
return $this->redirectToRoute('admin');
case 'ROLE_GROUPMANAGER':
return $this->redirectToRoute('admin');
case 'ROLE_GESTIONNAIRE':
return $this->redirectToRoute('admin_exporter_home');
case 'ROLE_REGIONMANAGER':
return $this->redirectToRoute('admin');
}
}
return $this->render('front/supportCompte.html.twig', ['form' => $form->createView()]);
}
}