<?php
namespace App\Controller\Main;
use App\Entity\Adres;
use App\Entity\AlbumDil;
use App\Entity\AnasayfaBolumDil;
use App\Entity\AnasayfaDil;
use App\Entity\Ayarlar;
use App\Entity\BasinDil;
use App\Entity\BlogBolumDil;
use App\Entity\BlogBolumResim;
use App\Entity\BlogResim;
use App\Entity\ContactDil;
use App\Entity\ContactMesaj;
use App\Entity\Dil;
use App\Entity\Katalog;
use App\Entity\UretimlerBolum;
use App\Entity\SayfaBaslik;
use App\Entity\SayfaBaslikDil;
use App\Entity\PopupResim;
use App\Entity\Salon;
use App\Entity\Kurumsal;
use App\Entity\KurumsalDil;
use App\Entity\Uretimler;
use App\Entity\UretimlerBolumDil;
use App\Entity\UretimlerDil;
use App\Entity\SalonDil;
use App\Entity\Slider;
use App\Entity\SliderDil;
use App\Entity\SosyalMedya;
use App\Entity\Blog;
use App\Entity\BlogBolum;
use App\Entity\BlogDil;
use App\Entity\UrunGruplari;
use App\Entity\UrunGruplariDil;
use App\Entity\UrunGruplariUrunler;
use App\Entity\UrunKategorileri;
use App\Entity\UrunKategorileriDil;
use App\Entity\UrunKategoriResim;
use App\Entity\UrunSayfasi;
use App\Entity\Video;
use App\Repository\AyarlarRepository;
use App\Repository\BlogBolumRepository;
use App\Repository\KatalogRepository;
use App\Repository\SliderDilRepository;
use App\Repository\SliderRepository;
use App\Service\Helper;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\Exception\TransportException;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use function Symfony\Component\Translation\t;
#[Route('/{_locale}')]
class DefaultController extends AbstractController
{
public function __construct(private readonly EntityManagerInterface $em)
{
}
#[Route('/login', name: 'app_login')]
public function login(AuthenticationUtils $authenticationUtils): Response
{
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('main/login/index.html.twig', [
'last_username' => $lastUsername,
'error' => $error,
]);
}
public function header(Request $request): Response
{
$em = $this->em;
$diller = $em->getRepository(Dil::class)->findBy(array('del' => 0));
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$urunkategorileri = $em->getRepository(UrunKategorileri::class)->findBy(array('del' => 0), array('sira' => 'asc'));
$sosyalmedya = $em->getRepository(SosyalMedya::class)->findBy(array('del' => 0));
return $this->render('main/default/header.html.twig', array(
'diller' => $diller,
'adresler' => $adresler,
'urunkategorileri' => $urunkategorileri,
'sosyalmedya' => $sosyalmedya,
'route_name' => $request->attributes->get('_ route')
));
}
public function footer(Request $request): Response
{
$em = $this->em;
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$sosyalmedya = $em->getRepository(SosyalMedya::class)->findBy(array('del' => 0));
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$urunkategorileri = $em->getRepository(UrunKategorileri::class)->findBy(array('del' => 0), array('sira' => 'asc'));
$urunKategorileriDil2 = $em->getRepository(UrunKategorileriDil::class)->findBy(['gosterFooter' => 1]);
$uretimler = $em->getRepository(UretimlerBolum::class)->createQueryBuilder('ur')
->join('ur.diller', 'diller')
->andWhere('ur.sira', 'asc')
->where('diller.gosterFooter = 1')
->getQuery()
->getResult();
$blog = $em->getRepository(Blog::class)->createQueryBuilder('bl')
->join('bl.diller', 'diller')
->andWhere('bl.del = 0')
->where('diller.gosterFooter = 1')
->getQuery()
->getResult();
return $this->render('main/default/footer.html.twig', array(
'adresler' => $adresler,
'urunkategorileri' => $urunkategorileri,
'urunkategorileriDil' => $urunKategorileriDil2,
'sosyalmedya' => $sosyalmedya,
'uretimler' => $uretimler,
'blog' => $blog,
'adresler' => $adresler,
));
}
#[Route('/', name: 'app_main_default')]
public function index(Request $request, SliderRepository $sliderRepository, SliderDilRepository $sliderDilRepository): Response
{
$em = $this->em;
$locale = $request->getLocale();
$entity = $sliderDilRepository->findBy(['del' => 0]);
$uretim = $em->getRepository(UretimlerBolum::class)->createQueryBuilder('ur')
->leftJoin('ur.diller', 'diller')
->where('ur.del = 0')
->getQuery()
->getResult();
$entityDil = $sliderDilRepository->createQueryBuilder('t')
->select('sd.sira as sSira', 't.baslik', 'sd.resim as sResim')
->join('t.slider', 'sd')
->where('t.del = 0')
->orderBy('sd.sira', 'ASC')
->getQuery()->getResult();
$baslik = $em->getRepository(AnasayfaDil::class)->createQueryBuilder('t')
->select('t.title', 't.description')
->join('t.dil', 'd')
->where('d.kisaBaslik = :kisaBaslik')
->setParameter('kisaBaslik', $locale)
->getQuery()->getOneOrNullResult();
$bolumler = $em->getRepository(AnasayfaBolumDil::class)->createQueryBuilder('t')
->join('t.dil', 'd')
->where('d.kisaBaslik = :kisaBaslik')
->setParameter('kisaBaslik', $locale)
->getQuery()->getResult();
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$urunkategorileri = $em->getRepository(UrunKategorileri::class)->findBy(array('del' => 0), array('sira' => 'asc'));
$urunkategorileriResimler = $em->getRepository(UrunKategoriResim::class)->findBy(array('del' => 0), array('sira' => 'asc'));
$urunkategorileriResimler2 = $em->getRepository(UrunKategoriResim::class)->findBy(array('del' => 0), array('sira' => 'desc'));
$urunKategorileriDil2 = $em->getRepository(UrunKategorileriDil::class)->findBy(['goster' => 1]);
return $this->render('main/default/index.html.twig', array(
'entity' => $entity,
'baslik' => $baslik,
'bolumler' => $bolumler,
'adresler' => $adresler,
'entities' => $entityDil,
'uretim' => $uretim,
'urunkategorileri' => $urunkategorileri,
'urunKategorileriDil2' => $urunKategorileriDil2,
'urunKategorileriResim' => $urunkategorileriResimler,
'urunKategorileriResim2' => $urunkategorileriResimler2,
));
}
#[Route(path: [
'tr' => '/hakkimizda',
'en' => '/about-us',
'ar' => '/about-us',
], name: 'app_main_hakkimizda')]
public function hakkimizda(Request $request): Response
{
$em = $this->em;
$locale = $request->getLocale();
$entity = $em->getRepository(KurumsalDil::class)->findBy(array('del' => 0));
$sosyalmedya = $em->getRepository(SosyalMedya::class)->findBy(array('del' => 0));
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$hakkimizda = $em->getRepository(Kurumsal::class)->findBy(array('del' => 0));
$sayfa = $em->getRepository(SayfaBaslik::class)->createQueryBuilder('sb')
->join('sb.sayfabaslikDilleri', 'sayfabaslikDilleri')
->where('sb.del = 0')
->getQuery()
->getResult();
return $this->render('main/default/hakkimizda.html.twig', [
'kurumsal' => $entity,
'sosyalmedya' => $sosyalmedya,
'hakkimizda' => $hakkimizda,
'sayfa' => $sayfa,
'contact' => $adresler,
]);
}
#[Route(path: [
'tr' => '/uretim',
'en' => '/production',
'ar' => '/production',
], name: 'app_main_uretim')]
public function uretim(Request $request): Response
{
$em = $this->em;
$queryBuilder = $em->getRepository(UretimlerBolum::class)->createQueryBuilder('lb');
$entities = $queryBuilder
->leftJoin('lb.diller', 'diller')
->leftJoin('lb.resimler', 'resimler')
->where('lb.del = 0')
->getQuery()
->getResult();
$sayfa = $em->getRepository(SayfaBaslik::class)->createQueryBuilder('sb')
->join('sb.sayfabaslikDilleri', 'sayfabaslikDilleri')
->where('sb.del = 0')
->getQuery()
->getResult();
return $this->render('main/default/uretim.html.twig', [
'uretimlerDil' => $entities,
'sayfa' => $sayfa,
]);
}
#[Route(path: [
'tr' => '/urun-gruplari/{code}',
'en' => '/product-groups/{code?}',
'ar' => '/product-groups/{code}'
], name: 'app_main_urun_gruplari')]
public function urunGruplari(Request $request, AyarlarRepository $ayarlarRepository): Response
{
$em = $this->em;
$locale = $request->getLocale();
$ayarlar = $ayarlarRepository->findAll();
$urunler = $em->getRepository(UrunGruplariUrunler::class)->createQueryBuilder('t')
->join('t.diller', 'diller')
->where('t.del = 0')
->orderBy('diller.baslik', 'asc');
$sayfa = $em->getRepository(SayfaBaslik::class)->createQueryBuilder('sb')
->join('sb.sayfabaslikDilleri', 'sayfabaslikDilleri')
->where('sb.del = 0')
->getQuery()
->getResult();
$urunKategorileriDil = '';
if ($request->get('link') != '') {
exit();
$urunKategorileriDil = $em->getRepository(UrunKategorileriDil::class)->findOneBy(array('link' => $request->get('link')));
$urunler = $urunler
->join('t.urungruplari', 'urungruplari')
->join('urungruplari.urunkategorileri', 'urunkategorileri')
->join('urunkategorileri.diller', 'urunkategorileridiller')
->andWhere('urunkategorileridiller.link = :link')->setParameter('link', $request->get('link'));
}
$urunGruplariDil = '';
if ($request->get('link2') != '') {
exit();
$urunGruplariDil = $em->getRepository(UrunGruplariDil::class)->findOneBy(array('link' => $request->get('link2')));
$urunler = $urunler
->join('urungruplari.diller', 'urungruplaridiller')
->andWhere('urungruplaridiller.link = :link2')->setParameter('link2', $request->get('link2'));
}
$urunler = $urunler->getQuery()->getResult();
$urunkategorileri = $em->getRepository(UrunKategorileri::class)->createQueryBuilder('kt')
->join('kt.diller', 'diller')
->join('kt.gruplar', 'gruplar')
->andWhere('kt.del = 0')
->andWhere('diller.del = 0')
->andWhere('gruplar.del = 0')
->getQuery()
->getResult();
return $this->render('main/default/urun_gruplari.html.twig', array(
'urunKategorileriDil' => $urunKategorileriDil,
'urunGruplariDil' => $urunGruplariDil,
'urunkategorileri' => $urunkategorileri,
'urunler' => $urunler,
'ayarlar' => $ayarlar,
'sayfa' => $sayfa,
));
}
#[Route(path: [
'tr' => '/urun-gruplari_detay/{code?}',
'en' => '/product-group-details/{code?}',
'ar' => '/product-group-details/{code?}'
], name: 'app_main_urun_gruplari_detay')]
public function urunGruplariDetay(Request $request, $code, AyarlarRepository $ayarlarRepository): Response
{
$em = $this->em;
$locale = $request->getLocale();
$ayarlar = $ayarlarRepository->findAll();
$sayfa = $em->getRepository(SayfaBaslik::class)->createQueryBuilder('sb')
->join('sb.sayfabaslikDilleri', 'sayfabaslikDilleri')
->where('sb.del = 0')
->getQuery()
->getResult();
$urunkategorileri = $em->getRepository(UrunKategorileri::class)->createQueryBuilder("uk")
->leftJoin("uk.diller", "diller")
->leftJoin("uk.gruplar", "gruplar")
->leftJoin("gruplar.diller", "dillerGrup")
->leftJoin("gruplar.urunler", "urunler")
->leftJoin("urunler.diller", "dillerUrun")
->andWhere("uk.del = 0")
->andWhere("uk.code = :code")
->setParameter('code', $code)
->getQuery()
->getResult();
return $this->render('main/default/urun_gruplari_detay.html.twig', array(
'urunkategorileri' => $urunkategorileri,
'ayarlar' => $ayarlar,
'sayfa' => $sayfa,
));
}
#[Route(path: [
'tr' => '/cerez-politikasi',
'en' => '/cookie-policy',
'ar' => '/cookie-policy',
], name: 'app_main_cerez_politikasi')]
public function cerezPolitikasi(Request $request): Response
{
$em = $this->em;
$locale = $request->getLocale();
$entity = $em->getRepository(KurumsalDil::class)->createQueryBuilder('t')
->join('t.kurumsal', 'kurumsal')
->join('t.dil', 'dil')
->where('dil.kisaBaslik = :kisaBaslik')->setParameter('kisaBaslik', $locale)
->andWhere('kurumsal.id = 2')
->getQuery()->getOneOrNullResult();
return $this->render('main/default/cerez_politikasi.html.twig', ['entity' => $entity]);
}
#[Route(path: [
'tr' => '/blog',
'en' => '/blog',
'ar' => '/blog',
], name: 'app_main_blog')]
public function blog(Request $request): Response
{
$em = $this->em;
$queryBuilder = $em->getRepository(Blog::class)->createQueryBuilder('lb');
$entities = $queryBuilder
->leftJoin('lb.diller', 'diller')
->leftJoin('lb.resimler', 'resimler')
->leftJoin('lb.bolumler', 'bolumler')
->where('lb.del = 0')
->getQuery()
->getResult();
$sayfa = $em->getRepository(SayfaBaslik::class)->createQueryBuilder('sb')
->join('sb.sayfabaslikDilleri', 'sayfabaslikDilleri')
->where('sb.del = 0')
->getQuery()
->getResult();
return $this->render('main/default/blog.html.twig', [
'sayfa' => $sayfa,
'blogResim' => $entities,
]);
}
#[Route('/bolum/{code}/', name: 'app_main_bolum')]
public function bolum(request $request, $code, BlogBolumRepository $blogBolumRepository): Response
{
$em = $this->em;
$locale = $request->getLocale();
$blog = $blogBolumRepository->findOneBy(['code' => $code]);
if (!$blog) {
throw $this->createNotFoundException('Blog not found');
}
$entity = $em->getRepository(BlogBolum::class)->createQueryBuilder('bb')
->leftJoin('bb.diller', 'diller')
->leftJoin('bb.resimler', 'resimler')
->getQuery()
->getResult();
return $this->render('main/default/blog-details.html.twig', [
'entities' => $blogBolumRepository->findBy(array('blog' => $blog, 'del' => 0), array('sira' => 'asc')),
'entity' => $entity,
]);
}
#[Route(path: [
'tr' => '/katalog',
'en' => '/catalogue',
'ar' => '/catalogue',
], name: 'app_main_katalog')]
public function katalog(Request $request, KatalogRepository $katalogRepository,AyarlarRepository $ayarlarRepository): Response
{
$em = $this->em;
$katalog = $katalogRepository->findBy(array('del' => 0), array('sira' => 'asc'));
$ayarlar = $ayarlarRepository->findAll();
return $this->render('main/default/katalog.html.twig', [
'entity' => $katalog,
'ayarlar' => $ayarlar,
]);
}
#[Route('/kvkk', name: 'app_main_kvkk')]
public function kvkk(Request $request): Response
{
$em = $this->em;
$locale = $request->getLocale();
$entity = $em->getRepository(KurumsalDil::class)->createQueryBuilder('t')
->join('t.kurumsal', 'kurumsal')
->join('t.dil', 'dil')
->where('dil.kisaBaslik = :kisaBaslik')->setParameter('kisaBaslik', $locale)
->andWhere('kurumsal.id = 3')
->getQuery()->getOneOrNullResult();
return $this->render('main/default/kvkk.html.twig', ['entity' => $entity]);
}
#[Route(path: [
'tr' => '/iletisim',
'en' => '/contact-us',
'ar' => '/contact-us',
], name: 'app_main_iletisim')]
public function iletisim(Request $request, MailerInterface $mailer, AyarlarRepository $ayarlarRepository): Response
{
$em = $this->em;
$locale = $request->getLocale();
$ayarlar = $ayarlarRepository->findAll();
$entity = $em->getRepository(ContactDil::class)->createQueryBuilder('t')
->join('t.dil', 'd')
->where('d.kisaBaslik = :kisaBaslik')
->setParameter('kisaBaslik', $locale)
->getQuery()->getOneOrNullResult();
$adresler = $em->getRepository(Adres::class)->findBy(array('del' => 0));
$sosyalmedya = $em->getRepository(SosyalMedya::class)->findBy(array('del' => 0));
if ($request->isMethod('POST')) {
$ad = $request->get('ad');
$soyad = $request->get('soyad');
$email = $request->get('email');
$telefon = $request->get('telefon');
$not = $request->get('not');
$status = 'success';
$newMail = (new Email())
->from('sistem@elefante.com.tr')
->to('info@elefante.com.tr')
/*->from('ik@askondemir.com')
->to('ik@askondemir.com')*/
->subject('İletişim Formu')
->html('<b>Ad: </b>' . $ad . '<br>' .
'<b>Soyad: </b>' . $soyad . '<br>' .
'<b>E-Mail: </b>' . $email . '<br>' .
'<b>Telefon: </b>' . $telefon . '<br>' .
'<b>Not: </b>' . $not);
$iletisimMesaj = new ContactMesaj();
$iletisimMesaj->setAdsoyad($ad . ' ' . $soyad);
$iletisimMesaj->setTelefon($telefon);
$iletisimMesaj->setEmail($email);
$iletisimMesaj->setMesaj($not);
$em->persist($iletisimMesaj);
$em->flush();
try {
$mailer->send($newMail);
} catch (TransportException $e) {
$status = 'error';
dd($e);
}
return $this->redirectToRoute('app_main_iletisim', ['mailStatus' => $status]);
}
return $this->render('main/default/iletisim.html.twig', [
'entity' => $entity,
'adresler' => $adresler,
'sosyalmedya' => $sosyalmedya,
]);
}
}