<?php
namespace App\Controller;
use App\Entity\AboutHim;
use App\Entity\AboutMuseum;
use App\Entity\Authors;
use App\Entity\Comments;
use App\Entity\Contact;
use App\Entity\Creations;
use App\Entity\Discuss;
use App\Entity\HomePage;
use App\Entity\Impact;
use App\Entity\Interesting;
use App\Entity\LastCreations;
use App\Entity\Museum;
use App\Entity\NewCreations;
use App\Entity\NewImpact;
use App\Entity\NewOptionAuthors;
use App\Entity\OptionAuthors;
use App\Entity\OurNotebooks;
use App\Entity\Page;
use App\Entity\Sayings;
use App\Form\Type\CollapseType;
use App\Form\Type\CollapseTypeFirst;
use App\Repository\PageRepository;
use App\Service\MailerService;
use App\Service\UuidService;
use Monolog\Handler\SwiftMailerHandler;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
class PageController extends AbstractController
{
/**
* @var PageRepository
*/
private $pageRepository;
/**
* PageController constructor.
* @param PageRepository $pageRepository
*/
public function __construct(PageRepository $pageRepository)
{
$this->pageRepository = $pageRepository;
}
public function footer()
{
$em = $this->getDoctrine();
$contact = $em->getRepository(Contact::class)->findAll();
return $this->render('parts/footer.html.twig', [
'contact' => $contact[0],
]);
}
/**
* @Route("/", name="page_index")
*/
public function index()
{
$em = $this->getDoctrine()->getManager();
$homePage = $em->getRepository(HomePage::class)->findAll();
$authors = $em->getRepository(Authors::class)->createQueryBuilder('a')
->orderBy('a.orderId', 'ASC')
->getQuery()
->setMaxResults(4)
->getResult();
$page = $em->getRepository(Page::class)->find(1);
return $this->render('page/index.html.twig', [
'homePage' => $homePage[0],
'authors' => $authors,
'page' => $page,
]);
}
/**
* @Route("/view/{slug}", name="page_view")
*/
public function view($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$page = $em->getRepository(Page::class)->find(5);
return $this->render('page/view.html.twig', [
'item' => $authors,
'page' => $page
]);
}
/**
* @Route("/options/{slug}", name="page_options")
*/
public function options($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$optionAuthors = $em->getRepository(OptionAuthors::class)->findOneBy(['authors' => $authors]);
$option = $em->getRepository(NewOptionAuthors::class)->findOneBy(['authors' => $authors]);
$page = $em->getRepository(Page::class)->find(6);
return $this->render('page/options.html.twig', [
'item' => $authors,
'optionAuthors' => $optionAuthors,
'option' => $option,
'page' => $page,
]);
}
/**
* @Route("/authors", name="page_authors")
*/
public function authors(PaginatorInterface $paginator, Request $request)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->createQueryBuilder('a')
->orderBy('a.orderId', 'ASC')
->getQuery()
->getResult();
$appointments = $paginator->paginate(
$authors,
$request->query->getInt('page', 1),
10
);
$page = $em->getRepository(Page::class)->find(2);
return $this->render('page/authors.html.twig', [
'authors' => $authors,
'appointments' => $appointments,
'page' => $page
]);
}
/**
* @Route("/search", name="get_search")
*/
public function search(Request $request)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->createQueryBuilder('a');
$creat = $em->getRepository(LastCreations::class)->createQueryBuilder('nc');
$opt = $em->getRepository(NewOptionAuthors::class)->createQueryBuilder('op');
$say = $em->getRepository(Sayings::class)->createQueryBuilder('say');
$int = $em->getRepository(Interesting::class)->createQueryBuilder('int');
$imp = $em->getRepository(NewImpact::class)->createQueryBuilder('imp');
$abou = $em->getRepository(AboutHim::class)->createQueryBuilder('abou');
$mus = $em->getRepository(Museum::class)->createQueryBuilder('mus');
if ($request->get('search') && !empty($request->get('search'))) {
$allData = [];
$authors
->select('a.id as authors_id')
->where('a.fullName LIKE :search Or a.titleText LIKE :search Or a.shortText LIKE :search Or a.question LIKE :search Or a.bottomPartBoldText LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$authors_information = $authors->getQuery()->getResult();
if (!empty($authors_information)) {
$allData['authors'] = $authors_information;
}
$creat
->select('nc.id as new_creations_id')
->Where('nc.collection LIKE :search Or nc.title LIKE :search ')
->setParameter('search', '%' . $request->get('search') . '%');
$new_creations_information = $creat->getQuery()->getResult();
if (!empty($new_creations_information)) {
$allData['creations'] = $new_creations_information;
}
$opt
->select('op.id as new_options_id')
->Where('op.collection LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_options = $opt->getQuery()->getResult();
if (!empty($new_options)) {
$allData['options'] = $new_options;
}
$say
->select('say.id as new_sayings_id')
->Where('say.text LIKE :search Or say.bottomText LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_sayings = $say->getQuery()->getResult();
if (!empty($new_sayings)) {
$allData['sayings'] = $new_sayings;
}
$int
->select('int.id as new_interesting_id')
->Where('int.rightText LIKE :search Or int.text LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_interesting = $int->getQuery()->getResult();
if (!empty($new_interesting)) {
$allData['interesting'] = $new_interesting;
}
$imp
->select('imp.id as new_impact_id')
->Where('imp.collection LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_impact = $imp->getQuery()->getResult();
if (!empty($new_impact)) {
$allData['impact'] = $new_impact;
}
$imp
->select('imp.id as new_impact_id')
->Where('imp.collection LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_impact = $imp->getQuery()->getResult();
if (!empty($new_impact)) {
$allData['impact'] = $new_impact;
}
$abou
->select('abou.id as new_about_id')
->Where('abou.rightPart LIKE :search Or abou.BottomPart LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_about = $abou->getQuery()->getResult();
if (!empty($new_about)) {
$allData['about'] = $new_about;
}
$mus
->select('mus.id as new_museum_id')
->Where('mus.museum LIKE :search')
->setParameter('search', '%' . $request->get('search') . '%');
$new_museum = $mus->getQuery()->getResult();
if (!empty($new_museum)) {
$allData['museum'] = $new_museum;
}
}
$author = [];
$creation = [];
$options = [];
$sayings = [];
$interesting = [];
$impact = [];
$about = [];
$museum = [];
foreach ($allData as $items) {
foreach ($items as $item) {
foreach ($item as $key => $value) {
if ($key == "authors_id") {
$aut[] = $em->getRepository(Authors::class)->findBy(['id' => $value]);
$author = $aut;
} elseif ($key == "new_creations_id") {
$crea[] = $em->getRepository(LastCreations::class)->findBy(['id' => $value]);
$creation = $crea;
} elseif ($key == "new_options_id") {
$op[] = $em->getRepository(NewOptionAuthors::class)->findBy(['id' => $value]);
$options = $op;
} elseif ($key == "new_sayings_id") {
$sa[] = $em->getRepository(Sayings::class)->findBy(['id' => $value]);
$sayings = $sa;
} elseif ($key == "new_interesting_id") {
$in[] = $em->getRepository(Interesting::class)->findBy(['id' => $value]);
$interesting = $in;
} elseif ($key == "new_impact_id") {
$im[] = $em->getRepository(NewImpact::class)->findBy(['id' => $value]);
$impact = $im;
} elseif ($key == "new_about_id") {
$ab[] = $em->getRepository(AboutHim::class)->findBy(['id' => $value]);
$about = $ab;
} elseif ($key == "new_museum_id") {
$muse[] = $em->getRepository(Museum::class)->findBy(['id' => $value]);
$museum = $muse;
}
}
}
}
$page = $em->getRepository(Page::class)->find(14);
return $this->render('parts/search.html.twig', [
'author' => $author,
'creations' => $creation,
'options' => $options,
'sayings' => $sayings,
'interesting' => $interesting,
'impact' => $impact,
'about' => $about,
'museum' => $museum,
'page' => $page,
]);
}
/**
* @Route("/get_creation", name="get_creation")
*/
public function getCreation(Request $request)
{
$em = $this->getDoctrine()->getManager();
if ($request->get('item')) {
$title = $request->get('item')["id"];
$slug = $request->get('item')["slug"];
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$creat = $em->getRepository(LastCreations::class)->createQueryBuilder('n')
->where('n.authors = :author_id')
->setParameter('author_id', $authors->getId())
->getQuery()
->getArrayResult();
$newcreations = $em->getRepository(LastCreations::class)->createQueryBuilder('c')
->where('c.authors = :author_id')
->andWhere('c.title=:tit')
->setParameter('author_id', $authors->getId())
->setParameter('tit', $title)
->getQuery()
->getArrayResult();
$newArr = [];
foreach ($newcreations as $item) {
}
}
return new JsonResponse($item['title']);
}
/**
* @Route("/creations/{slug}", name="page_creations")
*/
public function creations($slug)
{
$em = $this->getDoctrine()->getManager();
$comments = $em->getRepository(Comments::class)->findAll();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$creations = $em->getRepository(Creations::class)->createQueryBuilder('c')
->where('c.authors = :author_id')
->setParameter('author_id', $authors->getId())
->getQuery()
->getArrayResult();
$newcreations = $em->getRepository(NewCreations::class)->createQueryBuilder('c')
->where('c.authors = :author_id')
->setParameter('author_id', $authors->getId())
->getQuery()
->getArrayResult();
$lastcreations = $em->getRepository(LastCreations::class)->createQueryBuilder('c')
->where('c.authors = :author_id')
->setParameter('author_id', $authors->getId())
->getQuery()
->getArrayResult();
$page = $em->getRepository(Page::class)->find(7);
return $this->render('page/creations.html.twig', [
'newcreations' => $newcreations,
'lastcreations' => $lastcreations,
'comments' => $comments,
'item' => $authors,
'page' => $page,
// 'creations' => count($creations) ? $creations[0] : [],
]);
}
/**
* @Route("/sayings/{slug}", name="page_sayings")
*/
public function sayings($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$sayings = $em->getRepository(Sayings::class)->findOneBy(['authors' => $authors]);
$comments = $em->getRepository(Comments::class);
$newData = [];
$page = $em->getRepository(Page::class)->find(8);
return $this->render('page/sayings.html.twig', [
'sayings' => $sayings,
'item' => $authors,
'page' => $page,
]);
}
/**
* @Route("/interesting/{slug}", name="page_interesting")
*/
public function interesting($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$interesting = $em->getRepository(Interesting::class)->findOneBy(['authors' => $authors]);
$page = $em->getRepository(Page::class)->find(9);
return $this->render('page/interesting.html.twig', [
'item' => $authors,
'interesting' => $interesting,
'page' => $page,
]);
}
/**
* @Route("/about_him/{slug}", name="page_about_him")
*/
public function about_him($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$aboutHim = $em->getRepository(AboutHim::class)->findOneBy(['authors' => $authors]);
$comments = $em->getRepository(Comments::class);
$newData = [];
$page = $em->getRepository(Page::class)->find(11);
return $this->render('page/about_him.html.twig', [
'item' => $authors,
'aboutHim' => $aboutHim,
'comments' => $newData,
'page' => $page,
]);
}
/**
* @Route("/impact/{slug}", name="page_impact")
*/
public function impact($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$impact = $em->getRepository(Impact::class)->findOneBy(['authors' => $authors]);
$comments = $em->getRepository(Comments::class);
$newImpact = $em->getRepository(NewImpact::class)->findOneBy(['authors' => $authors]);
if (isset($newImpact)) {
$new = $newImpact->getCollection();
} else {
$new = $newImpact;
}
$page = $em->getRepository(Page::class)->find(10);
return $this->render('page/impact.html.twig', [
'item' => $authors,
'impact' => $impact,
'newImpact' => $new,
'page' => $page,
]);
}
/**
* @Route("/museum/{slug}", name="page_museum")
*/
public function museum($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$museum = $em->getRepository(Museum::class)->findOneBy(['authors' => $authors]);
$page = $em->getRepository(Page::class)->find(12);
return $this->render('page/museum.html.twig', [
'item' => $authors,
'museum' => $museum,
'page' => $page,
]);
}
/**
* @Route("/about_museum/{slug}", name="page_about_museum")
*/
public function about_museum($slug)
{
$em = $this->getDoctrine()->getManager();
$authors = $em->getRepository(Authors::class)->findOneBy(['slug' => $slug]);
$aboutMuseum = $em->getRepository(AboutMuseum::class)->findOneBy(['authors' => $authors]);
return $this->render('page/about-museum.html.twig', [
'item' => $authors,
'aboutMuseum' => $aboutMuseum
]);
}
/**
* @Route("/discuss/{slug}", name="page_discuss")
*/
public function discuss($slug)
{
$em = $this->getDoctrine()->getManager();
$comment = $em->getRepository(Comments::class)->findOneBy(['id' => $slug]);
$discuss = $em->getRepository(Discuss::class)->findBy(['comments' => $slug], ['orderId' => 'DESC']);
$comments = $em->getRepository(Discuss::class)->CreateQueryBuilder('c')
->where('c.comments =:id')
->setParameter('id', $slug)
->getQuery()
->getArrayResult();
$page = $em->getRepository(Page::class)->find(13);
return $this->render('page/discuss.html.twig', [
'comment' => $comment,
'answer' => $comments,
'discuss' => $discuss,
'page' => $page,
]);
}
/**
* @Route("/basket", name="page_basket")
*/
public function basket()
{
$em = $this->getDoctrine()->getManager();
$page = $em->getRepository(Page::class)->find(4);
return $this->render('page/basket.html.twig', [
'page' => $page
]);
}
/**
* @Route("/notebooks", name="page_notebooks")
*/
public function notebooks()
{
$em = $this->getDoctrine()->getManager();
$homePage = $em->getRepository(HomePage::class)->findAll();
$notebooks = $em->getRepository(OurNotebooks::class)->findAll();
$page = $em->getRepository(Page::class)->find(3);
return $this->render('page/our_notebooks.html.twig', [
'homePage' => $homePage[0],
'notebooks' => $notebooks,
'page' => $page,
]);
}
}