<?php
// src/Controller/Frontend/FrontendController.php
namespace App\Controller\Frontend;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Blog;
use App\Entity\Country;
use App\Entity\Picture;
use App\Repository\CategoryRepository;
use App\Entity\Project;
use App\Entity\ProjectImage;
use App\Entity\ProjectAmenities;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Request;
use App\Service\MailHelper;
use Symfony\Component\Asset\Packages;
use Symfony\Component\HttpFoundation\RequestStack;
class FrontendController extends AbstractController
{
/**
* @Route("/", name="homepage_website", methods={"GET", "POST"})
*/
public function homepage(Request $request, EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
$pictures = $entityManager->getRepository(Picture::class)->findBy(["is_active" => 1]);
return $this->render('website/index.html.twig', [
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email,
"pictures" => $pictures
]);
}
/**
* @Route("/partners_website", name="homepage_partner", methods={"GET", "POST"})
*/
public function partnersPage(Request $request, EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
$pictures = $entityManager->getRepository(Picture::class)->findBy(["is_active" => 1]);
return $this->render('website/partners.html.twig', [
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email,
"pictures" => $pictures
]);
}
/**
* @Route("/service_website", name="homepage_service", methods={"GET", "POST"})
*/
public function servicepage(Request $request, EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
return $this->render('website/service.html.twig', [
"page" => 1,
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email
]);
}
/**
* @Route("/us_website", name="homepage_us", methods={"GET", "POST"})
*/
public function uspage(Request $request, EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
return $this->render('website/us.html.twig', [
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email
]);
}
/**
* @Route("/blog_website", name="homepage_blog", methods={"GET", "POST"})
*/
public function blogpage(Request $request , EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
//$blogs = $entityManager->getRepository(Blog::class)->findBy(["is_active" => 1, "is_public" => 1]);
$page = $request->query->getInt('page', 1); // Valor por defecto 1
$limit = 8; // Número de registros por página
$offset = ($page - 1) * $limit; // Cálculo del offset
// Obtener el repositorio de la entidad Blog
$blogRepository = $entityManager->getRepository(Blog::class);
// Crear la consulta para obtener los registros
$query = $blogRepository->createQueryBuilder('b')
->where('b.is_active = 1') // Condición para is_active
->andWhere('b.is_public = 1') // Condición para is_public
->orderBy('b.created_at', 'DESC') // Suponiendo que tienes un campo createdAt para ordenar
->setFirstResult($offset) // Establece el offset
->setMaxResults($limit) // Establece el límite de registros
->getQuery();
// Ejecutar la consulta
$blogs = $query->getResult();
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
return $this->render('website/blog.html.twig', [
"list"=> $blogs,
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email
]);
}
/**
* @Route("/blog_more_website", name="homepage_blog_more", methods={"GET", "POST"})
*/
public function blogMorepage(Request $request , EntityManagerInterface $entityManager): Response
{
$page = 1000;
if($request->query->has("page")){
$page = $request->get("page");
}
$limit = 8; // Número de registros por página
$offset = ($page - 1) * $limit; // Cálculo del offset
// Obtener el repositorio de la entidad Blog
$blogRepository = $entityManager->getRepository(Blog::class);
// Crear la consulta para obtener los registros
$query = $blogRepository->createQueryBuilder('b')
->where('b.is_active = 1') // Condición para is_active
->andWhere('b.is_public = 1') // Condición para is_public
->orderBy('b.created_at', 'DESC') // Suponiendo que tienes un campo createdAt para ordenar
->setFirstResult($offset) // Establece el offset
->setMaxResults($limit) // Establece el límite de registros
->getQuery();
// Ejecutar la consulta
$blogs = $query->getResult();
return $this->render('website/blog_more.html.twig', [
"list" => $blogs
]);
}
/**
* @Route("/blog_search_website", name="homepage_blog_search", methods={"GET", "POST"})
*/
public function searchMorepage(Request $request , EntityManagerInterface $entityManager): Response
{
$search = "";
if($request->query->has("search")){
$search = $request->get("search");
}
// Obtener el repositorio de la entidad Blog
$blogRepository = $entityManager->getRepository(Blog::class);
// Crear la consulta para obtener los registros
$query = $blogRepository->createQueryBuilder('b')
->where('b.is_active = 1') // Condición para is_active
->andWhere('b.is_public = 1')
->andWhere('b.description LIKE :value')
->setParameter('value', '%'.$search.'%')
->orderBy('b.created_at', 'DESC') // Suponiendo que tienes un campo createdAt para ordenar
->getQuery();
// Ejecutar la consulta
$blogs = $query->getResult();
return $this->render('website/blog_more.html.twig', [
"list" => $blogs,
"search" => $search
]);
}
/**
* @Route("/blog_view_website", name="homepage_blog_view", methods={"GET", "POST"})
*/
public function blogViewpage(Request $request , EntityManagerInterface $entityManager): Response
{
if($request->query->has("blog")){
$selected_blog_id = $request->get("blog");
}else{
return $this->redirectToRoute('homepage_blog', [], Response::HTTP_SEE_OTHER);
}
$blog = $entityManager->getRepository(Blog::class)->findOneBy(["blogId" => $selected_blog_id]);
$recomended = $entityManager->getRepository(Blog::class)->getRecomended($selected_blog_id);
$currentUrl = urlencode($request->getUri());
return $this->render('website/blog_view.html.twig', [
"blog" => $blog,
"recomended" => $recomended,
"currentUrl" => $currentUrl
]);
}
/**
* @Route("/contact_website", name="homepage_contact", methods={"GET", "POST"})
*/
public function contactpage(Request $request , EntityManagerInterface $entityManager, SessionInterface $session): Response
{
if ($request->isMethod('POST')) {
$cid = $request->request->get('cid');
$session->set('cid', $cid);
}else{
$cid = $session->get('cid', 1);
}
$countries = $entityManager->getRepository(Country::class)->findBy(["is_active" => 1]);
$country = $entityManager->getRepository(Country::class)->findOneBy(["countryId" => $cid]);
if ($session->has('send_email')) {
$send_email = $session->get('send_email');
$session->remove('send_email');
} else {
$send_email = "";
}
return $this->render('website/contact.html.twig', [
"cid" => $cid,
"country" => $country,
"countries" => $countries,
"send_email" => $send_email
]);
}
/**
* @Route("/contact_send_website", name="homepage_contact_send", methods={"GET", "POST"})
*/
public function contactSend(Packages $assets, RequestStack $requestStack, Request $request ,EntityManagerInterface $entityManager, MailHelper $mailHelper, SessionInterface $session): Response
{
$relativeUrl = $assets->getUrl('assets/images/logo.png');
$request = $requestStack->getCurrentRequest();
$absoluteUrl = $request->getSchemeAndHttpHost() . $relativeUrl;
$to = "marco.cancino@digifact.com";
$return = "homepage_website";
if($request->request->has('from')){
$return = $request->get('from');
}
if($request->request->has('from2')){
$return = $request->get('from2');
}
$name = $request->get('name');
$country = $request->get('country');
$email = $request->get('email');
$phone = $request->get('phone');
$business = "";
if($request->request->has('business')){
$business = $request->get('business');
}
$nit = "";
if($request->request->has('nit')){
$nit = $request->get('nit');
}
if( $request->request->has('nit') ){
$title = "Contacto pagina web Digifact";
}else{
$title = "Contacto socio pagina web Digifact";
}
$content = "Nuevo contacto desde la pagina web de Digifact. <br><br><b>Nombre:</b> $name<br><b>País:</b> $country <br><b>Teléfono:</b> $phone<br><b>Email:</b> $email";
if($request->request->has('business')){
$content = $content."<br><b>Empresa:</b> $business" ;
}
if($request->request->has('nit')){
$content = $content."<br><b>Identificador tributario:</b> $nit" ;
}
$mailHelper->sendEmail($to, $title, $content, $absoluteUrl) ;
$session->set('send_email', '1');
return $this->redirectToRoute($return, [], Response::HTTP_SEE_OTHER);
}
}