<?php
declare(strict_types=1);
namespace App\Controller\Dashboard\Admin;
use App\Entity\Booking;
use App\Entity\Experience;
use App\Entity\Category;
use App\Entity\User;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Knp\Component\Pager\PaginatorInterface;
#[Route('/admin/booking')]
class BookingListController extends AbstractController {
#[Route('/booking-list', name: 'admin_booking_list')]
public function bookingListAdmin(ManagerRegistry $doctrine): Response {
$em = $doctrine->getManager();
//$list = $em->getRepository(Booking::class)->findAll();
$bookings = $em->getRepository(Booking::class)->findAll();
$coachs = $em->getRepository(User::class)->findAll();
$experiences = $em->getRepository(Experience::class)->findAll();
$categories = $em->getRepository(Category::class)->findAll();
return $this->render('admin/booking/admin/adminBookings.html.twig', [
'coachs' => $coachs,
'bookings' => $bookings,
'experiences' => $experiences,
'categories' => $categories,
]);
}
#[Route('/booking-manuelle', name: 'admin_new_booking')]
public function newManualBooking(Request $request, ManagerRegistry $doctrine): Response {
$em = $doctrine->getManager();
$experiences = $em->getRepository(Experience::class)->findAll();
if ($request->isMethod('post')) {
$booking = new Booking();
$booking->setPax($request->get('pax'));
$booking->setDuration($request->get('duration'));
$booking->setDatestart(new \DateTime($request->get('datesstart')));
$booking->setTotal(intval($request->get('total')));
$booking->setCurrency(intval($request->get('currency')));
$booking->setPaymentId($request->get('paymentId'));
$booking->setPaymentType($request->get('paymentType'));
$booking->setStatus('1');
$experience = $em->getRepository(Experience::class)->find($request->get('experience'));
$experience->addBooking($booking);
$user = $em->getRepository(User::class)->findOneByEmail($request->get('email'));
if ($user) {
$this->addFlash('warning', 'Compte déja existe');
} else {
$user = new User();
$user->setFirstname($request->get('firstname'));
$user->setLastname($request->get('lastname'));
$user->setPhone($request->get('phone'));
$user->setUsername($request->get('email'));
$user->setEmail($request->get('email'));
$user->setRoles(['ROLE_USER', 'ROLE_CUSTOMER']);
$user->setEnabled('1');
$em->persist($user);
$em->flush();
$str = 'A=u_c7Rfs3Lmn' . $user->getId();
$token = str_shuffle($str);
$user->setEmailVerification($token);
$em->persist($user);
$em->flush();
}
$em->persist($booking);
$experience->addBooking($booking);
$customer = $user;
$customer->addBooking($booking);
$booking->setReference('B' . $booking->getId() . 'C' . $customer->getId());
$em->persist($experience);
$em->persist($customer);
$em->persist($booking);
$em->flush();
$this->addFlash('success', 'Reservation creer avec succées. ID : #' . $booking->getId());
return $this->redirectToRoute('admin_new_booking');
}
return $this->render('admin/booking/admin/adminNewBooking.html.twig', [
'experiences' => $experiences,
]);
}
}