src/Controller/PortalController.php line 45

  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactFormType;
  4. use Backend\Entity\Vehicle;
  5. use Backend\Entity\VehicleCategory;
  6. use Backend\Entity\VehicleGallery;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  12. use Symfony\Component\Mailer\MailerInterface;
  13. use Symfony\Component\Mime\Address;
  14. use Symfony\Component\Mime\Email;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. class PortalController extends AbstractController
  17. {
  18.     #[Route('/'name'web_home')]
  19.     public function home(EntityManagerInterface $entityManager): Response
  20.     {
  21.         $vehicles $entityManager->getRepository(Vehicle::class)->findAllByCategory();
  22.         return $this->render('web/home.html.twig', [
  23.             'vehicles' => $vehicles
  24.         ]);
  25.     }
  26.     #[Route('/nosotros'name'web_about')]
  27.     public function about(): Response
  28.     {
  29.         return $this->render('web/about.html.twig');
  30.     }
  31.     #[Route('/servicios'name'web_services')]
  32.     public function services(): Response
  33.     {
  34.         return $this->render('web/services.html.twig');
  35.     }
  36.     #[Route('/vehiculos'name'web_vehicles')]
  37.     public function vehicles(EntityManagerInterface $entityManager): Response
  38.     {
  39.         $vehicleCategories $entityManager->getRepository(VehicleCategory::class)->findAll();
  40.         $vehicles $entityManager->getRepository(Vehicle::class)->findAllByModel();
  41.         return $this->render('web/vehicles/vehicle-search.html.twig', [
  42.             'vehicleCategories' => $vehicleCategories,
  43.             'vehicles' => $vehicles
  44.         ]);
  45.     }
  46.     #[Route('/vehiculo/{id}'name'web_vehicle_detail')]
  47.     public function vehicleDetail(EntityManagerInterface $entityManagerint $id): Response
  48.     {
  49.         $vehicle $entityManager->getRepository(Vehicle::class)->find($id);
  50.         $gallery $entityManager->getRepository(VehicleGallery::class)->findBy(['vehicle' => $id]);
  51.         return $this->render('web/vehicles/vehicle-detail.html.twig', [
  52.             'vehicle' => $vehicle,
  53.             'gallery' => $gallery
  54.         ]);
  55.     }
  56.     #[Route('/contacto'name'web_contact')]
  57.     public function contact(Request $requestMailerInterface $mailer): Response
  58.     {
  59.         $form $this->createForm(ContactFormType::class);
  60.         $form->handleRequest($request);
  61.         if ($form->isSubmitted() && $form->isValid()) {
  62.             $data $form->getData();
  63.             $email = (new Email())
  64.                 ->from(new Address('reservaciones@benibussac.com''Contacto Benibussac.com'))
  65.                 ->to('reservaciones@benibussac.com')
  66.                 //->cc('cc@example.com')
  67.                 ->bcc('lreyes.miguel@gmail.com')
  68.                 ->replyTo(new Address($data['email'], $data['name']))
  69.                 //->priority(Email::PRIORITY_HIGH)
  70.                 ->subject('Pruebas: Benibus contacto - ' $data['name'])
  71.                 ->html(
  72.                     '<p>Se reelizó un consulta por la página web.</p>' .
  73.                     '<p><b>Nombre:</b> ' $data['name'] . '</p>' .
  74.                     '<p><b>Celular:</b> ' $data['phone'] . '</p>' .
  75.                     '<p><b>Mensaje:</b> ' $data['message'] . '</p>'
  76.                 );
  77.             try {
  78.                 $mailer->send($email);
  79.                 $this->addFlash(
  80.                     'success',
  81.                     'El correo fue enviado exitosamente.'
  82.                 );
  83.             } catch (TransportExceptionInterface $e) {
  84.                 dump($e);
  85.             }
  86.             return $this->redirectToRoute('web_contact');
  87.         }
  88.         return $this->render('web/contact.html.twig', [
  89.             'form' => $form->createView(),
  90.         ]);
  91.     }
  92. }