<?php
namespace App\Controller\Front;
use App\Entity\Appointment;
use App\Form\AppointmentType;
use App\Repository\AppointmentRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class AppointmentController extends AbstractController
{
public function new(Request $request, TranslatorInterface $translator): Response
{
$appointment = new Appointment();
$form = $this->createForm(AppointmentType::class, $appointment);
if ($request->isMethod('POST') && $request->request->has('appointment')) {
$appointmentData = $request->request->get('appointment');
$appointmentData['availablity'] = date_format(date_create_from_format('d/m/Y H:i', $appointmentData['availablity']),"Y-m-d H:i:s");
$appointmentData = $request->request->set('appointment', $appointmentData);
}
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$appointment->setStatus(Appointment::APPOINTMENT_PENDING);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($appointment);
$entityManager->flush();
$this->addFlash('success_en', $translator->trans('app.appointment.form.sendsuccess'));
return $this->redirect($request->getUri());
}
return $this->render('front/appointment/new.html.twig', [
'appointment' => $appointment,
'form' => $form->createView(),
]);
}
public function respondAppointment(Appointment $appointment, Request $request): Response
{
if ($request->query->get('status') == "valid")
$appointment->setStatus(Appointment::APPOINTMENT_VALIDE);
else
$appointment->setStatus(Appointment::APPOINTMENT_REJECTED);
$appointment->setAvailablityConfirmed($request->query->get('availablityConfirmed'));
$appointment->setUpdatedAt(new \DateTime('now'));
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($appointment);
$entityManager->flush();
return $this->redirectToRoute('admin');
}
}