← Back
Editing: ProviderReportController.php
<?php namespace App\Controller; use App\Entity\Message; use App\Entity\Service; use App\Form\MessageType; use App\Form\ServiceType; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; /** * Class ProviderReportController. */ class ProviderReportController extends AbstractController { #[Route(path: '/provider/report/{hash}', name: 'provider_report')] public function index(Service $service, Request $request, EntityManagerInterface $em): Response { if (!$service->getFirstSeenOn()) { $service->setFirstSeenOn(new \DateTime()); $em->persist($service); $em->flush(); } if ($service->getElevatorBreakdown()) { $address = $service->getElevatorBreakdown()->getAdresse(); } else { $address = $service->getControle()->getAdresse(); } $messageType = $this->handleMessageForm($service, $request, $em); $serviceType = $this->createForm(ServiceType::class, $service); $serviceType->handleRequest($request); if ($serviceType->isSubmitted() && $serviceType->isValid()) { $data = $serviceType->getData(); $data->setStatus('scheduled'); $em->persist($data); $em->flush(); $this->addFlash('success', 'Votre rendez-vous a bien été soumis'); } return $this->render( 'provider_report/index.html.twig', [ 'service' => $service, 'address' => $address, 'form' => $serviceType->createView(), 'messageForm' => $messageType->createView(), ] ); } private function handleMessageForm(Service $service, Request $request, EntityManagerInterface $em): FormInterface { $message = new Message(); $message->setService($service); $message->setProvider($service->getProviderContact()); $messageForm = $this->createForm(MessageType::class, $message); $messageForm->handleRequest($request); if ($messageForm->isSubmitted() && $messageForm->isValid()) { $em->persist($messageForm->getData()); $em->flush(); $this->addFlash('success', 'Votre message a bien été envoyé'); $this->redirectToRoute('provider_report', ['hash' => $service->getHash()]); } return $messageForm; } }
Save File
Cancel