<?php
namespace App\Controller;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Contracts\Translation\TranslatorInterface;
use App\Entity\Gallery3D;
use App\Entity\GalleryItem;
use App\Entity\User;
use App\Entity\Service;
use App\Entity\ServiceExample;
use Twig\Environment;
class Services3DController extends DefaultController
{
protected ManagerRegistry $doctrine;
protected TranslatorInterface $translator;
protected Environment $twig;
public function __construct(ManagerRegistry $doctrine,
TranslatorInterface $translator,
Environment $twig)
{
$this->doctrine = $doctrine;
$this->translator = $translator;
$this->twig = $twig;
}
/**
* @Route("/services3d", name="services3d")
*/
public function indexAction(Request $request)
{
/* we load session data */
parent::init($request);
$session = $request->getSession();
/* we load entity managers */
$em = $this->doctrine->getManager();
$dem = $this->doctrine->getManager('dynamic_em');
/* we load list of modules for 3D service */
$service = $em->getRepository(Service::class)->getService(5);
// we get demo user
$demoUser = $em->getRepository(User::class)->getUser(95);
$demoUserDirs = $this->getUserFolderPathsFromUserId($demoUser->getUserId());
$gallery3D = $dem->getRepository(Gallery3D::class)->getGallery3D(2);
// we get parent gallery items
$galleryItemCollection = null;
if(!empty($gallery3D->getGallery())) {
$galId = $gallery3D->getGallery()->getGalleryId();
$galleryItemCollection = $dem->getRepository(GalleryItem::class)->getGalleryItemList($galId);
}
// we get 3D template
if(!empty($gallery3D->getTemplate3DPath())) {
$template3D = "gallery3D/".$gallery3D->getTemplate3DPath();
} else {
$template3D = "gallery3D/gallery3D.html.php";
}
//adds php functions to twig environment
$this->twig->addFunction(new \Twig\TwigFunction('deg2rad', 'deg2rad'));
$this->twig->addFunction(new \Twig\TwigFunction('sin', 'sin'));
$this->twig->addFunction(new \Twig\TwigFunction('imagecreatefromstring', 'imagecreatefromstring'));
$this->twig->addFunction(new \Twig\TwigFunction('file_get_contents', 'file_get_contents'));
$this->twig->addFunction(new \Twig\TwigFunction('ImageSX', 'ImageSX'));
$this->twig->addFunction(new \Twig\TwigFunction('ImageSY', 'ImageSY'));
/* we load examples */
$exampleCollection = $em->getRepository(ServiceExample::class)->getServiceExampleListByService(5, 3);
shuffle($exampleCollection);
//print('<br>template3D: '.$template3D);
/* we render data */
return $this->render('services3d.html.twig',
array('headerData' => $this -> getPageHeader($request),
'moduleList' => $service->getModules(),
'exampleCollection' => $exampleCollection,
'gallery3D' => $gallery3D,
'galleryItemCollection' => $galleryItemCollection,
'template3D' => $template3D,
'templateInline' => true,
'user' => $demoUser,
'userDirs' => $demoUserDirs,
'service' => $service,
)
);
}
/**
* @Route("/services3dAdmin", name="services3dAdmin")
*/
public function services3dAdminAction(Request $request)
{
/* we load session data */
parent::init($request);
$session = $request->getSession();
// we check if any user is logged in
if(!$this->isLoggedUser($request)) {
return $this->redirectToRoute('login');
}
/* we load entity managers */
$em = $this->doctrine->getManager();
$dem = $this->doctrine->getManager('dynamic_em');
/* we get current user */
$currentUserId = $session->get('user')->getUserId();
$user = $em->getRepository(User::class)->getUser($currentUserId);
/* we load service to get list of modules */
$service = $em->getRepository(Service::class)->getService(5);
if(!empty($request->query->get('REST'))) {
return new JsonResponse(array('headerData' => $this -> getPageHeader($request),
'menu' => $this -> adminMenu($request),
));
} else {
/* we render template */
return $this->render('services3dAdmin.html.twig',
array('headerData' => $this -> getPageHeader($request),
'moduleList' => $service->getModules(),
'userModuleList' => $user->getModules(),
'menu' => $this -> adminMenu($request),
'mainMenu' => $this -> adminMainMenu($request),
'user' => $user,
)
);
}
}
/**
* @Route("/example3d", name="example3d")
*/
public function example3dAction(Request $request)
{
/* we load session data */
parent::init($request);
$session = $request->getSession();
/* we load entity managers */
$em = $this->doctrine->getManager();
if(!empty($request->query->get('eid'))) {
//print('<br>qqw read eid'.$request->query->get('eid'));
/* we load service to get list of modules */
$example = $em->getRepository(ServiceExample::class)->getServiceExample($request->query->get('eid'));
}
/* we render data */
return $this->render('example3d.html.php',
array('headerData' => $this -> getPageHeader($request),
'example' => $example,
)
);
}
public function adminMenu(Request $request)
{
$menuItems = array(0 => array('link' => 'homeuser', 'langKey' => 'user.admin', 'routeName' => 'homeuser'),
1 => array('link' => 'services3dAdmin', 'langKey' => 'service.services3d', 'routeName' => 'services3dAdmin'),
);
return $menuItems;
}
}