Bonjour à tous,

1/ Je cherche à savoir comment injecter les deux variables $dateClient et $heureClient provenant d'un formulaire en tant que variables dans ma fonction checkerExistenceCreneau, puis déclencher ladite fonction au submit du formulaire... Doit on apeller la fonction du repository dans le controller, dans le form ou dans le service .?
Ca doit être simple mais avec la fatigue, je n'y arrive pas :(

2/ Suite à la soumission, le résultat de la requête ajax doit être renvoyée dans le formulaire pour signaler au client si la création de la réservation est possible ou non... Pour cela j'ai fait des echos et return false/true dans une fonction très longue dont voici un extrait, il faut alors que je puisse récupérer là où le code a stoppé en php pour pouvoir bloquer ou continuer la soumission du formulaire :

Merci bcp d'avance pour toute aide :)

"```"
//Requête qui rapatrie les créneaux et nbr de couverts pour le jour et heure choisis :
// $heureClient = new \DateTime($heureClient);

        $q2 = $this->createQueryBuilder('c')
            ->setParameters([
                'idcreneau' => $idCreneau,
                'heureclient' => $heureClient
            ])
            //Check sur lundi matin
            ->select($select1)
            ->andWhere($where1)
            ->andWhere('c.id = :idcreneau')
            ->getQuery()
            ->getResult();

        //Check creneau du soir
        $q3 = $this->createQueryBuilder('c')
            ->setParameters([
                'idcreneau' => $idCreneau,
                'heureclient' => $heureClient
            ])
            ->select($select2)
            ->andWhere($where2)
            ->andWhere('c.id = :idcreneau')
            ->getQuery()
            ->getResult();

        if ($q2 != null || $q3 != null) {
            //Calcul de la soustraction d'une heure avant la fermeture du restaurant:
            // $newHeureMidi=new DateTime();
            // $topMidi=date("H:i:s",strtotime("-1 hour $q2[0][$moins1hmidi]"));
            // dd(date("H:i:s",strtotime($q2[0][$moins1hmidi])));
             //$newHeureSoir= $q3[0][$moins1hsoir];

            //  echo($newHeureSoir);

            echo "Un créneau pour ce {$nomjour} " . date("d-m-Y", strtotime($dateClient)) . ' à ' . date('H:i', strtotime($heureClient)) . " a été trouvé.";
            return true;
        } else {
            echo "Aucun créneau pour ce {$nomjour} " . date("d-m-Y", strtotime($dateClient)) . ' à ' . date('H:i', strtotime($heureClient)) . " n'a été trouvé.";
            return false;
        }
        return $q1;
    } else {
        echo ("Aucun créneau libre de réservation n'a été trouvé, veuillez choisir un autre jour ou consulter la liste des créneaux disponibles en cliquant sur le link qui s'affiche en bas de ce formulaire.");
    }
}

}
"```"

ReservationsController :
"```"
//Ajout d'une réservation par le client lui-même, le ramène sur sa liste de réservation si validation

[Route('/ajout-reservation-par-client', name: 'app_reservation_par_client_new', methods: ['GET', 'POST'])]
public function newParClient(Request $request, ReservationsRepository $reservationsRepo,CreneauxRepository $creneauxRepo,ReservationsService $reservationsService): Response
{

    $reservation = new Reservations();

    $reservation->setClient($this->getUser());

    $form = $this->createForm(ReservationsType::class, $reservation);
    $form->handleRequest($request);

    $dateClient=$request->get('reservations_Date');
    $heureClient=$request->get('reservations_Heure');

    dd($dateClient,$heureClient);

    if ($form->isSubmitted() && $form->isValid()) {
        return $reservationsService->handleFormData($form);

        // $reservationsRepo->save($reservation, true);

        // $this->addFlash('alert alert-success', 'Votre réservation a bien été prise en compte ! , nous vous avons envoyé une confirmation, vérifiez votre boîte mail.');
        // return $this->redirectToRoute('app_reservations_par_client', [], Response::HTTP_SEE_OTHER);
    }

"```"

ReservationsService

"```"
<?php

namespace App\Service;

use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\JsonResponse;

class ReservationsService
{
public function __construct(private EntityManagerInterface $em)
{

}

public function handleFormData(FormInterface $formData): JsonResponse
{
    if ($formData->isValid()) {
        return $this->handleValidForm($formData);
    } else {
        return $this->handleInvalidForm($formData);
    }
}
public function handleValidForm(FormInterface $formData): JsonResponse
{
    $formData = $formData->getData();   
    // dd($formData);
    $this->em->persist($formData);
    $this->em->flush();

    return new JsonResponse([
        'html' => ''
    ]);
}

public function handleInvalidForm(): JsonResponse
{
    return new JsonResponse([
        'message' => 'invalid form'
    ]);
}

}
"" Resevations.js : ""
window.onload=()=>{
const formReservations=document.querySelector('#reservations')

formReservations.addEventListener('submit',(e)=>{
    e.preventDefault

    fetch(this.action,{
        body:new FormData(e.target),
        method:"POST"
    }).then(response=>response.json())
    .then(json=>{

    })
})

}
"```"
CreneauxRepository :

"```"
//Requête qui rapatrie les créneaux et nbr de couverts pour le jour et heure choisis :
// $heureClient = new \DateTime($heureClient);

        $q2 = $this->createQueryBuilder('c')
            ->setParameters([
                'idcreneau' => $idCreneau,
                'heureclient' => $heureClient
            ])
            //Check sur lundi matin
            ->select($select1)
            ->andWhere($where1)
            ->andWhere('c.id = :idcreneau')
            ->getQuery()
            ->getResult();

        //Check creneau du soir
        $q3 = $this->createQueryBuilder('c')
            ->setParameters([
                'idcreneau' => $idCreneau,
                'heureclient' => $heureClient
            ])
            ->select($select2)
            ->andWhere($where2)
            ->andWhere('c.id = :idcreneau')
            ->getQuery()
            ->getResult();

        if ($q2 != null || $q3 != null) {
            //Calcul de la soustraction d'une heure avant la fermeture du restaurant:
            // $newHeureMidi=new DateTime();
            // $topMidi=date("H:i:s",strtotime("-1 hour $q2[0][$moins1hmidi]"));
            // dd(date("H:i:s",strtotime($q2[0][$moins1hmidi])));
             //$newHeureSoir= $q3[0][$moins1hsoir];

            //  echo($newHeureSoir);

            echo "Un créneau pour ce {$nomjour} " . date("d-m-Y", strtotime($dateClient)) . ' à ' . date('H:i', strtotime($heureClient)) . " a été trouvé.";
            return true;
        } else {
            echo "Aucun créneau pour ce {$nomjour} " . date("d-m-Y", strtotime($dateClient)) . ' à ' . date('H:i', strtotime($heureClient)) . " n'a été trouvé.";
            return false;
        }
        return $q1;
    } else {
        echo ("Aucun créneau libre de réservation n'a été trouvé, veuillez choisir un autre jour ou consulter la liste des créneaux disponibles en cliquant sur le link qui s'affiche en bas de ce formulaire.");
    }
}

}
"```"

Aucune réponse