<?php
namespace App\Controller;
use App\Services\RequestService;
use App\Services\TokenGeneratorService;
use MembersBundle\Adapter\User\UserInterface;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject\MembersUser;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use MembersBundle\Security\RestrictionUri;
use Pimcore\Model\DataObject\LocationSource;
use Pimcore\Model\WebsiteSetting;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class DefaultController extends FrontendController
{
/**
* @param Request $request
* @return Response
*/
public function defaultAction(Request $request, RestrictionUri $restrictionUri): Response
{
$user = $this->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException('This user does not have access to this section.');
}
$member = MembersUser::getById($user->getId());
if ($member instanceof MembersUser) {
$documents = [];
foreach ($member->getDocuments() as $k => $document) {
if ($document instanceof Asset) {
$download = \Pimcore\Model\Asset::getById($document->getId());
$documents[$k]['name'] = $document->getFilename();
$documents[$k]['link'] = $restrictionUri->generateAssetUrl($download);
}
}
}
return $this->render('default/default.html.twig', [
'documents' => $documents
]);
}
/**
* @param Request $request
* @return Response
*/
public function landingAction(Request $request): Response
{
return $this->render('landing/default.html.twig');
}
/**
* @param Request $request
* @return Response
*/
public function headerAction(Request $request): Response
{
return $this->render('includes/header.html.twig');
}
/**
* @param Request $request
* @return Response
*/
public function footerAction(Request $request): Response
{
return $this->render('includes/footer.html.twig');
}
/**
* @param Request $request
* @return Response
*/
public function requestAction(Request $request): Response
{
$requestObj = '';
$pdf = '';
if (null !== ($token = $request->query->get('token'))) {
$authKey = WebsiteSetting::getByName('rent_calculator_authorization')->getData();
$tokenService = new TokenGeneratorService();
$payload = $tokenService->verifyJwt($token, $authKey);
$locationSource = LocationSource::getByObjectKey($payload['source'], 1);
$requestObj = RequestService::getRequestObj($payload['id'], $payload['email'], $locationSource->getRequestEndpoint()->getHref());
$pdf = $locationSource->getRequestEndpoint()->getHref() . '/request-pdf?file='. $requestObj['file'] . '&key=' . $authKey;
}
return $this->render('request/default.html.twig',[
'request' => isset($requestObj['request']) && !empty($requestObj['request']) ? (array) $requestObj['request'] : null,
'pdf' => $pdf
]);
}
}