src/Controller/Front/ServiceController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Controller\Core\BaseFrontController;
  4. use App\Entity\FormService;
  5. use App\Entity\Service;
  6. use App\Form\Front\FormServiceType;
  7. use App\Manager\AfterSalesServicesManager;
  8. use App\Manager\FormServiceManager;
  9. use App\Manager\ServiceManager;
  10. use App\Service\CRM\ApiCRM;
  11. use App\Service\Mail\ServiceMail;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. class ServiceController extends BaseFrontController
  18. {
  19.     const FORM_SERVICE 'sd_form_service_entity';
  20.     /**
  21.      * @Route("/servicios", name="services")
  22.      * @Template("front/services/services.html.twig")
  23.      */
  24.     public function services(
  25.         AfterSalesServicesManager $afterSalesServicesManager,
  26.         ServiceManager $serviceManager): array
  27.     {
  28.         $this->locals['sd'] = $afterSalesServicesManager->find(1);
  29.         $this->locals['services'] = $serviceManager->valid();
  30.         return $this->locals;
  31.     }
  32.     /**
  33.      * @Route("/servicio/{slug}", name="service", methods={"GET"})
  34.      * @Template("front/services/service.html.twig")
  35.      */
  36.     public function service(string $slugServiceManager $serviceManager): array
  37.     {
  38.         /** @var Service|null $service */
  39.         $service $serviceManager->bySlug($slug);
  40.         if (is_null($service)) {
  41.             throw new NotFoundHttpException('Service not found');
  42.         }
  43.         $entity $this->getFormSession(self::FORM_SERVICE, new FormService());
  44.         $form $this->getFormView(FormServiceType::class, $entity'service_action', ['slug' => $slug]);
  45.         $this->locals['service'] = $service;
  46.         $this->locals['form'] = $form;
  47.         return $this->locals;
  48.     }
  49.     /**
  50.      * @Route("/servicio/{slug}", name="service_action", methods={"POST"})
  51.      */
  52.     public function serviceAction(Request $requeststring $slugFormServiceManager $managerServiceMail $mailApiCRM $apiCRM): RedirectResponse
  53.     {
  54.         $entity = new FormService();
  55.         $form $this->getForm(FormServiceType::class, $entity'service_action', ['slug' => $slug]);
  56.         $form->handleRequest($request);
  57.         if ($form->isValid()) {
  58.             $manager->save($entity);
  59.             $mail->load($entity)->send();
  60.             $crmLead $entity->leadToCRM();
  61.             $result $apiCRM->send($crmLead);
  62.             $entity->setCrmBody($crmLead->toCRM());
  63.             $entity->setCrmResult($result);
  64.             $manager->save($entity);
  65.             return $this->redirectToRoute('thanks_slug_parameter', ['slug' => 'servicio''parameter' => $slug]);
  66.         }
  67.         $this->saveFormSession(self::FORM_SERVICE$entity);
  68.         return $this->redirectToRoute('service', ['slug' => $slug]);
  69.     }
  70. }