src/Controller/AppController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\ORM\EntityNotFoundException;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use App\Controller\AbstractController;
  6. use App\Entity\Demande;
  7. use App\Entity\Page;
  8. use App\Entity\RemoteDemande;
  9. use App\Form\RemoteDemandeType;
  10. use DateTime;
  11. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  12. use Symfony\Component\Mime\Address;
  13. class AppController extends AbstractController
  14. {
  15. public function index(Request $request)
  16. {
  17. $page = $this->getPageRepository()->getByType(Page::TYPE_INDEX);
  18. $texteQuiSommesNous = $this->getPageRepository()->findOneByType(Page::TYPE_INDEX)->getContent();
  19. return $this->render('Public/index.html.twig', ['page' => $page, 'texte_qui_sommes_nous' => $texteQuiSommesNous]);
  20. }
  21. public function remoteDemandeForm(Request $request)
  22. {
  23. $referrer = $request->headers->get('referer');
  24. if ($request->getMethod() === 'POST') {
  25. try {
  26. $remote = $this->hydrateRemoteDemande($request, new RemoteDemande($this->getEm()));
  27. $demande = $remote->getDemande();
  28. if ($demande->getCategorie() === null) {
  29. throw new EntityNotFoundException("Categorie not found in RemoteDemande");
  30. }
  31. if (!$prix = $demande->getCategorie()->getPrix()) {
  32. $prix = $demande->getCategorie()->getParent()->getPrix();
  33. }
  34. $demande->setPrix($prix);
  35. if (!$credits = $demande->getCategorie()->getCredits()) {
  36. $credits = $demande->getCategorie()->getParent()->getCredits();
  37. }
  38. $demande->setCredits($credits);
  39. $demande->setStatus(Demande::STATUS_NEW);
  40. $demande->setCreationDate(new DateTime());
  41. $demande->setProvenance($referrer);
  42. $this->getEM()->beginTransaction();
  43. $this->getEM()->persist($demande);
  44. $this->getEM()->flush();
  45. // $email = (new TemplatedEmail())
  46. // ->from(new Address($this->getParameter('email_from'), $this->getParameter('name_from')))
  47. // ->to(new Address($this->getParameter('admin_email')))
  48. // ->subject('Une nouvelle demande de devis a été déposée')
  49. // ->htmlTemplate('Email/new_demande_admin.html.twig')
  50. // ->context([
  51. // 'demande' => $demande,
  52. // ]
  53. // );
  54. // $this->getMailer()->send($email);
  55. $this->getEM()->commit();
  56. } catch (\Exception $exception) {
  57. return $this->redirectToRoute('public_remote_demande', array(
  58. 'redirectTo' => $referrer,
  59. 'success' => false
  60. ));
  61. }
  62. return $this->redirectToRoute('public_remote_demande', array(
  63. 'redirectTo' => $referrer,
  64. 'success' => true
  65. ));
  66. }
  67. return $this->render('Public/remote_form.html.twig', array(
  68. 'redirectTo' => $request->get('redirectTo'),
  69. 'success' => $request->get('success')
  70. ));
  71. }
  72. private function hydrateRemoteDemande(Request $request, RemoteDemande $remote): RemoteDemande
  73. {
  74. $projet = $request->get('projet'); // @TODO: côté front il faut mettre à jour les id des catégories
  75. $type = $request->get('type');
  76. $code = $request->get('code');
  77. $ville = $request->get('ville');
  78. $date = $request->get('date');
  79. $pieces = $request->get('pieces');
  80. $surface = $request->get('surface');
  81. $copropriete = $request->get('copropriete');
  82. $gaz15ans = $request->get('gaz15ans');
  83. $electricite15ans = $request->get('electricite15ans');
  84. $etre = $request->get('etre'); // @TODO: Faut il rajouter le status du client dans le formulaire front ?
  85. $nom = $request->get('nom');
  86. $email = $request->get('email');
  87. $telephone = $request->get('telephone');
  88. $message = $request->get('message');
  89. $remote = new RemoteDemande($this->getEM());
  90. $remote->setProjet($projet);
  91. $remote->setType($type);
  92. $remote->setCode($code);
  93. $remote->setVille($ville);
  94. $remote->setDate($date);
  95. $remote->setPieces($pieces);
  96. $remote->setSurface($surface);
  97. $remote->setCopropriete($copropriete);
  98. $remote->setGaz15ans($gaz15ans);
  99. $remote->setElectricite15ans($electricite15ans);
  100. $remote->setEtre($etre ?? Demande::$clientStatuts[3]); // @TODO: Faut il rajouter le status du client dans le formulaire front ?
  101. $remote->setNom($nom);
  102. $remote->setEmail($email);
  103. $remote->setTelephone($telephone);
  104. $remote->setMessage($message);
  105. return $remote;
  106. }
  107. }