Commit f7481020 by Lech Sawon

service locator

parent b1416f6e
......@@ -5,6 +5,7 @@ namespace App\Controller;
use App\Entity\Reservation;
use App\Form\ReservationType;
use App\Repository\ReservationRepository;
use App\Service\Reservation\AddReservation;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
......@@ -30,16 +31,15 @@ class ReservationController extends AbstractController
/**
* @Route("/new", name="reservation_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
public function new(Request $request, AddReservation $addReservation): Response
{
$reservation = new Reservation();
$form = $this->createForm(ReservationType::class, $reservation);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($reservation);
$entityManager->flush();
$addReservation->add($reservation);
return $this->redirectToRoute('reservation_index', [], Response::HTTP_SEE_OTHER);
}
......
<?php
declare(strict_types=1);
namespace App\Service\Reservation;
use App\Entity\Reservation;
use Symfony\Component\DependencyInjection\ContainerInterface;
final class AddReservation
{
private ContainerInterface $serviceLocator;
public function __construct(ContainerInterface $serviceLocator)
{
$this->serviceLocator = $serviceLocator;
}
public function add(Reservation $reservation): void
{
//dodatkow logika biznesowa do wykonania w czasie dodania rezerwacji
// np czy salka jest dostępna
// np inicjacja wysłania powiadomianie
$manager = $this->serviceLocator->get('doctrine')->getManager();
$manager->persist($reservation);
$manager->flush();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment