<?php
namespace App\Controller;
use App\Entity\Trip;
use App\Repository\BookingRepository;
use App\Repository\SkiUserRepository;
use App\Repository\TripRepository;
use App\Repository\UserRepository;
use App\Service\MailService;
use Doctrine\ORM\EntityManagerInterface;
use http\Client\Curl\User;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Routing\Annotation\Route;
use SymfonyCasts\Bundle\VerifyEmail\VerifyEmailHelperInterface;
class IndexController extends AbstractController
{
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* ProductController constructor.
*
* @param EntityManagerInterface $entityManager
*/
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
#[Route('/', name: 'index')]
public function index(TripRepository $tripRepository, SkiUserRepository $skiUserRepository, BookingRepository $bookingRepository, UserRepository $userRepository): Response
{
if ($this->isGranted('ROLE_ADMIN')) {
return $this->redirectToRoute('view_all_skiclubs');
}
$subUser = $userRepository->findSubUserByExampleMainUser($this->getUser());
return $this->render('index/index.html.twig', [
'controller_name' => 'IndexController',
'user' => $this->getUser(),
'bookings' => $bookingRepository->findBookingByUser($this->getUser()),
'members' => $skiUserRepository->findAll(),
'trips' => $tripRepository->findAll(),
'time' => (new \DateTime()),
'month' => (new \DateTime())->format('m'),
'main_user' => $this->getUser(),
'subUsers' => $subUser
]);
}
#[Route('/startseite', name: 'startseite')]
public function startseite(Request $request, VerifyEmailHelperInterface $helper, MailerInterface $mailer, EntityManagerInterface $entityManager): Response
{
$form = $this->createFormBuilder()
->add('skiclub', TextType::class, [
'required' => false,
'data_class' => null,
])
->add('verantwortlicher', TextType::class, [
'required' => false,
'data_class' => null,
])
->add('telefonnummer', NumberType::class, [
'required' => false,
'data_class' => null,
])
->add('email', TextType::class, [
'required' => false,
'data_class' => null,
])
->add('text', TextType::class, [
'required' => false,
])
->add('Senden', SubmitType::class)
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$offerRequest = $form->getData();
$mailService = new MailService($helper, $mailer, $entityManager);
$mailService->offerRequest($offerRequest);
if ($mailService->offerRequest($offerRequest) == null) {
$this->addFlash(
'success',
'Vielen Dank für Ihre Anfrage');
}
}
return $this->render('index/startseite.html.twig', [
'controller_name' => 'IndexController',
'form' => $form->createView(),
]);
}
#[Route('/impressum', name: 'imprint')]
public function imprint(TripRepository $tripRepository,): Response
{
return $this->render('index/imprint.html.twig', [
'controller_name' => 'IndexController',
]);
}
#[Route('/datenschutz', name: 'privacy')]
public function privacy(TripRepository $tripRepository,): Response
{
return $this->render('index/privacy.html.twig', [
'controller_name' => 'IndexController',
]);
}
}