<?php
namespace App\Controller;
use App\Entity\User;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mime\Email;
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response, JsonResponse};
use Symfony\Component\Routing\Annotation\Route;
use App\Utils\Ticketing;
use App\Utils\Functions;
class HomeController extends AbstractController
{
private $ticketing;
private $functions;
/**
* @var ManagerRegistry
*/
private $doctrine;
public function __construct(Ticketing $ticketing, Functions $functions, ManagerRegistry $doctrine)
{
$this->ticketing = $ticketing;
$this->functions = $functions;
$this->doctrine = $doctrine;
}
/**
* @Route("/", name="home")
*/
public function index(Request $request): RedirectResponse
{
// Obtiene el locale actual
$locale = $request->getLocale();
// Redirige a la ruta correspondiente segĂșn el locale
return $this->redirectToRoute('home_main', ['_locale' => $locale]);
}
/**
* @Route("/{_locale}/home", name="home_main")
*/
public function home(Request $request): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
// Events
$events = $this->ticketing->curl("events?dateNext=true&orderBy=eventDate&order=DESC&limit=24", "normal", [], "GET");
if (empty($events['events'])) {
$events['events'] = [];
}
if (empty($events)) $events["events"] = '';
if (empty($marketplace)) $marketplace['tickets'] = '';
return $this->render('home.html.twig', [
'events' => $events["events"],
'marketplace' => $events["events"],
]);
}
/**
* @Route("/{_locale}/terms-and-conditions", name="terms")
*/
public function terms(Request $request): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
return $this->render('terms.html.twig');
}
/**
* @Route("/policy-privacy-cookies", name="policy")
*/
public function policy(Request $request): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
return $this->render('policy.html.twig');
}
/**
* @Route("/{_locale}/contact", name="contact")
*/
public function contact(Request $request, MailerInterface $mailer): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
$status = "";
if($request->get('send-form')){
$name = $request->get('name');
$surname = $request->get('surname');
$email = $request->get('email');
$phone = $request->get('phone');
$text = $request->get('subject');
$mail = (new TemplatedEmail())
->from($this->getParameter('mailer_from'))
->to('contacto@dowcenterbahia.com.ar')
->cc('ahernandez@oaro.net')
->subject('DOW - Solicitud de contacto')
->htmlTemplate('mail/contact.html.twig')
->context([
'name' => $name,
'surname' => $surname,
'correo' => $email,
'phone' => $phone,
'text' => $text
]);
$mailer->send($mail);
$status = "done";
}
return $this->render('user/contact.html.twig', [
'status' => $status
]);
}
/**
* @Route("/{_locale}/work", name="work")
*/
public function workWithUs(Request $request, MailerInterface $mailer): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
$status = "";
if($request->get('send-form')){
$name = $request->get('name');
$surname = $request->get('surname');
$email = $request->get('email');
$phone = $request->get('phone');
$text = $request->get('subject');
$mail = (new TemplatedEmail())
->from($this->getParameter('mailer_from'))
->to('hi@masqueentradas.com')
->subject('DOW - Trabaja con nosotros')
->htmlTemplate('mail/contact.html.twig')
->context([
'name' => $name,
'surname' => $surname,
'correo' => $email,
'phone' => $phone,
'text' => $text
]);
$mailer->send($mail);
$status = "done";
}
return $this->render('user/work-with-us.html.twig', [
'status' => $status
]);
}
/**
* @Route("/{_locale}/faqs", name="faqs")
*/
public function faqs(Request $request): Response
{
// General function to set discount ref/affId
$this->functions->setDiscount($request);
return $this->render('faqs.html.twig');
}
/**
* @Route("/check_captcha", name="xml_check_captcha")
*/
public function checkCaptcha(Request $request): Response
{
return new JsonResponse([
'status' => $this->functions->checkCaptcha($request->get('g-recaptcha-response'))
]);
}
/**
* @Route("/{_locale}/site-map",defaults={"_format"="xml"}, name="site_map")
*/
public function siteMap(Request $request)
{
$response = new Response();
$response->headers->set('Content-Type', 'text/xml');
return $this->render('site-map.html.twig');
}
/**
* @param $sintax
* @return array|mixed
*/
private function onSaleByUsers(){
// On sale false
$sintax = "&onSaleByUser=true";
// Searching params for tickets
$userAlias = ' ';
$page = $this->ticketing->curl("tickets?orderBy=price".$sintax, "normal", [], "GET");
foreach($page["tickets"] as $key => $ticket){
$em = $this->doctrine->getManager();
if (!empty($page["tickets"][$key]["user"]['userId']))
$userAlias = $em->getRepository(User::class)->findOneBy(['user_id' => $page["tickets"][$key]["user"]["userId"]])->getAlias();
$page["tickets"][$key]["user"]["userAlias"] = $userAlias;
}
return $page;
}
}